{"adoption": {"forks": 69, "observed_at": "2026-08-28T04:03:23.335353+00:00", "stars": 1052}, "canonical_url": "https://ross.abutalabs.com/products/clash-ip-checker", "card": {"archived": false, "artifact_type": "cli-tool", "description": "🤖Automated node IP risk checking and tagging tool for Clash (适用于 Clash 代理的自动化节点 IP 风险检查并重命名标记工具)", "domain": ["networking", "privacy", "developer-tools"], "enriched": true, "function": ["workflow-automation", "web-scraping", "developer-tools"], "health_score": 76, "homepage": "https://tombcato.github.io/clash-ip-checker/", "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["tombcato/clash-ip-checker"], "name": "tombcato/clash-ip-checker", "platform": ["python", "cross-platform", "cli", "self-hosted"], "pushed_at": "2026-01-30T16:38:01+00:00", "repo": "tombcato/clash-ip-checker", "stars": 1052, "tags": ["clash", "proxy", "ip-purity", "node-checking", "playwright", "proxy-config", "risk-assessment", "automation", "docker"], "topics": ["automation", "clash", "clash-verge", "iprisk", "playwright", "python", "ippure"], "urls": [], "use_cases": ["check if my clash proxy nodes are clean residential IPs", "automatically tag clash nodes with IP risk scores", "find which proxy nodes are datacenter IPs before registering accounts", "rename clash subscription nodes with purity and bot ratio metrics", "batch test proxy node IP quality without manual switching", "detect shared or blacklisted IPs in my clash config", "run IP purity checks on a NAS via docker for clash nodes"], "what_it_is": "A Python automation tool for Clash proxy users that iterates through proxy nodes, checks each node's IP purity, bot ratio, and IP type via IPPure or Ping0, and rewrites the Clash config with risk tags appended to node names. It offers a Web UI, fast API mode, fallback between detection sources, and Docker deployment.", "when_to_avoid": ["you use a proxy client other than Clash or its compatible cores", "you need a one-off manual IP lookup rather than bulk node checking", "you cannot run Python or Docker in your environment"], "when_to_choose": ["you use Clash or a compatible core and want automated, hands-off node IP quality auditing", "you want results written directly back into a usable Clash config with visual risk tags", "you prefer a self-hosted, open-source tool that keeps subscription data local"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/clash-ip-checker", "repo": "tombcato/clash-ip-checker", "role": "main", "score": 44}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.335353+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:59:46.158606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac493e7060fb8d360bc4f4edf4cba2d939f143112de2f6caafe329a9f1f30d83", "fetched_at": "2026-08-28T04:03:23.335353+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tombcato/clash-ip-checker"}, {"content_hash": "83efb2d27f756fbc8e2ea324e567c08fa9c0acb68f06e865e4e9fdb845d99de1", "fetched_at": "2026-08-29T13:01:27.790042+00:00", "kind": "homepage", "missing": false, "url": "https://tombcato.github.io/clash-ip-checker/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.335353+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:59:46.158606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac493e7060fb8d360bc4f4edf4cba2d939f143112de2f6caafe329a9f1f30d83", "fetched_at": "2026-08-28T04:03:23.335353+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tombcato/clash-ip-checker"}, {"content_hash": "83efb2d27f756fbc8e2ea324e567c08fa9c0acb68f06e865e4e9fdb845d99de1", "fetched_at": "2026-08-29T13:01:27.790042+00:00", "kind": "homepage", "missing": false, "url": "https://tombcato.github.io/clash-ip-checker/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:59:46.158606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac493e7060fb8d360bc4f4edf4cba2d939f143112de2f6caafe329a9f1f30d83", "fetched_at": "2026-08-28T04:03:23.335353+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tombcato/clash-ip-checker"}, {"content_hash": "83efb2d27f756fbc8e2ea324e567c08fa9c0acb68f06e865e4e9fdb845d99de1", "fetched_at": "2026-08-29T13:01:27.790042+00:00", "kind": "homepage", "missing": false, "url": "https://tombcato.github.io/clash-ip-checker/"}], "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:03:23.335353+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.335353+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.335353+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:59:46.158606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac493e7060fb8d360bc4f4edf4cba2d939f143112de2f6caafe329a9f1f30d83", "fetched_at": "2026-08-28T04:03:23.335353+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tombcato/clash-ip-checker"}, {"content_hash": "83efb2d27f756fbc8e2ea324e567c08fa9c0acb68f06e865e4e9fdb845d99de1", "fetched_at": "2026-08-29T13:01:27.790042+00:00", "kind": "homepage", "missing": false, "url": "https://tombcato.github.io/clash-ip-checker/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.335353+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.335353+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:59:46.158606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac493e7060fb8d360bc4f4edf4cba2d939f143112de2f6caafe329a9f1f30d83", "fetched_at": "2026-08-28T04:03:23.335353+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tombcato/clash-ip-checker"}, {"content_hash": "83efb2d27f756fbc8e2ea324e567c08fa9c0acb68f06e865e4e9fdb845d99de1", "fetched_at": "2026-08-29T13:01:27.790042+00:00", "kind": "homepage", "missing": false, "url": "https://tombcato.github.io/clash-ip-checker/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.335353+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.335353+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.335353+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:59:46.158606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac493e7060fb8d360bc4f4edf4cba2d939f143112de2f6caafe329a9f1f30d83", "fetched_at": "2026-08-28T04:03:23.335353+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tombcato/clash-ip-checker"}, {"content_hash": "83efb2d27f756fbc8e2ea324e567c08fa9c0acb68f06e865e4e9fdb845d99de1", "fetched_at": "2026-08-29T13:01:27.790042+00:00", "kind": "homepage", "missing": false, "url": "https://tombcato.github.io/clash-ip-checker/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.335353+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.335353+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:59:46.158606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac493e7060fb8d360bc4f4edf4cba2d939f143112de2f6caafe329a9f1f30d83", "fetched_at": "2026-08-28T04:03:23.335353+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tombcato/clash-ip-checker"}, {"content_hash": "83efb2d27f756fbc8e2ea324e567c08fa9c0acb68f06e865e4e9fdb845d99de1", "fetched_at": "2026-08-29T13:01:27.790042+00:00", "kind": "homepage", "missing": false, "url": "https://tombcato.github.io/clash-ip-checker/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:59:46.158606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac493e7060fb8d360bc4f4edf4cba2d939f143112de2f6caafe329a9f1f30d83", "fetched_at": "2026-08-28T04:03:23.335353+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tombcato/clash-ip-checker"}, {"content_hash": "83efb2d27f756fbc8e2ea324e567c08fa9c0acb68f06e865e4e9fdb845d99de1", "fetched_at": "2026-08-29T13:01:27.790042+00:00", "kind": "homepage", "missing": false, "url": "https://tombcato.github.io/clash-ip-checker/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:59:46.158606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac493e7060fb8d360bc4f4edf4cba2d939f143112de2f6caafe329a9f1f30d83", "fetched_at": "2026-08-28T04:03:23.335353+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tombcato/clash-ip-checker"}, {"content_hash": "83efb2d27f756fbc8e2ea324e567c08fa9c0acb68f06e865e4e9fdb845d99de1", "fetched_at": "2026-08-29T13:01:27.790042+00:00", "kind": "homepage", "missing": false, "url": "https://tombcato.github.io/clash-ip-checker/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:59:46.158606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac493e7060fb8d360bc4f4edf4cba2d939f143112de2f6caafe329a9f1f30d83", "fetched_at": "2026-08-28T04:03:23.335353+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tombcato/clash-ip-checker"}, {"content_hash": "83efb2d27f756fbc8e2ea324e567c08fa9c0acb68f06e865e4e9fdb845d99de1", "fetched_at": "2026-08-29T13:01:27.790042+00:00", "kind": "homepage", "missing": false, "url": "https://tombcato.github.io/clash-ip-checker/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 65, "longevity": 18, "rhythm": 33}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 264, "days_push": 215, "days_rel": 235, "gap_med": null, "n_releases_24m": 1}, "score": 44, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}