{"adoption": {"forks": 259, "observed_at": "2026-08-28T04:03:45.511966+00:00", "stars": 1145}, "canonical_url": "https://ross.abutalabs.com/products/dowsdns", "card": {"archived": false, "artifact_type": "service", "description": "快速翻跃中国防火墙", "domain": ["censorship-circumvention", "networking", "privacy", "security"], "enriched": true, "function": ["networking", "proxy", "security"], "health_score": 20, "homepage": null, "language": "Python", "license": null, "license_family": "other", "maturity": "abandoned", "member_repos": ["dowsnature/dowsDNS"], "name": "dowsnature/dowsDNS", "platform": ["windows", "python", "cross-platform"], "pushed_at": "2018-10-05T17:27:08+00:00", "repo": "dowsnature/dowsDNS", "stars": 1145, "tags": ["dns-server", "hosts-file", "ad-blocking", "edns-client-subnet", "gfw", "anti-censorship", "dnslib", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["bypass DNS poisoning in China", "resolve blocked domains via custom hosts", "run a small public DNS server", "filter ads through a hosts file", "share a DNS resolver across a LAN", "get CDN results near my location with edns-client-subnet"], "what_it_is": "A small Python DNS server that resolves domains via custom hosts files and wildcard records to bypass DNS poisoning by the Great Firewall of China, with ad filtering and EDNS client subnet support. It can run as a local DNS resolver or a small public DNS server on Windows, macOS, and Linux.", "when_to_avoid": ["you need a maintained project with security updates", "you need DNS-over-HTTPS or DNS-over-TLS encryption", "you need a production-grade public DNS server", "you don't use Python 2.7/3.4-3.6 era environments"], "when_to_choose": ["you need a lightweight local DNS resolver to circumvent DNS-based censorship", "you want hosts-based ad blocking at the DNS level", "you want a simple cross-platform Python DNS server with no heavy dependencies"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/dowsdns", "repo": "dowsnature/dowsDNS", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.511966+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:34:30.085881+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e0d4763beee02ef6a9b8453af1d40f1fab6caddb0358ac9151b2a7e3eca62a6", "fetched_at": "2026-08-28T04:03:45.511966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dowsnature/dowsDNS"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.511966+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:34:30.085881+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e0d4763beee02ef6a9b8453af1d40f1fab6caddb0358ac9151b2a7e3eca62a6", "fetched_at": "2026-08-28T04:03:45.511966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dowsnature/dowsDNS"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:34:30.085881+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e0d4763beee02ef6a9b8453af1d40f1fab6caddb0358ac9151b2a7e3eca62a6", "fetched_at": "2026-08-28T04:03:45.511966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dowsnature/dowsDNS"}], "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:45.511966+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.511966+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.511966+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:34:30.085881+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e0d4763beee02ef6a9b8453af1d40f1fab6caddb0358ac9151b2a7e3eca62a6", "fetched_at": "2026-08-28T04:03:45.511966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dowsnature/dowsDNS"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.511966+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.511966+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:34:30.085881+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e0d4763beee02ef6a9b8453af1d40f1fab6caddb0358ac9151b2a7e3eca62a6", "fetched_at": "2026-08-28T04:03:45.511966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dowsnature/dowsDNS"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.511966+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.511966+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.511966+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:34:30.085881+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e0d4763beee02ef6a9b8453af1d40f1fab6caddb0358ac9151b2a7e3eca62a6", "fetched_at": "2026-08-28T04:03:45.511966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dowsnature/dowsDNS"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.511966+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.511966+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:34:30.085881+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e0d4763beee02ef6a9b8453af1d40f1fab6caddb0358ac9151b2a7e3eca62a6", "fetched_at": "2026-08-28T04:03:45.511966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dowsnature/dowsDNS"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:34:30.085881+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e0d4763beee02ef6a9b8453af1d40f1fab6caddb0358ac9151b2a7e3eca62a6", "fetched_at": "2026-08-28T04:03:45.511966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dowsnature/dowsDNS"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:34:30.085881+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e0d4763beee02ef6a9b8453af1d40f1fab6caddb0358ac9151b2a7e3eca62a6", "fetched_at": "2026-08-28T04:03:45.511966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dowsnature/dowsDNS"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:34:30.085881+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e0d4763beee02ef6a9b8453af1d40f1fab6caddb0358ac9151b2a7e3eca62a6", "fetched_at": "2026-08-28T04:03:45.511966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dowsnature/dowsDNS"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "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": 3533, "days_push": 2889, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}