Isoline 指南

每个浏览器配置文件的代理:DNS、认证与失败处理

配置文件代理控制的是网址路由,不是整台设备的隧道。真实边界取决于代理类型、DNS 解析方、认证支持、绕过规则、回退和非 HTTP 流量。

本指南以 Chromium 文档所述网络行为为参考。其他浏览器或产品可能采用不同设计,管理工具也可能在 Chromium 外加入本地网络代理层。请验证实际使用的确切构建。

先回答四个独立问题

代理记录通常包含协议、端点、端口,有时还有认证引用。但这并没有回答四项策略问题:

  1. 覆盖范围: 哪些浏览器请求和协议使用这个代理?
  2. 名称解析: 目标主机名由设备还是代理解析?
  3. 认证: 哪些客户端与代理认证方式兼容,凭证保存在哪里?
  4. 故障: 连接错误时停止请求、尝试其他代理,还是回退直连?

把这些当作一个“代理已开启”开关,是许多意外的来源。Chromium 将代理选择描述为网址级解析:在目标地址未必已解析时,网址先产生一份有顺序的代理选择列表。绕过与回退规则也是这个决定的一部分。

配置文件代理覆盖什么

Google 的 ProxySettings 策略在 Chrome 配置文件层级生效,可选择直连、系统、自动检测、固定服务器或 PAC 脚本模式,并提供显式绕过和强制 PAC 字段。

这个边界比 VPN 或操作系统网络命名空间更窄,只管理由浏览器网络上下文处理的请求,不会自动控制:

  • 桌面管理器自身的 API 调用。
  • 进程外应用或浏览器更新程序。
  • 操作系统 DNS 与连通性检查。
  • 通过下载文件启动的其他应用。
  • 扩展程序的独立原生辅助程序。
  • 通过隐式回环绕过访问的本地服务。
  • 所选代理路径无法承载的协议流量。

部分组件可能有自己的代理支持,但需要单独说明和测试。产品声称“配置文件流量使用此代理”时,应指出涵盖哪些进程与协议,而不是暗示整台设备都走同一路由。

跟踪一次 HTTPS 请求

普通 HTTPS 导航通常经过几步。

1. 选择路由

浏览器评估固定规则、代理自动配置脚本或系统设置。匹配绕过规则时,可能选择直连。代理列表可以包含主代理和备用选项;允许直连回退时,还会包含 DIRECT。

Chromium 也对 localhost 和链路本地目标应用隐式绕过。这能保护本地源不受外部控制的代理设置影响,但也意味着笼统的“所有流量”需要限定说明。

2. 解析并连接代理

代理端点是主机名时,设备仍需解析并连接它。由远端解析目标 DNS,不会消除这次启动解析。这里失败,与代理可达但无法解析目标,是不同问题。

3. 向代理认证

要求凭证的 HTTP 代理通常返回 407 Proxy Authentication Required 及认证质询。RFC 9110定义了这一交换,以及 Proxy-Authenticate 和 Proxy-Authorization 字段。

Chromium 不使用嵌入手动代理设置中的用户名和密码。代理文档说明,认证通过浏览器正常凭证流程处理。因此,配置文件管理工具需要明确集成受支持的质询方式,不能只承诺任何 user:password@host 字符串都能工作。

4. 建立目标连接

使用 HTTP 代理时,Chromium 将目标名称解析交给代理。目标是 HTTPS 时,浏览器请求代理建立 CONNECT 隧道,然后通过隧道与目标进行端到端 TLS。

代理仍能知道目标主机名和连接元数据。如果浏览器到代理这一段采用明文 HTTP,CONNECT 请求及主机名在该段没有保护。HTTPS 代理在浏览器与代理之间增加 TLS,阻止这段路径上的观察者读取元数据,但不会让代理本身看不到目标。

代理通常无法读取隧道内 HTTPS 页面内容。TLS 拦截是另一种信任模型:客户端信任某个证书颁发机构,使中间方能够终止并重新建立 TLS。不能把这种模式与普通转发混为一谈。

DNS 解析方随代理协议变化

Chromium 文档说明,不同类型的行为不同:

所选路由 Chromium 中的目标名称解析方 重要限制
直连或绕过 设备或浏览器解析器 目标流量不经过配置文件代理
HTTP 代理 代理侧 明文客户端至代理传输暴露 HTTP 请求;HTTPS 使用 CONNECT
HTTPS 代理 代理侧 客户端必须验证代理 TLS 证书
SOCKS4 代理 客户端 仅支持 IPv4 目标;Chromium 不实现 SOCKS4a 回退
SOCKS5 代理 代理侧 Chromium 用于 TCP 网址请求,文档说明不支持 SOCKS5 认证

RFC 1928允许 SOCKS5 请求携带域名,并定义多种认证方法标识。但协议具备能力,不代表客户端已经实现。Chromium 当前将目标名称发给 SOCKS5 代理,却说明内置 SOCKS5 客户端不支持代理认证方法。因此,服务商提供用户名密码认证的 SOCKS5 时,可能需要受支持的中间层或其他代理协议。接受代理记录前,先确认浏览器实现。

DNS-over-HTTPS 又增加一层。Chrome 的 DnsOverHttpsMode 策略区分 automatic 与 secure:前者可能回退到不安全 DNS,后者在安全 DNS 失败时使解析失败。该策略在文档中是浏览器级,而 ProxySettings 是配置文件级。这提醒我们:某项设置带“配置文件”字样,不代表每项 DNS 控制都有相同范围。

每个配置文件独立运行浏览器进程的产品,可能形成更窄的实际边界,但这是实现选择,需要测试。证据应区分:

  • 代理端点解析。
  • 请求目标解析。
  • 直连或绕过请求使用的 DNS。
  • 安全 DNS 的启动解析与回退。
  • 配置文件浏览器网络上下文之外组件执行的 DNS。

认证既是兼容问题,也是机密处理问题

Chromium 文档列出 HTTP 代理支持 Basic、Digest、Negotiate 和 NTLM。HTTPS 代理增加受保护的客户端至代理通道,也可支持客户端证书。尽管 SOCKS5 规范存在认证方法,Chromium 内置代理客户端并未实现 SOCKS4 和 SOCKS5 认证。

即使方式兼容,传输选错也可能不安全。RFC 7617说明,Basic 凭证只是 Base64 编码,需要 TLS 等受保护通道。对明文 HTTP 代理使用 Basic,会向能观察该段连接的人暴露代理密码。

管理工具应分开保存:

  • 协议、主机、端口、服务商标签等非机密端点信息。
  • 生命周期或网络服务使用的机密引用。
  • 受保护存储中的凭证值。
  • 供界面与稽核使用的脱敏连接状态。
  • 只通过受控支持流程提供的诊断详情。

普通界面、日志、API、导出与自动化输出通常不需要代理密码。操作人员一般需要知道认证失败、收到哪种质询、涉及哪个端点,以及有没有发生回退。

故障表现与应核查的边界

故障 常见表现 应检查什么
代理协议填写错误 TLS 或协议握手失败 是否把 HTTPS 端点声明为 HTTP,或反过来?
代理主机名无法解析 到达代理前连接失败 哪个解析器执行启动查询?
代理端口不可达 超时或连接被拒 列表下一项是其他代理还是 DIRECT?
不支持认证质询 反复出现 407 或登录提示 浏览器是否实现该认证方式?
凭证错误或过期 提交凭证后仍返回 407 是否成功解析机密引用,输出是否已脱敏?
HTTPS 代理证书失败 到代理的安全连接被拒 证书验证是否仍完整启用?
代理无法解析目标 代理特有的主机或隧道错误 客户端是否避免直接重试目标?
CONNECT 被拒 该目标 HTTPS 导航失败 是否将拒绝视为策略,而非绕过许可?
PAC 文件不可用 代理选择停滞或路由改变 PAC 是否强制,还是可能悄悄转为 DIRECT?
绕过规则太宽 部分网站直连 是否理解确切主机、子域、端口与隐式规则?
WebRTC 使用其他接口 媒体路径与页面流量不同 是否禁止非代理 UDP?
配置变化后旧连接仍存活 旧路由短暂继续 是否清空连接或重启配置文件?
诊断捕获过多 网址、主机名或机密进入支持文件 使用何种脱敏模式与保留规则?

Chromium 的回退带有状态。连接层失败的代理可能被标为异常,并在一段时间内排到其他条目之后。如果列表中有 DIRECT,后续请求可能不经过代理。CONNECT 拒绝的处理不同,因为它可能代表有意的目标策略,而非代理不可用。

PAC 失败尤其需要注意。Chromium 文档说明,PAC 不可用时可能悄悄回退直连,除非标为强制。ProxySettings 提供 ProxyPacMandatory,就是为了阻止这种直连回退。

WebRTC 与 UDP 需要单独决定

网页可以使用不等同于普通 HTTP/HTTPS 请求的 WebRTC 路径。Chrome 默认 WebRtcIPHandling 策略可使用所有可用接口。disable_non_proxied_udp 模式将 WebRTC 限制为公共接口上的 TCP,除非配置的代理支持 UDP。

这项策略在文档中属于配置文件级,与配置文件代理相关,但仍是独立控制。它可能降低媒体性能,或破坏需要直接 UDP 的工作流。应明确选择并测试取舍,不能只凭页面加载成功就声称所有流量都被代理约束。

失败时阻断,还是优先保持可用?

重视可用性的普通浏览配置文件,允许直连回退可能合理。但授权、隐私或地区测试有效性依赖特定出口时,这就不安全。

良好的配置文件策略应明确:

  • 必须使用代理: 所选路径不可用时,停止受影响请求。
  • 批准的代理集合: 只尝试具名且策略等效的备用代理。
  • 允许直连回退: 显示路由已改变,并记录不含机密的事件。
  • 显式绕过: 记录目标类别与必须直连的原因。

界面应在启动前和故障后显示路由状态。悄悄从代理改为直连,会把网络错误变成完整性问题:工作看似成功,却使用了错误路径。

安全验证矩阵

使用你拥有或获准观察的端点与 DNS 区域,执行前先记录预期结果。

  1. 对照实际端点传输,核查声明的代理协议。
  2. 确认 HTTP、HTTPS、WebSocket 及必要 WebRTC 行为。
  3. 在受控目标观察出口地址。
  4. 观察目标查询与代理主机名启动查询分别到达哪个解析器。
  5. 让测试凭证过期,确认界面、日志和自动化输出没有原始值。
  6. 使测试代理不可达,确认按配置阻断或回退。
  7. 拒绝一个受控 CONNECT 目标,确认策略拒绝没有转为直连。
  8. 使测试 PAC 不可用,验证强制行为。
  9. 测试工作需要的确切主机、子域、本地、链路本地、IPv4 与 IPv6 绕过情形。
  10. 在连接活动时更换代理,验证新路由何时生效。
  11. 只捕获必要诊断信息,再验证保留与删除。

Chromium 的 NetLog 指南把网络日志视为隐私与安全问题。脱敏模式可省略敏感字段,更详细模式则可能包含 Cookie 或认证标头。支持文件应按实际捕获模式处理,不能只根据文件名判断。

关于本指南

AI 辅助
本文由 AI 根据英文原文翻译。Isoline 对发布内容负责。目前尚无人工语言审核记录。

来源

来源支持下列主题。访问日期说明引用材料最近何时经过核查。

  1. Chromium 代理支持 Chromium project
    支持的主题
    代理选择、协议类型、DNS 解析归属、绕过规则、回退和认证实现限制。
    访问日期
  2. Chrome 企业 ProxySettings 策略 Google Chrome Enterprise
    支持的主题
    配置文件级代理模式、绕过配置与强制 PAC 行为。
    访问日期
  3. Chrome 企业 DnsOverHttpsMode 策略 Google Chrome Enterprise
    支持的主题
    DNS-over-HTTPS 的自动与安全模式,包括回退和失败行为。
    访问日期
  4. Chrome 企业 WebRtcIPHandling 策略 Google Chrome Enterprise
    支持的主题
    WebRTC 网络接口策略,以及禁用非代理 UDP 模式和相关取舍。
    访问日期
  5. RFC 9110:HTTP 语义 Internet Engineering Task Force
    支持的主题
    HTTP 代理认证质询、CONNECT 隧道语义与代理授权字段。
    访问日期
  6. RFC 7617:HTTP Basic 认证方案 Internet Engineering Task Force
    支持的主题
    Basic 认证的编码方式,以及敏感凭证需要受保护传输通道。
    访问日期
  7. RFC 1928:SOCKS 协议第 5 版 Internet Engineering Task Force
    支持的主题
    SOCKS5 的域名地址形式,以及协议层面的认证方法协商。
    访问日期
  8. 支持的主题
    NetLog 捕获模式、脱敏边界,以及诊断文件可能包含的敏感字段。
    访问日期
建议更正