核心原理
- PAC文件是一个JavaScript脚本(通常命名为
proxy.pac),其中包含函数FindProxyForURL(url, host),浏览器会根据该函数的返回值决定请求的代理方式。 - 示例规则:
if (shExpMatch(host, "*.google.com")) { return "PROXY 127.0.0.1:1080; DIRECT"; // 匹配域名走代理,否则直连 }
典型应用场景
- 分流策略:区分国内外流量,仅代理访问境外资源(如GitHub、YouTube),国内站点直连以提升速度。
- 多代理切换:根据访问目标自动选择不同代理服务器(如SSR/V2Ray节点)。
- 企业网络:内网访问走直连,外网通过公司代理。
与全局代理的区别
| 特性 | PAC | 全局代理 |
|---|---|---|
| 灵活性 | 按规则智能分流 | 所有流量强制经过代理 |
| 速度 | 国内站点直连,更快 | 所有请求均受代理延迟影响 |
| 隐私风险 | 仅代理必要流量,降低暴露风险 | 所有流量(包括国内)经过代理 |
生成与管理工具
- 生成工具:
- 在线生成器(如gfwlist2pac)
- 客户端内置(Shadowsocks/V2RayN的PAC功能)
- 规则列表:
- GFWList(社区维护的封锁域名列表)
- 用户自定义白名单(如
||cnnic.cn)
技术注意事项
- 性能影响:复杂的PAC规则可能增加浏览器解析时间(建议规则条目控制在千级以内)。
- 安全性:需确保PAC文件来源可信,恶意脚本可能泄露流量。
- 兼容性:部分应用(如非浏览器软件)可能不支持PAC,需依赖系统级代理设置。
现代替代方案
随着技术进步,部分工具已转向更高效的分流方式:
- 路由表分流(如
ipset + iptables) - 透明代理(TProxy/Redir)
- VPN分流(WireGuard的
AllowedIPs策略)
PAC作为传统方案仍被广泛使用,尤其在浏览器环境中,理解其原理有助于更灵活地配置科学上网工具,实际使用时,建议结合客户端日志验证分流是否生效。


