如果您管理多个广告账户,抓取市场或使用海外平台 - 您肯定遇到过所有流量都通过代理的情况,而这仅仅是为了几个网站。结果是:速度下降,流量消耗增加,而代理的“消耗”速度更快。PAC 文件解决了这个问题:它允许您准确指定哪些网站通过代理访问,哪些网站直接访问。
什么是 PAC 文件,它有什么用
PAC 的全称是 代理自动配置 — 自动设置代理。实际上,这是一个包含 JavaScript 函数的小文本文件,该函数在每次浏览器或系统请求时决定:直接放行流量还是通过代理服务器。
听起来很技术,但实际上这是一个非常简单的工具。您只需一次性编写规则 - 系统会自动应用这些规则。无需每次手动切换代理或为每个网站保持单独的浏览器。
谁会真正受益:
- 套利者 — 在 Facebook Ads 和 TikTok Ads 上投放广告,但不希望其他所有流量(电子邮件、消息应用、工作网站)都通过代理,从而减慢工作速度。
- SMM 专家 — 管理 20-50 个 Instagram 或 TikTok 账户,每个配置文件都需要特定平台的代理。
- 市场卖家 — 抓取 Wildberries 或 Ozon 的价格,但希望通过代理仅处理对这些网站的请求,而不是整个互联网。
- 市场营销人员 — 检查来自不同地区的搜索结果和广告,同时其余工作使用您的真实 IP 地址。
PAC 文件相较于普通代理设置的主要优势在于 节省流量和资源。当所有流量都通过代理时,您为每兆字节付费,包括 YouTube、Google 文档和 Windows 更新。PAC 文件仅允许真正需要的内容通过代理。
💡 重要提示
PAC 文件被所有现代浏览器(Chrome、Firefox、Edge)、操作系统(Windows、macOS、Linux)和大多数反检测浏览器支持。这是一个已有超过 25 年历史的标准。
PAC 文件如何工作:流量路由逻辑
每当浏览器或应用程序尝试打开某个 URL 时,它会调用 PAC 文件中的函数,并传递两个参数:URL 本身和主机名(域名)。该函数分析这些数据并返回三个值之一:
DIRECT— 直接连接,无需代理。PROXY host:port— 使用指定地址和端口的 HTTP 代理。SOCKS5 host:port— 使用 SOCKS5 代理。
函数执行是瞬时的 — 在建立连接之前。用户不会注意到任何延迟。逻辑可以复杂到无穷无尽:您可以通过一个代理将流量引导到 Facebook,通过另一个代理引导到 TikTok,而其他所有内容则直接放行。
下面是简化的工作流程:
- 您在浏览器中打开 facebook.com
- 浏览器调用 PAC 文件中的函数:"如何处理对 facebook.com 的请求?"
- 函数检查规则列表并回答:"使用 PROXY 185.10.10.1:8080"
- 浏览器通过代理连接到 Facebook
- 您打开 google.com — 函数回答:"DIRECT"
- Google 直接从您的真实 IP 打开
这种方法称为 分割隧道 — 流量分离。这是企业网络和 VPN 中的标准做法,但在使用代理时,PAC 文件甚至更合适 — 它更易于配置,并且不需要安装额外的软件。
PAC 文件结构:逐部分解析
PAC 文件是一个普通的文本文件,扩展名为 .pac。其中包含一个名为 FindProxyForURL 的必需 JavaScript 函数。每次请求时,浏览器都会调用这个函数。
基本结构如下:
function FindProxyForURL(url, host) {
// 规则 1:如果是 localhost — 始终直接
if (isPlainHostName(host)) {
return "DIRECT";
}
// 规则 2:如果域名是 facebook.com — 通过代理
if (dnsDomainIs(host, "facebook.com")) {
return "PROXY 185.10.10.1:8080";
}
// 规则 3:所有其他请求 — 直接
return "DIRECT";
}
让我们解析一下您将最常使用的关键内置函数:
| 函数 | 作用 | 示例 |
|---|---|---|
dnsDomainIs(host, ".example.com") |
检查主机是否属于该域 | 将捕获 facebook.com 及其所有子域 |
shExpMatch(host, "*.example.com") |
模式匹配(通配符) | 灵活的域名掩码过滤 |
isInNet(host, "10.0.0.0", "255.0.0.0") |
检查是否属于 IP 子网 | 用于按 IP 范围过滤 |
isPlainHostName(host) |
检查主机是否为本地名称 | localhost、printer、nas — 直接 |
localHostOrDomainIs(host, "...") |
检查本地主机或域 | 用于内部网络的例外 |
重要提示:函数按照 从上到下 的顺序处理规则,并在第一个匹配处停止。因此,规则的顺序很重要 — 首先设置更具体的条件,最后设置默认的通用规则。
实际任务的 PAC 文件示例
以下是四个针对具体任务的实用模板。复制所需的模板,替换代理的地址和端口为您的数据 - 文件即可使用。
模板 1:仅通过代理访问 Facebook 和 Instagram(针对套利者)
function FindProxyForURL(url, host) {
// 本地地址 — 始终直接
if (isPlainHostName(host) ||
shExpMatch(host, "*.local") ||
host === "127.0.0.1") {
return "DIRECT";
}
// Facebook 及其所有子域 — 通过代理
if (dnsDomainIs(host, "facebook.com") ||
dnsDomainIs(host, "fbcdn.net") ||
dnsDomainIs(host, "fb.com")) {
return "PROXY 185.10.10.1:8080";
}
// Instagram — 通过同一代理
if (dnsDomainIs(host, "instagram.com") ||
dnsDomainIs(host, "cdninstagram.com")) {
return "PROXY 185.10.10.1:8080";
}
// 其他所有内容 — 直接
return "DIRECT";
}
模板 2:不同平台使用不同代理(针对 SMM 机构)
function FindProxyForURL(url, host) {
if (isPlainHostName(host)) {
return "DIRECT";
}
// Instagram — 通过住宅代理 #1
if (dnsDomainIs(host, "instagram.com") ||
dnsDomainIs(host, "cdninstagram.com")) {
return "PROXY 91.200.10.5:3128";
}
// TikTok — 通过住宅代理 #2
if (dnsDomainIs(host, "tiktok.com") ||
dnsDomainIs(host, "tiktokcdn.com") ||
dnsDomainIs(host, "musical.ly")) {
return "PROXY 91.200.10.6:3128";
}
// VK — 通过单独的代理
if (dnsDomainIs(host, "vk.com") ||
dnsDomainIs(host, "vk.me") ||
dnsDomainIs(host, "userapi.com")) {
return "PROXY 91.200.10.7:3128";
}
return "DIRECT";
}
模板 3:抓取 Wildberries 和 Ozon(针对卖家)
function FindProxyForURL(url, host) {
if (isPlainHostName(host)) {
return "DIRECT";
}
// Wildberries — 通过代理(抓取价格)
if (dnsDomainIs(host, "wildberries.ru") ||
dnsDomainIs(host, "wbstatic.net") ||
dnsDomainIs(host, "wb.ru")) {
return "PROXY 45.130.10.20:8080";
}
// Ozon — 通过代理
if (dnsDomainIs(host, "ozon.ru") ||
dnsDomainIs(host, "ozonusercontent.com")) {
return "PROXY 45.130.10.20:8080";
}
// Avito — 通过代理
if (dnsDomainIs(host, "avito.ru") ||
dnsDomainIs(host, "avito.st")) {
return "PROXY 45.130.10.20:8080";
}
return "DIRECT";
}
模板 4:带有备用 HTTP 的 SOCKS5 代理(容错性)
function FindProxyForURL(url, host) {
if (isPlainHostName(host)) {
return "DIRECT";
}
// 目标网站 — SOCKS5 主代理,HTTP 备用
if (dnsDomainIs(host, "facebook.com") ||
dnsDomainIs(host, "instagram.com") ||
dnsDomainIs(host, "tiktok.com")) {
// 如果 SOCKS5 不可用 — 自动切换到 HTTP
return "SOCKS5 185.10.10.1:1080; PROXY 185.10.10.1:8080; DIRECT";
}
return "DIRECT";
}
💡 关于备用代理
字符串 "SOCKS5 ...; PROXY ...; DIRECT" 是一个备用链。如果第一个代理不可用,浏览器会自动尝试第二个,然后是直接连接。这对于关键任务非常方便,避免了停机时间。
如何在浏览器和系统中连接 PAC 文件
有两种方法可以连接 PAC 文件:通过计算机上的本地文件或通过 URL(如果文件托管在服务器上)。对于大多数任务,本地文件就足够了。
步骤 1:创建 PAC 文件
打开任何文本编辑器(记事本、Notepad++、VS Code),并粘贴上面的模板代码。将文件保存为扩展名为 .pac 的文件,例如:proxy_rules.pac。推荐的存储位置:C:\proxy\proxy_rules.pac(Windows)或 /Users/username/proxy/proxy_rules.pac(macOS)。
步骤 2:在 Windows 10/11 中连接
- 打开 设置 → 网络和互联网 → 代理
- 在“使用自动配置脚本”部分,将开关切换到 开启
- 在“脚本地址”字段中输入文件路径,格式为:
file:///C:/proxy/proxy_rules.pac - 点击 保存
- 重新启动浏览器
步骤 3:在 macOS 中连接
- 打开 系统偏好设置 → 网络
- 选择活动网络连接(Wi-Fi 或以太网),然后点击 高级
- 转到 代理 选项卡
- 勾选 自动代理配置
- 在 URL 字段中输入:
file:///Users/username/proxy/proxy_rules.pac - 点击 确定 → 应用
步骤 4:在 Google Chrome 中连接(与系统分开)
Chrome 使用系统代理设置,但您可以通过命令行参数启动它,使用单独的 PAC 文件。这很方便,如果您希望仅 Chrome 通过 PAC 工作,而其他应用程序则不使用。
创建 Chrome 快捷方式,在“目标”字段的末尾添加:
--proxy-pac-url="file:///C:/proxy/proxy_rules.pac"
步骤 5:在 Firefox 中连接
- 打开 设置 → 常规 → 网络设置 → 设置
- 选择 自动代理配置 URL
- 输入路径:
file:///C:/proxy/proxy_rules.pac - 点击 确定
在反检测浏览器中使用 PAC 文件:Dolphin、AdsPower、GoLogin
对于使用反检测浏览器的套利者和 SMM 专家,PAC 文件提供了额外的可能性。您可以在浏览器配置文件内部设置灵活的路由,而不是将一个代理分配给整个配置文件。
Dolphin Anty
在 Dolphin Anty 中,PAC 文件在配置文件级别连接。在创建或编辑配置文件时,在 代理 部分选择 PAC-script 类型,并指定 URL 或文件路径。这允许一个配置文件为不同的网站使用不同的代理 — 例如,Facebook 通过移动代理,而其他所有内容直接访问。
实际场景:您有 10 个 Facebook 广告账户。对于 Dolphin 中的每个配置文件,您连接一个 PAC 文件,该文件仅将 Facebook 和 Instagram 的域通过代理处理。其余流量(扩展加载、更新)直接访问 — 这节省了高达 70% 的代理流量。
AdsPower
在 AdsPower 中,设置配置文件时,在 代理设置 部分有一个输入 PAC URL 的字段。指定您的 PAC 文件地址 — 如果它是本地的,请将其放置在简单的本地 HTTP 服务器上(例如,通过 Python:python -m http.server 8000),并指定地址 http://localhost:8000/proxy_rules.pac。
GoLogin
GoLogin 通过配置文件设置中的 代理 URL 字段支持 PAC 文件。语法类似 — 指定文件的完整 URL。GoLogin 还允许保存代理设置模板并批量应用于多个配置文件,这在处理大量账户时非常方便。
Multilogin 和 Octo Browser
这两个浏览器都通过 URL 支持 PAC 配置。在 Multilogin 中,这在 Profile → Proxy → Custom proxy 部分进行设置。在 Octo Browser 中也是如此,在配置文件设置中选择代理类型 PAC 并指定文件链接。
🔧 反检测浏览器的技巧
将 PAC 文件放置在免费托管服务上(GitHub Pages、Pastebin RAW、Cloudflare Workers) — 这样您就不需要本地服务器,文件可以从任何配置文件和任何设备访问。此外,您可以在一个地方更新规则,所有配置文件的更改将立即生效。
选择哪种类型的代理进行 PAC 配置
PAC 文件与任何类型的代理都可以工作,但不同任务适合不同选项。以下是一个比较表,帮助您做出选择:
| 代理类型 | 最适合 | PAC 中的协议 | 速度 |
|---|---|---|---|
| 住宅代理 | Facebook Ads、Instagram、TikTok — 具有严格反欺诈保护的社交网络 | PROXY、SOCKS5 | 中等 |
| 移动代理 | 账户农场,处理移动应用程序的移动版本 | PROXY、SOCKS5 | 中等 |
| 数据中心代理 | 抓取市场、价格监控、SEO 任务 | PROXY、SOCKS5 | 高 |
在通过 PAC 配置使用 Facebook Ads 和 Instagram 时,套利者通常选择 住宅代理 — 它们具有真实的家庭用户 IP 地址,并且在平台算法中引发怀疑的可能性显著降低。
如果您通过移动设备或在反检测浏览器中使用移动配置文件管理 Instagram 或 TikTok 账户,请注意 移动代理 — 它们通过运营商的真实移动网络工作,并为这些平台提供最“干净”的流量。
对于抓取 Wildberries、Ozon 或 Avito 等任务,速度和请求数量至关重要,数据中心代理将是最佳选择 — 它们速度更快,并允许在单位时间内进行大量请求。
在 PAC 文件中设置身份验证
如果您的代理需要登录名和密码,则在 PAC 文件中不需要指定它们 — 这不安全,因为文件可能会被读取。身份验证由浏览器单独处理:在第一次连接时,它会请求凭据并保存它们。或者使用 IP 授权的代理 — 那样就完全不需要登录名/密码。
常见错误及其解决方法
在设置 PAC 文件时,大多数问题与几个典型错误有关。让我们逐一解析并提供解决方案。
错误 1:PAC 文件未应用
症状:您指定了文件路径,但流量仍然直接或通过旧设置。
原因和解决方案:
- 文件路径不正确。检查格式:在 Windows 上应为
file:///C:/path/file.pac(file: 后面有三个斜杠) - 浏览器缓存了旧设置。完全关闭浏览器并重新打开。
- 在 Windows 中,组策略可能会干扰。通过 gpedit.msc → 计算机配置 → 管理模板 → Windows 组件 → Internet Explorer 检查。
错误 2:所有流量都通过代理,而不仅仅是所需流量
症状:速度下降,整个互联网变得缓慢。
原因:函数的最后一行是 return "PROXY ..." 而不是 return "DIRECT"。
解决方案:确保函数的最后一行是 return "DIRECT"; 这是对所有未满足先前条件的默认规则。
错误 3:子域未符合规则
症状:facebook.com 的规则有效,但 static.facebook.com 或 m.facebook.com 的规则无效。
原因:函数 dnsDomainIs 检查域名及其所有子域的精确匹配,但仅在您在前面指定了带点的域时。
解决方案:使用 dnsDomainIs(host, "facebook.com") — 该函数会自动捕获所有子域。或者为每个子域添加单独的行。
错误 4:JavaScript 语法错误
症状:PAC 文件根本不工作,浏览器忽略它。
解决方案:在在线工具 PAC 文件调试器 中检查文件(在 Google 中搜索)或将代码粘贴到浏览器控制台(F12 → 控制台)中 — JavaScript 错误将立即显现。最常见的问题是缺少括号或分号。
错误 5:PAC 文件不适用于 HTTPS 网站
症状:HTTP 网站通过代理打开,HTTPS 网站则不行。
原因:对于 HTTPS,浏览器通过 CONNECT 方法建立隧道。一些 HTTP 代理不支持 CONNECT。
解决方案:使用 SOCKS5 代理而不是 HTTP — 它支持两种类型的连接。在 PAC 文件中将 PROXY 替换为 SOCKS5。
PAC 文件检查清单
- ✅ 函数名称准确为
FindProxyForURL(区分大小写) - ✅ 函数接受两个参数:
url和host - ✅ 所有大括号均已关闭
- ✅ 函数末尾有
return "DIRECT"; - ✅ 代理地址格式为
IP:PORT,无空格 - ✅ 文件以 UTF-8 编码保存
- ✅ 设置中的文件路径以
file:///开头 - ✅ 修改后浏览器已重新启动
结论和建议
PAC 文件是一个被低估的工具,适用于专业使用代理的人。它解决了多个问题:节省代理流量,为其他互联网活动保持速度,并允许灵活管理路由,而无需手动切换设置。
对于套利者,PAC 文件与反检测浏览器(Dolphin Anty、AdsPower、GoLogin)结合使用,可以设置仅通过代理处理 Facebook Ads 或 TikTok Ads 的流量 — 不多一字。对于 SMM 专家 — 在一个系统中为 Instagram、TikTok 和 VK 设置不同的代理。对于市场卖家 — 精确抓取 Wildberries 和 Ozon,而不增加额外负担。
重要的是要记住:PAC 文件只是一个包含几行代码的文本文件。您不必害怕它。拿一个来自本文的现成模板,替换您的代理数据 — 10 分钟内即可设置灵活的流量路由。
如果您计划通过 PAC 配置使用 Facebook Ads、Instagram 或 TikTok,建议使用 住宅代理 — 它们在平台方面提供最高的信任水平,并在通过 PAC 文件正确设置路由时,最小化封锁风险。