{"adoption": {"forks": 1915, "observed_at": "2026-08-28T04:09:12.127523+00:00", "stars": 5201}, "canonical_url": "https://ross.abutalabs.com/products/cf2dns", "card": {"archived": false, "artifact_type": "cli-tool", "description": "筛选出优质的Cloudflare IP，并使用域名服务商提供的API解析到不同线路以达到网站加速的效果,新增假墙防御方式", "domain": ["networking", "web-development", "self-hosted", "censorship-circumvention"], "enriched": true, "function": ["networking", "workflow-automation", "scheduling"], "health_score": 20, "homepage": null, "language": "Python", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["ddgth/cf2dns"], "name": "ddgth/cf2dns", "platform": ["python", "cli"], "pushed_at": "2025-01-06T06:16:13+00:00", "repo": "ddgth/cf2dns", "stars": 5201, "tags": ["cloudflare", "dns-management", "cdn-optimization", "ip-selection", "dnspod", "aliyun-dns", "github-actions", "ipv6", "linux", "docker"], "topics": [], "urls": [], "use_cases": ["optimize Cloudflare CDN IPs for my website", "automatically update DNS A records with best Cloudflare IPs", "speed up a site hosted behind Cloudflare in China", "set up scheduled Cloudflare IP selection with cron", "protect my site from fake wall (假墙) attacks", "run Cloudflare IP optimization via GitHub Actions or Docker"], "what_it_is": "A Python tool that selects high-quality Cloudflare IPs and updates DNS records via DNS provider APIs (DNSPod, Aliyun DNS, Huawei Cloud DNS) to route different lines for website acceleration. It supports IPv4/IPv6, Docker and GitHub Actions deployment, and includes protection against fake GFW wall attacks.", "when_to_avoid": ["you don't use Cloudflare or a supported DNS provider (DNSPod, Aliyun, Huawei Cloud)", "you need a fully open-source IP selection algorithm - the IP filtering itself is a closed API", "you are uncomfortable with the risk of Cloudflare account bans for IP selection usage"], "when_to_choose": ["you use Cloudflare as CDN with DNSPod or Aliyun DNS and want automatic line-based IP optimization", "you need scheduled updates of优选 Cloudflare IPs for IPv4 or IPv6", "you want a small self-hosted script deployable via cron, Docker, or GitHub Actions"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/cf2dns", "repo": "ddgth/cf2dns", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:12.127523+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:00:15.094518+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c658eefad9dd0ca75f9219daa53de6f7a6e01f8a1fc8c04e59a4675f9e4af566", "fetched_at": "2026-08-28T04:09:12.127523+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ddgth/cf2dns"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:12.127523+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:00:15.094518+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c658eefad9dd0ca75f9219daa53de6f7a6e01f8a1fc8c04e59a4675f9e4af566", "fetched_at": "2026-08-28T04:09:12.127523+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ddgth/cf2dns"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:00:15.094518+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c658eefad9dd0ca75f9219daa53de6f7a6e01f8a1fc8c04e59a4675f9e4af566", "fetched_at": "2026-08-28T04:09:12.127523+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ddgth/cf2dns"}], "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:09:12.127523+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:12.127523+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:12.127523+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:00:15.094518+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c658eefad9dd0ca75f9219daa53de6f7a6e01f8a1fc8c04e59a4675f9e4af566", "fetched_at": "2026-08-28T04:09:12.127523+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ddgth/cf2dns"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:12.127523+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:12.127523+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:00:15.094518+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c658eefad9dd0ca75f9219daa53de6f7a6e01f8a1fc8c04e59a4675f9e4af566", "fetched_at": "2026-08-28T04:09:12.127523+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ddgth/cf2dns"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:12.127523+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:12.127523+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:12.127523+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:00:15.094518+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c658eefad9dd0ca75f9219daa53de6f7a6e01f8a1fc8c04e59a4675f9e4af566", "fetched_at": "2026-08-28T04:09:12.127523+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ddgth/cf2dns"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:12.127523+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:12.127523+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:00:15.094518+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c658eefad9dd0ca75f9219daa53de6f7a6e01f8a1fc8c04e59a4675f9e4af566", "fetched_at": "2026-08-28T04:09:12.127523+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ddgth/cf2dns"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:00:15.094518+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c658eefad9dd0ca75f9219daa53de6f7a6e01f8a1fc8c04e59a4675f9e4af566", "fetched_at": "2026-08-28T04:09:12.127523+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ddgth/cf2dns"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:00:15.094518+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c658eefad9dd0ca75f9219daa53de6f7a6e01f8a1fc8c04e59a4675f9e4af566", "fetched_at": "2026-08-28T04:09:12.127523+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ddgth/cf2dns"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:00:15.094518+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c658eefad9dd0ca75f9219daa53de6f7a6e01f8a1fc8c04e59a4675f9e4af566", "fetched_at": "2026-08-28T04:09:12.127523+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ddgth/cf2dns"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2195, "days_push": 604, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}