本文档介绍了 new-pac 存储库中用于绕过互联网审查的代理自动配置(PAC)文件。PAC 文件提供了一种机制,可以仅针对被阻止的网站选择性地通过代理服务器路由网络流量,同时为未被阻止的网站保持直接连接。
PAC 文件是 JavaScript 文件,用于定义 Web 浏览器确定是将请求直接发送到目标还是通过代理服务器发送的规则。在此存储库中,PAC 文件专门设计用于通过代理服务器路由被阻止域名的流量来绕过互联网审查。
来源:pac1-2241
此存储库中的 PAC 文件包含四个基本要素
来源:pac1-3 pac3-2184 pac2188-2193 pac2211-2241 pac2192-2193 pac51
代理服务器定义为符合 PAC 规范格式的字符串
在某些配置中,一个列表中有多个代理服务器可用
域名列表是一个 JavaScript 对象,其中键是域名,值设置为 1(表示应代理该域名)
| 示例域名 | 目的 |
|---|---|
| huaglad.com | 新闻/媒体 |
| slideshare.net | 文件共享 |
| tumblr.com | 社交媒体 |
| bbc.co.uk | 国际新闻 |
| google.com | 搜索引擎 |
| facebook.com | 社交媒体 |
完整的列表包含成千上万个通常被互联网审查阻止的域名。
该函数逐步提取域名后缀(从顶级域名到完整域名),并检查它们是否出现在域名列表中
当某个域名需要代理时,系统会根据客户端的 IP 地址选择一个代理服务器
这种机制可以将客户端流量分散到多个代理服务器上,并在主代理服务器失败时提供备用选项。
ip2int() 函数将 IP 地址转换为整数,用于代理选择
此函数使用正则表达式验证 IP 地址,并通过将 IPv4 地址的各部分相加来将其转换为整数。
来源:pac2194-2209
PAC 实现包括对特定域名的特殊处理
对于 www.haosou.com,始终使用特定的代理
对于 360.cn 下使用 HTTP(非 HTTPS)的域名,会使用特定的代理
使用 PAC 文件
| 浏览器 | 代理设置位置 |
|---|---|
| Chrome | 设置 → 高级 → 系统 → 代理设置 |
| Firefox | 选项 → 常规 → 网络设置 |
| Edge | 设置 → 网络和 Internet → 代理 |
| Safari | 偏好设置 → 高级 → 代理 → 自动代理配置 |
当浏览器发起 Web 请求时,它会调用 PAC 文件中的 FindProxyForURL() 函数,该函数返回代理配置或“DIRECT”(表示直接连接)。
来源:pac2211-2241
PAC 文件提供了一种轻量级的、基于浏览器的规避方法,不需要安装额外的软件。有关更全面的规避解决方案,请参阅V2Ray 配置和其他规避方法。