菜单

代理自动配置 (PAC) 文件

相关源文件

本文档介绍了 new-pac 存储库中用于绕过互联网审查的代理自动配置(PAC)文件。PAC 文件提供了一种机制,可以仅针对被阻止的网站选择性地通过代理服务器路由网络流量,同时为未被阻止的网站保持直接连接。

概述

PAC 文件是 JavaScript 文件,用于定义 Web 浏览器确定是将请求直接发送到目标还是通过代理服务器发送的规则。在此存储库中,PAC 文件专门设计用于通过代理服务器路由被阻止域名的流量来绕过互联网审查。

架构

PAC 请求流程

来源:pac1-2241

关键组件

此存储库中的 PAC 文件包含四个基本要素

  1. 代理服务器定义 - 指定要使用的代理服务器
  2. 域名列表 - 需要代理访问的被阻止域名的列表
  3. FindProxyForURL 函数 - 确定路由的核心函数
  4. 辅助函数 - 其他实用函数

来源:pac1-3 pac3-2184 pac2188-2193 pac2211-2241 pac2192-2193 pac51

实现细节

代理定义

代理服务器定义为符合 PAC 规范格式的字符串

在某些配置中,一个列表中有多个代理服务器可用

来源:pac1 pac2192 pac51

域名列表

域名列表是一个 JavaScript 对象,其中键是域名,值设置为 1(表示应代理该域名)

示例域名目的
huaglad.com新闻/媒体
slideshare.net文件共享
tumblr.com社交媒体
bbc.co.uk国际新闻
google.com搜索引擎
facebook.com社交媒体

完整的列表包含成千上万个通常被互联网审查阻止的域名。

来源:pac3-2184 pac53-594

域名匹配算法

该函数逐步提取域名后缀(从顶级域名到完整域名),并检查它们是否出现在域名列表中

来源:pac2211-2241 pac2217-2239

代理选择逻辑

当某个域名需要代理时,系统会根据客户端的 IP 地址选择一个代理服务器

这种机制可以将客户端流量分散到多个代理服务器上,并在主代理服务器失败时提供备用选项。

来源:pac2194-2209 pac2224-2232

IP 地址处理

ip2int() 函数将 IP 地址转换为整数,用于代理选择

此函数使用正则表达式验证 IP 地址,并通过将 IPv4 地址的各部分相加来将其转换为整数。

来源:pac2194-2209

特殊情况处理

PAC 实现包括对特定域名的特殊处理

  1. 对于 www.haosou.com,始终使用特定的代理

  2. 对于 360.cn 下使用 HTTP(非 HTTPS)的域名,会使用特定的代理

来源:pac2212-2214 pac2220-2222

浏览器集成

使用 PAC 文件

  1. 将浏览器的代理设置配置为使用“自动代理配置”
  2. 输入 PAC 文件的 URL 或文件路径
浏览器代理设置位置
Chrome设置 → 高级 → 系统 → 代理设置
Firefox选项 → 常规 → 网络设置
Edge设置 → 网络和 Internet → 代理
Safari偏好设置 → 高级 → 代理 → 自动代理配置

当浏览器发起 Web 请求时,它会调用 PAC 文件中的 FindProxyForURL() 函数,该函数返回代理配置或“DIRECT”(表示直接连接)。

来源:pac2211-2241

与其他规避方法的关系

PAC 文件提供了一种轻量级的、基于浏览器的规避方法,不需要安装额外的软件。有关更全面的规避解决方案,请参阅V2Ray 配置其他规避方法