显式代理设置:配置、PAC 文件与自动化

了解显式代理设置:与透明代理的区别、配置浏览器和防火墙、使用 PAC 文件,以及在浏览器自动化中的应用。

Anonymous8 分钟阅读

显式代理设置:配置、PAC 文件与自动化

显式代理设置让客户端——浏览器、应用程序或自动化脚本——有意将其流量通过代理发送。与透明拦截不同,客户端知道代理的存在,这使得流量更容易控制、记录和排查问题。本文解释了显式代理设置的工作原理、如何在浏览器和防火墙上配置它们、PAC 文件如何融入其中,以及当客户端是无头浏览器而非真人时会发生哪些变化。

什么是显式代理设置?

显式代理设置:配置、PAC 文件与自动化 - 什么是显式代理设置?

显式代理设置:配置、PAC 文件与自动化 - 什么是显式代理设置?.

Browser Tasks | AdsCrawl Documentation 的首屏截图。

显式代理是客户端有意应用的代理配置。您在应用程序中输入代理地址和端口,或者将应用程序指向一个代理自动配置(PAC)文件,由该文件决定哪些请求使用代理。然后客户端将 HTTP 和 HTTPS 请求直接发送到代理,代理再将其转发到目的地。

这与透明代理相反,透明代理中网络设备在客户端不知情的情况下拦截流量。由于客户端知道显式代理的存在,因此更容易查看流量是否被代理、测试备用路由以及隔离配置问题。Palo Alto Networks 和 Azure Firewall 的供应商文档都强调这种可见性是一个实际优势。

显式代理与透明代理

方面 显式代理 透明代理
客户端感知 客户端配置了代理地址或 PAC 文件 客户端不知情;流量被内联拦截
设置位置 客户端或应用程序设置 网络路由、防火墙或网关
故障排除 更容易——可以直接检查客户端设置 更困难——拦截发生在客户端之外
典型用途 管理出口、浏览器自动化、策略控制 内联检查,客户端改动最小

显式代理设置出现在哪里

显式代理设置:配置、PAC 文件与自动化 - 显式代理设置出现在哪里

显式代理设置:配置、PAC 文件与自动化 - 显式代理设置出现在哪里.

显式代理设置出现在三个层面,了解您正在更改哪一层会有所帮助。

  1. 客户端层面。 浏览器和操作系统接受手动代理地址或 PAC 文件 URL。这是“显式代理设置”最常见的含义。
  2. 网络安全层面。 防火墙如 Palo Alto Networks NGFW、FortiGate 和 Azure Firewall 可以运行显式 Web 代理。客户端指向防火墙的监听接口,防火墙应用策略、身份验证和日志记录。
  3. 自动化层面。 无头浏览器和抓取框架在代码或启动标志中接受代理配置。这是显式设置对开发者最重要的地方。

在浏览器中配置显式代理设置

显式代理设置:配置、PAC 文件与自动化 - 在浏览器中配置显式代理设置

显式代理设置:配置、PAC 文件与自动化 - 在浏览器中配置显式代理设置.

显式代理设置:配置、PAC 文件与自动化 - 在浏览器中配置显式代理设置。

大多数桌面浏览器都提供相同的基本字段:

  • HTTP 和 HTTPS 流量的代理地址和端口。
  • 例外或绕过列表,用于应直接连接的主机。
  • PAC 文件 URL 作为固定地址的替代方案。

在 Windows 上,这些设置通常通过系统代理面板或组策略管理。在 macOS 上,它们位于网络代理设置下。在 Linux 上,环境变量如 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 很常见,尽管浏览器行为各不相同。

一个简单的手动配置如下所示:

HTTP proxy:  proxy.example.net:8080
HTTPS proxy: proxy.example.net:8080
Bypass:      localhost, 127.0.0.1, *.internal.example

如果代理需要身份验证,客户端通常会提示输入凭据或从操作系统的凭据存储中读取。避免在脚本或共享配置文件中硬编码凭据。

使用 PAC 文件进行显式代理配置

显式代理设置:配置、PAC 文件与自动化 - 使用 PAC 文件进行显式代理配置

显式代理设置:配置、PAC 文件与自动化 - 使用 PAC 文件进行显式代理配置.

显式代理设置:配置、PAC 文件与自动化 - 使用 PAC 文件进行显式代理配置。

PAC 文件是一个 JavaScript 函数,它告诉客户端对于给定的 URL 使用哪个代理。当不同目的地需要不同路由,或者代理设置需要集中分发时,它很有用。

一个最小的 PAC 文件如下所示:

function FindProxyForURL(url, host) {
  if (isPlainHostName(host) || shExpMatch(host, "*.internal.example")) {
    return "DIRECT";
  }
  return "PROXY proxy.example.net:8080; DIRECT";
}

例如,FortiGate 文档介绍了托管 PAC 文件并将客户端浏览器指向它,包括通过强制门户通过 HTTPS 下载 PAC 文件。Azure Firewall 同样支持托管 PAC 文件并在防火墙策略中启用代理自动配置。当您大规模使用 PAC 文件时,请将其托管在受信任的 HTTPS 端点上,并保持逻辑简单——复杂的 PAC 脚本难以调试,并且在不同客户端上可能表现不同。

在防火墙上配置显式代理

防火墙侧的工作流程在各供应商之间大致相似:

  1. 启用显式代理功能并选择监听接口和端口。
  2. 创建代理策略,允许客户端流量到达代理,并允许出站流量到达互联网。
  3. 配置身份验证(如果需要),例如 SAML 或 Kerberos 单点登录。
  4. 将客户端指向代理,使用手动地址或 PAC 文件。
  5. 添加日志记录和安全配置文件,以便对代理流量进行检查和审计。

供应商的具体细节有所不同。Palo Alto Networks 在支持的平台上需要 Web 代理许可证,并为客户端流量、出站流量和环回接口使用单独的接口。FortiGate 在网络设置下公开显式 Web 代理,并使用代理策略对象。Azure Firewall 在防火墙策略中配置显式代理,而不是在防火墙资源上,并且它要求 HTTP 和 HTTPS 流量使用单一的 HTTP 端口。

浏览器自动化的显式代理设置

Cloud Browsers | AdsCrawl Documentation 的首屏截图。

当客户端是无头浏览器时,显式代理设置通常在代码中传递。Playwright 和 Puppeteer 都在启动时接受代理服务器和可选的凭据:

// Puppeteer 示例
const browser = await puppeteer.launch({
  args: ['--proxy-server=http://proxy.example.net:8080']
});
// Playwright 示例
const browser = await chromium.launch({
  proxy: {
    server: 'http://proxy.example.net:8080',
    username: 'user',
    password: 'pass'
  }
});

在生产抓取中,显式代理设置与几个问题相互作用:

  • IP 信誉。 数据中心代理可能比住宅代理更频繁地被封锁。
  • 地理定位。 代理的位置决定了请求的明显区域。
  • 会话一致性。 某些工作流程需要在多次页面加载中使用相同的 IP。
  • 身份验证。 轮换代理通常需要每个会话的凭据。
  • 故障处理。 超时的代理应触发重试或备用路由,而不是静默失败。

如果您大规模运行这些工作负载,托管云浏览器可以消除大量代理管道工作。例如,AdsCrawl 允许团队将 Playwright、Puppeteer 或任何 CDP 客户端连接到具有住宅代理路由或自定义代理的云 Chromium 浏览器,因此代理配置与浏览器会话一起存在,而不是在每个脚本中。当您需要在许多任务中保持一致的浏览器身份和区域路由时,这很有用。有关基础设施选项的更广泛比较,请参阅用于抓取的远程浏览器基础设施:开发者指南。

常见陷阱及如何避免

  • 忘记绕过列表。 本地和内部主机在被强制通过代理时可能会中断。始终排除 localhost 和内部域。
  • 混合 HTTP 和 HTTPS 端口。 某些防火墙要求两者使用单一端口;其他防火墙则期望单独设置。部署前请检查供应商文档。
  • 硬编码凭据。 使用环境变量或秘密管理器,并定期轮换代理凭据。
  • 忽略 CONNECT 行为。 HTTPS 流量使用 CONNECT 方法。某些代理默认阻止它,这会破坏 TLS 站点。
  • 假设 PAC 文件可移植。 PAC 脚本在不同客户端的不同引擎中运行。在您使用的实际浏览器和自动化堆栈上进行测试。
  • 跳过日志记录。 没有代理日志,您无法判断失败是来自目标站点、代理还是客户端。

相关阅读

来源与进一步阅读

常见问题

显式代理设置和透明代理设置有什么区别?

显式代理设置在客户端上配置,因此客户端知道它正在使用代理。透明代理在客户端没有配置的情况下拦截流量,通常通过网络路由或内联检查。

显式代理设置需要 PAC 文件吗?

不需要。PAC 文件是可选的。您可以手动配置固定的代理地址和端口。当不同目的地需要不同的代理路由,或者您希望集中控制客户端行为时,PAC 文件很有用。

我可以在 Playwright 或 Puppeteer 中使用显式代理设置吗?

可以。两个框架都在浏览器启动时接受代理服务器和可选的凭据。对于大规模自动化,云浏览器平台可以为您管理代理路由和浏览器身份。

为什么启用显式代理后某些 HTTPS 站点会失败?

HTTPS 流量使用 CONNECT 方法,某些代理会阻止它或需要额外的策略规则。检查代理是否允许 CONNECT 到目标端口,以及 TLS 检查设置是否正确。

如何测试显式代理设置是否有效?

通过配置的客户端请求一个 IP 检查端点,并将返回的 IP 与您自己的 IP 进行比较。然后检查代理日志以确认请求按预期路由。

结论

显式代理设置概念简单,但在实践中容易配置错误。关键是知道您正在更改哪一层——客户端、防火墙还是自动化代码——并在所有三层中保持绕过规则、身份验证和日志记录的一致性。对于浏览器自动化团队来说,最可靠的方法是将代理配置视为浏览器会话的一部分,而不是每个脚本中的事后考虑。无论您手动配置、通过 PAC 文件配置还是通过托管云浏览器配置,显式设置都能提供透明拦截无法提供的可见性和控制。