PAC(Proxy Auto-Config,代理自动配置)是一种通过JavaScript脚本自动决定网络请求是否通过代理服务器访问的技术,常用于科学上网场景中优化流量分流。以下是关键点解析
ffaa147258网络加速器2026-06-2710
PAC文件原理 脚本逻辑:PAC文件包含一个JavaScript函数 FindProxyForURL(url, host),浏览器会根据该函数的返回结果(如 DIRECT、PROXY example.com:8080)决定请求的代理方式。 分流机制:通过规则匹配(域名、IP、关键词等),将国内外流量分开处理。if (shExpMatch(host,...
PAC文件原理
- 脚本逻辑:PAC文件包含一个JavaScript函数
FindProxyForURL(url, host),浏览器会根据该函数的返回结果(如DIRECT、PROXY example.com:8080)决定请求的代理方式。 - 分流机制:通过规则匹配(域名、IP、关键词等),将国内外流量分开处理。
if (shExpMatch(host, "*.google.com")) return "PROXY 代理服务器:端口"; else return "DIRECT";
科学上网中的应用
- 效率优化:仅代理访问被封锁的网站(如Google、YouTube),国内直连,减少代理服务器负载。
- 灵活更新:PAC文件可托管在服务器上,用户定期拉取最新规则,适应封锁变化。
对比其他方式
| 方式 | 配置复杂度 | 流量分流 | 灵活性 |
|---|---|---|---|
| 全局代理 | 低 | 无 | 低 |
| PAC | 中 | 有 | 高 |
| VPN分流路由 | 高 | 有 | 中 |
创建PAC示例
function FindProxyForURL(url, host) {
// 国内域名直连
if (isInNet(host, "10.0.0.0", "255.0.0.0") ||
shExpMatch(host, "*.cn")) return "DIRECT";
// 被墙域名走代理
const blocked = ["google.com", "youtube.com", "twitter.com"];
if (blocked.some(d => host.endsWith(d))) return "SOCKS5 127.0.0.1:1080";
// 默认直连
return "DIRECT";
}
注意事项
- 隐私风险:恶意PAC文件可能泄露浏览记录,需确保来源可信。
- 性能影响:复杂规则可能增加浏览器解析时间。
- 兼容性:部分浏览器(如移动端)可能不支持完整PAC功能。
PAC是技术中立的工具,合理使用可提升上网效率,但需遵守所在地法律法规,企业常将其用于内网访问优化,个人用户则多用于科学上网场景。

相关文章










