{"id":17503184,"url":"https://github.com/zhiyi7/gfw-pac","last_synced_at":"2026-05-28T03:01:09.057Z","repository":{"id":30303138,"uuid":"33854854","full_name":"zhiyi7/gfw-pac","owner":"zhiyi7","description":"科学上网 PAC 成品文件以及生成器。可自定义代理域名和直连域名。不在自定义名单里的域名再按IP匹配，CNIP走直连，其他走代理，支持IPv6","archived":false,"fork":false,"pushed_at":"2026-05-21T01:17:28.000Z","size":4488,"stargazers_count":1200,"open_issues_count":2,"forks_count":328,"subscribers_count":30,"default_branch":"master","last_synced_at":"2026-05-21T07:52:34.732Z","etag":null,"topics":["clash","clash-meta","cnip","geoip","gfw","hysteria","ipv6","pac","proxy","shadowrocket","surge","trojan","v2ray","vless","xray"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zhiyi7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-04-13T07:46:16.000Z","updated_at":"2026-05-21T01:17:23.000Z","dependencies_parsed_at":"2024-04-13T17:39:57.290Z","dependency_job_id":"16915a2b-ab8c-45fc-a8ab-eca9ec8cf54c","html_url":"https://github.com/zhiyi7/gfw-pac","commit_stats":{"total_commits":104,"total_committers":6,"mean_commits":"17.333333333333332","dds":0.2692307692307693,"last_synced_commit":"03998c2db00357a24b1e52ffe5e10bfdab1c73f6"},"previous_names":[],"tags_count":99,"template":false,"template_full_name":null,"purl":"pkg:github/zhiyi7/gfw-pac","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhiyi7%2Fgfw-pac","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhiyi7%2Fgfw-pac/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhiyi7%2Fgfw-pac/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhiyi7%2Fgfw-pac/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhiyi7","download_url":"https://codeload.github.com/zhiyi7/gfw-pac/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhiyi7%2Fgfw-pac/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33592074,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clash","clash-meta","cnip","geoip","gfw","hysteria","ipv6","pac","proxy","shadowrocket","surge","trojan","v2ray","vless","xray"],"created_at":"2024-10-19T22:14:26.929Z","updated_at":"2026-05-28T03:01:09.038Z","avatar_url":"https://github.com/zhiyi7.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# gfw-pac\n\n科学上网 PAC 文件以及生成器。通过自定义域名和 CNIP 地址生成 PAC(Proxy auto-config) 文件。对存在于自定义域名和解析出的IP不是CNIP的域名使用代理，支持IPv6。\n\n**此仓库每周四自动通过 GitHub Action 从 `Loyalsoldier/geoip` 同步数据并更新 `gfw.pac` 文件**\n\n## 特性\n* 开箱即用，直接可用的 `gfw.pac` 包含了常用的直连域名和代理域名以及国内IPv4/IPv6地址段\n* IP规则前置：若域名解析出的 IP 地址属于国内，返回直连，流量不经过代理程序\n* 速度快：优先按域名匹配，高频访问域名节省解析时间。IP段匹配使用Radix Tree，时间复杂度仅为O(m) _m\u003c=32(IPv4) 或者 m\u003c=128(IPv6)_\n* 不误伤：仅添加非常少的高频域名，减少流量走向错误的概率。\n* 支持 IPv6，不再需要为了IP规则而关闭IPv6或者AAAA解析，可正常开启IPv6，享受v6带来的各种便利。\n* 纯 IP 地址能正确处理，使用DoH的APP可完全正常工作。\n* 支持 iOS/MacOS/Windows/Android、Chrome/Edge/Firefox。生成的 pac 文件体积小，脚本全部使用ES5，大多数现代系统可正常执行。\n* 可自定义需要代理的域名\n* 可自定义直连的域名\n* 可自定义直连的 TLD 域名，例如 .test\n\n## 用法\n\n1. （**推荐**）下载并编辑 `gfw.pac` 的第一行换成自己的代理服务器直接使用。\n2. 按下面说明手工运行 `gfw-pac.py` 生成自己的 pac 文件。此种方法可自定义域名流向，更灵活。但现在大多数客户端都可以定义域名匹配规则，特殊域名通过客户端定制即可。\n\n## gfw-pac.py 使用说明\n\n    usage: gfw-pac.py -f 输出的PAC文件名 -p 代理服务器 [-h]\n                      [--proxy-domains 自定义使用代理域名的文件]\n                      [--direct-domains 自定义直连域名域名的文件]\n                      [--localtld-domains 本地TLD文件]\n                      [--ip-file 从 Loyalsoldier/geoip/blob/release 中下载的 text/cn.txt 文件]\n\n参数说明：\n\n    -h 显示帮助\n    -f (必须)输出的 pac 文件\n    -p (必须)指定代理服务器，例如 PROXY 192.168.1.1:3128\n    --proxy-domains 自定义使用代理的域名文件，文件里每行一个域名\n    --direct-domains 自定义直连的域名文件，文件里每行一个域名\n    --localtld-domains 自定义直连的顶级域，文件里每行一个域名，必须带前导圆点（例如 .test）\n    --ip-file 从 Loyalsoldier/geoip release 中下载的 text/cn.txt 文件\n\n举例：\n\n    ./gfw-pac.py -f gfw.pac \\\n                 -p \"PROXY 192.168.1.200:3128; DIRECT\" \\\n                 --proxy-domains=proxy-domains.txt \\\n                 --direct-domains=direct-domains.txt \\\n                 --localtld-domains=local-tlds.txt \\\n                 --ip-file=cidrs-cn.txt\n\n## 代理工具普遍支持配置路由规则，为什么还要用 pac 文件？\n\n现代系统（MacOS/iOS/Windows）底层网络框架都会自动执行pac策略，使得大多数应用的http请求能够使用代理，而不仅仅是供浏览器使用。如果依赖于代理工具的路由规则，所有流量都进入代理程序，即使命中代理的直连规则，网络流量也要经过代理程序转发，性能会受影响。而先由网络框架通过 pac 文件决定用代理还是直连后，直连的流量不再经过代理程序，性能更好。当前所有流行代理前端几乎都内置了 pac 文件，当选择代理前端提供的“pac模式”的时候，代理前端会将系统代理脚步设置为它自动生成的 pac 文件。\n\n## 跟代理工具提供的 pac 文件有什么不一样？\n\n维护 pac 文件并不是代理工具的优先工作。一些代理工具提供的 pac 文件在不断融合的过程中包含了广告过滤、隐私保护等太多内容，以及体积庞大到无人可维护的域名列表，年久失修导致非常容易漏掉或者误伤。另一个极端则是仅有非常少的规则，大多数流量还是进入了客户端，甚至都不支持IPv6。而这个 pac 文件仅添加访问频率最高的域名，可以明确知道哪些域名直连、哪些域名代理，域名列表没有的再通过 IP 地址段匹配确认，可以保证99%以上的国内流量不进入代理程序。\n\n## 技巧\n\n* 自行解决 DNS 污染问题。\n* 经常来下载包含最新数据的 pac 文件。\n* 代理工具最好也配置 GEOIP/GEOSITE 等路由规则（及时更新数据的前提下）。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhiyi7%2Fgfw-pac","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhiyi7%2Fgfw-pac","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhiyi7%2Fgfw-pac/lists"}