入代理工具入门名词KNOWLEDGE MAP · 名词图谱
节点 03

PAC 文件如何选择代理

代理工具入门名词编辑部 · 更新于 2026-10-18

一句话回答

PAC 文件是一个 JavaScript 函数 FindProxyForURL(url, host),决定浏览器请求直连还是交给代理,返回 DIRECT、PROXY 或 SOCKS。它只作用于读取它的程序,与内核里的规则分流不在同一层。

本文目录函数返回什么文件格式与预置函数在系统里怎么引用PAC 与规则分流常见问题

PAC(Proxy Auto-Configuration,代理自动配置)文件是一个 JavaScript 函数,决定浏览器的 HTTP、HTTPS、FTP 请求是直连目标,还是转给 Web 代理服务器。MDN 给出的函数签名是 FindProxyForURL(url, host),它根据 URL 和主机名返回一个代理决策字符串。

函数返回什么

1要点 · 第 1 节

较新的 Firefox 还支持 HTTP、HTTPS、SOCKS4、SOCKS5 这几种写法。

  • 多个选项可用分号连接,浏览器先用最左边那个,连不上才用下一个;以 DIRECT 结尾时…
DIRECT直连,不经过代理
PROXY host:port交给指定的 HTTP 代理
SOCKS host:port交给指定的 SOCKS 代理
null不使用代理
展开详细说明
返回值含义
DIRECT直连,不经过代理
PROXY host:port交给指定的 HTTP 代理
SOCKS host:port交给指定的 SOCKS 代理
null不使用代理
本页表格里的项目一览数据:本页第一张表 · 2026-10-18

较新的 Firefox 还支持 HTTP、HTTPS、SOCKS4、SOCKS5 这几种写法。多个选项可用分号连接,浏览器先用最左边那个,连不上才用下一个;以 DIRECT 结尾时,代理全部不可用就会自动直连。

文件格式与预置函数

2要点 · 第 2 节

PAC 文件扩展名为 .pac,MIME 类型是 application/x-ns-proxy-autoconfig;文件里只放这个函数…

  • 可调用的预置函数包括 isPlainHostName()、dnsDomainIs()…
  • https 地址传给 PAC 时会去掉路径与查询部分,Chrome 75 起这一行为无法关闭…
  • PAC 随 JavaScript 一起在 Netscape Navigator 2.0 引入。
.pac
dnsDomainIs()
isInNet()
dnsResolve()
shExpMatch()
展开详细说明

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 引入。

在系统里怎么引用

3要点 · 第 3 节

Windows 的代理设置里有「使用设置脚本」,填脚本地址;macOS 的代理设置里有「自动代理配置」,填 PAC 文件 URL…

  • 各系统入口位置见系统代理说明。
展开详细说明

Windows 的代理设置里有「使用设置脚本」,填脚本地址;macOS 的代理设置里有「自动代理配置」,填 PAC 文件 URL;v2rayN 的「系统代理」菜单也有「PAC 模式」。各系统入口位置见系统代理说明。

PAC 与规则分流

4要点 · 第 4 节

两者都是「按目标决定走不走代理」,但位置不同:PAC 只作用于读取并执行它的程序,主要是浏览器;客户端的规则模式在代理内核里统一判断进入内核的流量。

  • 程序不读 PAC,系统里保存了 PAC 地址也不会生效。
  • 规则分流见分流规则说明。
展开详细说明

两者都是「按目标决定走不走代理」,但位置不同:PAC 只作用于读取并执行它的程序,主要是浏览器;客户端的规则模式在代理内核里统一判断进入内核的流量。程序不读 PAC,系统里保存了 PAC 地址也不会生效。规则分流见分流规则说明。

常见问题

FindProxyForURL 是什么?

它是 PAC 文件里的决策函数,接收 URL 与主机名两个参数,返回直连或代理的字符串,例如 DIRECT 或 PROXY host:port。

PAC 和规则模式一样吗?

不完全一样。两者都按目标决定代理路径,但 PAC 由读取它的程序(主要是浏览器)执行,规则模式在代理内核里统一判断。