PAC(Proxy Auto-Config)不是简单的域名白名单,而是一段由客户端调用的JavaScript函数。浏览器把当前URL和主机名传给 FindProxyForURL(url, host),函数返回 DIRECT、PROXY host:port、SOCKS... 或多个备用项,决定这次请求直连还是通过哪个代理。
规则顺序非常重要:函数遇到第一个执行的 return 就结束。宽泛规则写在前面,后面的精确例外可能永远没有机会执行。
一个最小PAC示例
function FindProxyForURL(url, host) {
if (isPlainHostName(host)) {
return "DIRECT";
}
if (dnsDomainIs(host, ".example.com")) {
return "DIRECT";
}
return "PROXY proxy.example.net:8080; DIRECT";
}这个示例让无点的本地主机名和 example.com 子域直连,其他请求先尝试代理,代理失败后允许直连。示例地址仅用于说明,真实策略应由网络管理员评估。
DIRECT、PROXY和备用列表怎么读
| 返回值 | 含义 | 风险边界 |
|---|---|---|
DIRECT |
客户端直接连接目标 | 会使用本地出口,不经过代理审计 |
PROXY host:port |
使用指定HTTP代理 | 协议与认证必须匹配 |
SOCKS5 host:port |
在支持的客户端中使用SOCKS5 | DNS与UDP行为因实现而异 |
PROXY A; PROXY B; DIRECT |
按顺序尝试备用方案 | 允许DIRECT意味着代理故障时可能绕过 |
企业环境如果要求所有公网流量必须经过安全代理,不应随意在末尾添加DIRECT回退。否则节点故障时,流量可能直接出网,绕过组织控制。
为什么规则顺序会写错
例如先写“所有 .example.com 走代理”,后写“internal.example.com 直连”,前一条已经命中并返回,内部域名例外无效。应把更具体的例外放在更宽泛规则之前,并用测试表验证。
但“具体规则在前”不是唯一原则。还要考虑URL路径、端口、IP网段、本地主机、DNS解析和默认策略,PAC应保持短小、可读和可回滚。
host匹配的常见误区
dnsDomainIs(host, ".example.com")与根域example.com的匹配行为需要单独测试;- 字符串包含判断可能把
notexample.com错当目标域名; - host通常不包含协议、端口和路径,URL判断要使用传入的url;
- 国际化域名在底层可能使用Punycode,应确认客户端传入形式;
- IPv6字面量和内网短名称需要专门测试;
- 大小写和尾随点等边界不应凭感觉处理。
DNS函数为什么会让PAC变慢
dnsResolve、isInNet 等函数可能触发DNS查询。复杂PAC对每个请求反复解析,会增加延迟,离线或DNS故障时还可能阻塞。浏览器也可能对PAC求值和DNS结果做缓存。
能用主机名字符串判断时,不必无条件做DNS解析;需要网段判断时,应评估IPv4/IPv6、缓存和失败回退。
PAC文件为什么修改后不立即生效
- 浏览器或系统缓存了PAC脚本;
- PAC URL经过CDN或HTTP缓存,仍返回旧版本;
- 企业策略强制了另一条PAC URL;
- 文件语法错误,客户端回退到旧配置或直连;
- 访问PAC本身需要代理,形成启动依赖;
- 扩展或VPN覆盖了系统PAC选择。
为PAC响应设置合适的缓存和版本标识,发布后从实际客户端重新加载。不要把凭据写在PAC中,PAC内容可能被用户和中间缓存读取。
上线前准备三类以上测试
| 测试类型 | 示例目标 | 预期 |
|---|---|---|
| 明确直连 | 内网、localhost或批准域名 | DIRECT |
| 明确代理 | 普通公网业务域名 | 指定PROXY |
| 精确例外 | 宽泛域名下的特殊子域 | 验证顺序是否正确 |
| 未匹配默认 | 随机批准测试域名 | 符合默认安全策略 |
| 代理故障 | 受控停用测试节点 | 按设计切备用或阻断 |
| IPv4/IPv6 | 双栈目标 | 不因解析类型意外绕过 |
测试时通过浏览器网络日志、代理日志和自有服务器请求记录确认实际路径。IP查询可用IP111辅助,但同一页面走代理不代表所有域名都命中相同规则。
企业PAC需要哪些管理措施
配置应版本化、代码评审、语法测试和分阶段发布;记录负责人、变更原因、发布时间和回滚版本。PAC URL使用HTTPS并限制修改权限,避免未经授权的脚本改变全体用户流量。
受管设备上的PAC属于组织安全配置,用户不要自行绕过。需要其他代理和网络工具时,可从极跃圈网址导航选择。最终验收应基于逐条用例与实际命中日志,而不是只确认PAC文件能下载。






