{"adoption": {"forks": 289, "observed_at": "2026-08-28T04:05:41.851835+00:00", "stars": 1831}, "canonical_url": "https://ross.abutalabs.com/products/qingscan", "card": {"archived": false, "artifact_type": "application", "description": "一个漏洞扫描器粘合剂,添加目标后30款工具自动调用；支持 web扫描、系统扫描、子域名收集、目录扫描、主机扫描、主机发现、组件识别、URL爬虫、XRAY扫描、AWVS自动扫描、POC批量验证，SSH批量测试、vulmap。", "domain": ["security", "penetration-testing", "web-development", "self-hosted", "developer-tools"], "enriched": true, "function": ["security", "vulnerability-scanning", "web-scraping", "search-engine", "monitoring", "self-hosted", "http-server"], "health_score": 78, "homepage": null, "language": "PHP", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["78778443/QingScan"], "name": "78778443/QingScan", "platform": ["self-hosted", "php"], "pushed_at": "2026-08-04T12:31:01+00:00", "repo": "78778443/QingScan", "stars": 1831, "tags": ["vulnerability-scanner", "pentesting", "asset-discovery", "subdomain-enumeration", "code-audit", "sql-injection", "fingerprinting", "weak-password-bruteforce", "thinkphp", "security-operations-platform", "linux", "web-server", "docker"], "topics": [], "urls": [], "use_cases": ["scan websites for vulnerabilities", "discover subdomains and open ports for a target", "audit source code for SQL injection and XSS", "manage asset inventory of hosts and domains", "run batch POC verification against targets", "track vulnerability remediation with tickets", "detect weak passwords and WAF presence"], "what_it_is": "QingScan is a self-hosted, open-source security operations platform that unifies vulnerability scanning, code auditing, asset inventory, and ticket-based remediation workflows. It includes built-in PHP-based scanning engines for web vulnerabilities, SQL injection, port and subdomain discovery, directory scanning, fingerprinting, and weak-password brute-forcing.", "when_to_avoid": ["you need a lightweight CLI-only scanner for quick one-off checks", "you require a permissively licensed tool for commercial use, since QingScan prohibits unauthorized commercial use and has no standard open-source license", "you need official support for non-Ubuntu platforms without manual setup"], "when_to_choose": ["you want an all-in-one self-hosted vulnerability management platform with a web UI", "you need asset discovery plus scanning plus ticketing in one tool", "you prefer a zero-external-dependency scanner that installs and runs out of the box on Linux"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/qingscan", "repo": "78778443/QingScan", "role": "main", "score": 66}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.851835+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:19:10.338325+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef795bbcf1f2e46b221062e4b867923cd04e8fe86098023f57eaea9ad348de61", "fetched_at": "2026-08-28T04:05:41.851835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/78778443/QingScan"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.851835+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:19:10.338325+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef795bbcf1f2e46b221062e4b867923cd04e8fe86098023f57eaea9ad348de61", "fetched_at": "2026-08-28T04:05:41.851835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/78778443/QingScan"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:19:10.338325+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef795bbcf1f2e46b221062e4b867923cd04e8fe86098023f57eaea9ad348de61", "fetched_at": "2026-08-28T04:05:41.851835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/78778443/QingScan"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.851835+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.851835+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.851835+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:19:10.338325+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef795bbcf1f2e46b221062e4b867923cd04e8fe86098023f57eaea9ad348de61", "fetched_at": "2026-08-28T04:05:41.851835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/78778443/QingScan"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.851835+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.851835+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:19:10.338325+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef795bbcf1f2e46b221062e4b867923cd04e8fe86098023f57eaea9ad348de61", "fetched_at": "2026-08-28T04:05:41.851835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/78778443/QingScan"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.851835+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.851835+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.851835+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:19:10.338325+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef795bbcf1f2e46b221062e4b867923cd04e8fe86098023f57eaea9ad348de61", "fetched_at": "2026-08-28T04:05:41.851835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/78778443/QingScan"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.851835+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.851835+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:19:10.338325+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef795bbcf1f2e46b221062e4b867923cd04e8fe86098023f57eaea9ad348de61", "fetched_at": "2026-08-28T04:05:41.851835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/78778443/QingScan"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:19:10.338325+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef795bbcf1f2e46b221062e4b867923cd04e8fe86098023f57eaea9ad348de61", "fetched_at": "2026-08-28T04:05:41.851835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/78778443/QingScan"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:19:10.338325+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef795bbcf1f2e46b221062e4b867923cd04e8fe86098023f57eaea9ad348de61", "fetched_at": "2026-08-28T04:05:41.851835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/78778443/QingScan"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:19:10.338325+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef795bbcf1f2e46b221062e4b867923cd04e8fe86098023f57eaea9ad348de61", "fetched_at": "2026-08-28T04:05:41.851835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/78778443/QingScan"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1731, "days_push": 29, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 66, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}