{"adoption": {"forks": 616, "observed_at": "2026-08-28T04:07:43.583571+00:00", "stars": 3101}, "canonical_url": "https://ross.abutalabs.com/products/chnroutes", "card": {"archived": false, "artifact_type": "cli-tool", "description": "scripts help chinese netizen, who uses vpn to combat censorship, by modifying the route table so as routing only the censored ip to the vpn", "domain": ["privacy", "censorship-circumvention", "networking"], "enriched": true, "function": ["networking", "vpn", "cli", "developer-tools"], "health_score": 20, "homepage": null, "language": "Python", "license": null, "license_family": "other", "maturity": "abandoned", "member_repos": ["fivesheep/chnroutes"], "name": "fivesheep/chnroutes", "platform": ["windows", "python", "cli"], "pushed_at": "2018-09-06T08:02:57+00:00", "repo": "fivesheep/chnroutes", "stars": 3101, "tags": ["chnroutes", "split-tunneling", "route-table", "openvpn", "pptp", "apnic", "great-firewall", "router-firmware", "command-line", "linux", "macos", "android"], "topics": [], "urls": [], "use_cases": ["split VPN traffic so only blocked sites go through the tunnel", "speed up access to Chinese websites while using a VPN", "generate route scripts for OpenVPN from APNIC IP lists", "set up selective routing on a router for the whole LAN", "reduce VPN bandwidth usage by bypassing domestic traffic", "configure PPTP VPN routing on OS X, Linux, or Windows"], "what_it_is": "chnroutes is a set of Python scripts that generate route table commands from the APNIC delegated list, so VPN users in China can route only censored (foreign) IPs through the VPN while accessing domestic Chinese IPs directly. It supports OpenVPN, PPTP, and third-party router firmware like OpenWRT, DD-WRT, and Tomato.", "when_to_avoid": ["you need a maintained tool - the project has had no releases since 2018 and IP lists have grown far larger", "your VPN client or platform doesn't support custom route or up/down scripts", "you want a modern proxy-based solution (e.g. rule-based proxies) instead of route-table manipulation", "adding thousands of routes is too slow on your device, such as low-end Android"], "when_to_choose": ["you use a VPN as default gateway in China and want domestic traffic to bypass it", "you run OpenVPN or PPTP and can execute generated route scripts", "you want whole-network split tunneling via an OpenWRT/DD-WRT/Tomato router"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/chnroutes", "repo": "fivesheep/chnroutes", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:43.583571+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:46:21.192098+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99659255fced7736167f2ac7d69e94e4334d6fed59ba34286ee9e045644f7478", "fetched_at": "2026-08-28T04:07:43.583571+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fivesheep/chnroutes"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:43.583571+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:46:21.192098+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99659255fced7736167f2ac7d69e94e4334d6fed59ba34286ee9e045644f7478", "fetched_at": "2026-08-28T04:07:43.583571+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fivesheep/chnroutes"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:46:21.192098+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99659255fced7736167f2ac7d69e94e4334d6fed59ba34286ee9e045644f7478", "fetched_at": "2026-08-28T04:07:43.583571+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fivesheep/chnroutes"}], "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:07:43.583571+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:43.583571+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:43.583571+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:46:21.192098+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99659255fced7736167f2ac7d69e94e4334d6fed59ba34286ee9e045644f7478", "fetched_at": "2026-08-28T04:07:43.583571+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fivesheep/chnroutes"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:43.583571+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:43.583571+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:46:21.192098+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99659255fced7736167f2ac7d69e94e4334d6fed59ba34286ee9e045644f7478", "fetched_at": "2026-08-28T04:07:43.583571+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fivesheep/chnroutes"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:43.583571+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:43.583571+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:43.583571+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:46:21.192098+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99659255fced7736167f2ac7d69e94e4334d6fed59ba34286ee9e045644f7478", "fetched_at": "2026-08-28T04:07:43.583571+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fivesheep/chnroutes"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:43.583571+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:43.583571+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:46:21.192098+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99659255fced7736167f2ac7d69e94e4334d6fed59ba34286ee9e045644f7478", "fetched_at": "2026-08-28T04:07:43.583571+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fivesheep/chnroutes"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:46:21.192098+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99659255fced7736167f2ac7d69e94e4334d6fed59ba34286ee9e045644f7478", "fetched_at": "2026-08-28T04:07:43.583571+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fivesheep/chnroutes"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:46:21.192098+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99659255fced7736167f2ac7d69e94e4334d6fed59ba34286ee9e045644f7478", "fetched_at": "2026-08-28T04:07:43.583571+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fivesheep/chnroutes"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:46:21.192098+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "99659255fced7736167f2ac7d69e94e4334d6fed59ba34286ee9e045644f7478", "fetched_at": "2026-08-28T04:07:43.583571+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fivesheep/chnroutes"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5144, "days_push": 2918, "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}}