返回博客

如何设置PAC文件以进行代理:仅传输所需流量,避免不必要的开支

PAC文件允许灵活管理流量,仅通过代理访问所需网站,避免不必要的开支和速度损失。

📅2026年5月15日
```html

如果您管理多个广告账户,抓取市场或使用海外平台 - 您肯定遇到过所有流量都通过代理的情况,而这仅仅是为了几个网站。结果是:速度下降,流量消耗增加,而代理的“消耗”速度更快。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,而其他所有内容则直接放行。

下面是简化的工作流程:

  1. 您在浏览器中打开 facebook.com
  2. 浏览器调用 PAC 文件中的函数:"如何处理对 facebook.com 的请求?"
  3. 函数检查规则列表并回答:"使用 PROXY 185.10.10.1:8080"
  4. 浏览器通过代理连接到 Facebook
  5. 您打开 google.com — 函数回答:"DIRECT"
  6. 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 中连接

  1. 打开 设置 → 网络和互联网 → 代理
  2. 在“使用自动配置脚本”部分,将开关切换到 开启
  3. 在“脚本地址”字段中输入文件路径,格式为:file:///C:/proxy/proxy_rules.pac
  4. 点击 保存
  5. 重新启动浏览器

步骤 3:在 macOS 中连接

  1. 打开 系统偏好设置 → 网络
  2. 选择活动网络连接(Wi-Fi 或以太网),然后点击 高级
  3. 转到 代理 选项卡
  4. 勾选 自动代理配置
  5. 在 URL 字段中输入:file:///Users/username/proxy/proxy_rules.pac
  6. 点击 确定 → 应用

步骤 4:在 Google Chrome 中连接(与系统分开)

Chrome 使用系统代理设置,但您可以通过命令行参数启动它,使用单独的 PAC 文件。这很方便,如果您希望仅 Chrome 通过 PAC 工作,而其他应用程序则不使用。

创建 Chrome 快捷方式,在“目标”字段的末尾添加:

--proxy-pac-url="file:///C:/proxy/proxy_rules.pac"

步骤 5:在 Firefox 中连接

  1. 打开 设置 → 常规 → 网络设置 → 设置
  2. 选择 自动代理配置 URL
  3. 输入路径:file:///C:/proxy/proxy_rules.pac
  4. 点击 确定

在反检测浏览器中使用 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(区分大小写)
  • ✅ 函数接受两个参数:urlhost
  • ✅ 所有大括号均已关闭
  • ✅ 函数末尾有 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 文件正确设置路由时,最小化封锁风险。

```