{"adoption": {"forks": 782, "observed_at": "2026-08-28T04:11:38.419340+00:00", "stars": 25714}, "canonical_url": "https://ross.abutalabs.com/products/dns-blocklists", "card": {"archived": false, "artifact_type": "dataset", "description": "DNS-Blocklists: For a better internet - keep the internet clean!", "domain": ["security", "privacy", "networking", "self-hosted"], "enriched": true, "function": ["security", "privacy", "caching", "monitoring"], "health_score": 100, "homepage": null, "language": "Text", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["hagezi/dns-blocklists"], "name": "hagezi/dns-blocklists", "platform": ["self-hosted", "cross-platform"], "pushed_at": "2026-08-26T16:15:06+00:00", "repo": "hagezi/dns-blocklists", "stars": 25714, "tags": ["dns-blocklist", "adblock", "pi-hole", "adguard", "hosts-file", "threat-intelligence", "telemetry-blocking", "malware-blocking", "phishing-protection", "linux", "docker"], "topics": ["dns", "ads", "blacklist", "blocklist", "coins", "domains", "fake", "filterlist", "hosts", "malware", "metrics", "phishing", "scam", "telemetry", "threat-intelligence-feeds", "tracking", "adblock", "privacy", "pi-hole", "adguard"], "urls": [], "use_cases": ["block ads and trackers at the DNS level", "protect my network from malware and phishing domains", "set up pi-hole blocklists", "block telemetry from devices and apps", "stop DNS rebinding attacks", "block gambling or adult content on my network", "prevent DNS-over-HTTPS bypass on my router"], "what_it_is": "A collection of curated DNS blocklists for blocking ads, trackers, malware, phishing, scams, and other unwanted domains. Lists are provided in multiple formats and protection levels for use with Pi-hole, AdGuard, and other DNS-based filtering tools.", "when_to_avoid": ["you need content filtering inside a browser only, where an adblock extension is simpler", "you cannot tolerate any false positives, since aggressive tiers may block legitimate domains", "you need deep packet inspection or full traffic filtering rather than DNS-level blocking"], "when_to_choose": ["you run Pi-hole, AdGuard, or another DNS-based filter and want well-maintained, regularly updated blocklists", "you want network-wide ad, tracker, and malware blocking without per-device software", "you need tiered protection levels from light to aggressive filtering"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/dns-blocklists", "repo": "hagezi/dns-blocklists", "role": "main", "score": 88}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.419340+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:56:00.167100+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0b5d82c6759823b60bc513c498ee9e1ca1ff636df82fa644c317d50c19d02ad5", "fetched_at": "2026-08-28T04:11:38.419340+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hagezi/dns-blocklists"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.419340+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:56:00.167100+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0b5d82c6759823b60bc513c498ee9e1ca1ff636df82fa644c317d50c19d02ad5", "fetched_at": "2026-08-28T04:11:38.419340+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hagezi/dns-blocklists"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:56:00.167100+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0b5d82c6759823b60bc513c498ee9e1ca1ff636df82fa644c317d50c19d02ad5", "fetched_at": "2026-08-28T04:11:38.419340+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hagezi/dns-blocklists"}], "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:11:38.419340+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.419340+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.419340+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:56:00.167100+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0b5d82c6759823b60bc513c498ee9e1ca1ff636df82fa644c317d50c19d02ad5", "fetched_at": "2026-08-28T04:11:38.419340+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hagezi/dns-blocklists"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.419340+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.419340+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:56:00.167100+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0b5d82c6759823b60bc513c498ee9e1ca1ff636df82fa644c317d50c19d02ad5", "fetched_at": "2026-08-28T04:11:38.419340+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hagezi/dns-blocklists"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.419340+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.419340+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.419340+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:56:00.167100+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0b5d82c6759823b60bc513c498ee9e1ca1ff636df82fa644c317d50c19d02ad5", "fetched_at": "2026-08-28T04:11:38.419340+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hagezi/dns-blocklists"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.419340+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.419340+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:56:00.167100+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0b5d82c6759823b60bc513c498ee9e1ca1ff636df82fa644c317d50c19d02ad5", "fetched_at": "2026-08-28T04:11:38.419340+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hagezi/dns-blocklists"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:56:00.167100+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0b5d82c6759823b60bc513c498ee9e1ca1ff636df82fa644c317d50c19d02ad5", "fetched_at": "2026-08-28T04:11:38.419340+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hagezi/dns-blocklists"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:56:00.167100+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0b5d82c6759823b60bc513c498ee9e1ca1ff636df82fa644c317d50c19d02ad5", "fetched_at": "2026-08-28T04:11:38.419340+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hagezi/dns-blocklists"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:56:00.167100+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0b5d82c6759823b60bc513c498ee9e1ca1ff636df82fa644c317d50c19d02ad5", "fetched_at": "2026-08-28T04:11:38.419340+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hagezi/dns-blocklists"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 67}, "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": 1591, "days_push": 7, "days_rel": 7, "gap_med": null, "n_releases_24m": 1}, "score": 88, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}