proxy auto-config (PAC) 是根据 URL 自动配置代理服务器的配置文件。
PAC 文件本身是 JavaScript 脚本。可以使用完整的 JavaScript 能力,并且可以使用一些特定的函数如 isPlainHostName(参考MDN)。PAC需要实现 function FindProxyForURL(url, host) {} 这个接口。
function FindProxyForURL(url, host) {
//return "DIRECT"; // 直连
//return 'PROXY proxy.example.com:8080; DIRECT';
return "SOCKS5 127.0.0.1:1080;"; // 使用代理
}
返回的代理列表可以使用 ; 分割的多个代理。会依次尝试,如果某个代理无法连接,会石使用列表里下一个。
应用于翻墙(GFW)场景时,传统使用黑名单模式的PAC,即只有被墙网站才通过代理连接。但由于近年来中国对国外网站的网络封锁不断扩大。目前推荐使用白名单(whitelist)模式的PAC,即只有对中国国内网站以及局域网IP地址使用 DIRECT 直连,其余所有 url 一律通过代理。Github 上有很多人维护这种 PAC 文件,例如 whitelist.pac。
配合 shadowsocks-win 使用时:PAC 文件里可以使用 PROXY 这个伪全局变量指代 shadowsocks-win 提供的代理服务器地址。