PAC 文件如何选择代理
代理工具入门名词编辑部 · 更新于 2026-10-18
PAC 文件是一个 JavaScript 函数 FindProxyForURL(url, host),决定浏览器请求直连还是交给代理,返回 DIRECT、PROXY 或 SOCKS。它只作用于读取它的程序,与内核里的规则分流不在同一层。
一图看懂点任一步跳到对应小节
PAC(Proxy Auto-Configuration,代理自动配置)文件是一个 JavaScript 函数,决定浏览器的 HTTP、HTTPS、FTP 请求是直连目标,还是转给 Web 代理服务器。MDN 给出的函数签名是 FindProxyForURL(url, host),它根据 URL 和主机名返回一个代理决策字符串。
函数返回什么
展开详细说明
| 返回值 | 含义 |
|---|---|
DIRECT | 直连,不经过代理 |
PROXY host:port | 交给指定的 HTTP 代理 |
SOCKS host:port | 交给指定的 SOCKS 代理 |
| null | 不使用代理 |
较新的 Firefox 还支持 HTTP、HTTPS、SOCKS4、SOCKS5 这几种写法。多个选项可用分号连接,浏览器先用最左边那个,连不上才用下一个;以 DIRECT 结尾时,代理全部不可用就会自动直连。
文件格式与预置函数
展开详细说明
PAC 文件扩展名为 .pac,MIME 类型是 application/x-ns-proxy-autoconfig;文件里只放这个函数,不要嵌在 HTML 里。可调用的预置函数包括 isPlainHostName()、dnsDomainIs()、isInNet()、dnsResolve()、shExpMatch()、myIpAddress() 等,用来按主机名或地址条件做判断。
https 地址传给 PAC 时会去掉路径与查询部分,Chrome 75 起这一行为无法关闭,Firefox 有对应的偏好项。PAC 随 JavaScript 一起在 Netscape Navigator 2.0 引入。
在系统里怎么引用
展开详细说明
Windows 的代理设置里有「使用设置脚本」,填脚本地址;macOS 的代理设置里有「自动代理配置」,填 PAC 文件 URL;v2rayN 的「系统代理」菜单也有「PAC 模式」。各系统入口位置见系统代理说明。
PAC 与规则分流
展开详细说明
两者都是「按目标决定走不走代理」,但位置不同:PAC 只作用于读取并执行它的程序,主要是浏览器;客户端的规则模式在代理内核里统一判断进入内核的流量。程序不读 PAC,系统里保存了 PAC 地址也不会生效。规则分流见分流规则说明。
常见问题
FindProxyForURL 是什么?
它是 PAC 文件里的决策函数,接收 URL 与主机名两个参数,返回直连或代理的字符串,例如 DIRECT 或 PROXY host:port。
PAC 和规则模式一样吗?
不完全一样。两者都按目标决定代理路径,但 PAC 由读取它的程序(主要是浏览器)执行,规则模式在代理内核里统一判断。