Isoline 指南
每个浏览器配置文件的代理:DNS、认证与失败处理
配置文件代理控制的是网址路由,不是整台设备的隧道。真实边界取决于代理类型、DNS 解析方、认证支持、绕过规则、回退和非 HTTP 流量。
本指南以 Chromium 文档所述网络行为为参考。其他浏览器或产品可能采用不同设计,管理工具也可能在 Chromium 外加入本地网络代理层。请验证实际使用的确切构建。
先回答四个独立问题
代理记录通常包含协议、端点、端口,有时还有认证引用。但这并没有回答四项策略问题:
- 覆盖范围: 哪些浏览器请求和协议使用这个代理?
- 名称解析: 目标主机名由设备还是代理解析?
- 认证: 哪些客户端与代理认证方式兼容,凭证保存在哪里?
- 故障: 连接错误时停止请求、尝试其他代理,还是回退直连?
把这些当作一个“代理已开启”开关,是许多意外的来源。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 区域,执行前先记录预期结果。
- 对照实际端点传输,核查声明的代理协议。
- 确认 HTTP、HTTPS、WebSocket 及必要 WebRTC 行为。
- 在受控目标观察出口地址。
- 观察目标查询与代理主机名启动查询分别到达哪个解析器。
- 让测试凭证过期,确认界面、日志和自动化输出没有原始值。
- 使测试代理不可达,确认按配置阻断或回退。
- 拒绝一个受控 CONNECT 目标,确认策略拒绝没有转为直连。
- 使测试 PAC 不可用,验证强制行为。
- 测试工作需要的确切主机、子域、本地、链路本地、IPv4 与 IPv6 绕过情形。
- 在连接活动时更换代理,验证新路由何时生效。
- 只捕获必要诊断信息,再验证保留与删除。
Chromium 的 NetLog 指南把网络日志视为隐私与安全问题。脱敏模式可省略敏感字段,更详细模式则可能包含 Cookie 或认证标头。支持文件应按实际捕获模式处理,不能只根据文件名判断。
关于本指南
- AI 辅助
- 本文由 AI 根据英文原文翻译。Isoline 对发布内容负责。目前尚无人工语言审核记录。
来源
来源支持下列主题。访问日期说明引用材料最近何时经过核查。
- Chromium 代理支持 Chromium project
- 支持的主题
- 代理选择、协议类型、DNS 解析归属、绕过规则、回退和认证实现限制。
- 访问日期
- Chrome 企业 ProxySettings 策略 Google Chrome Enterprise
- 支持的主题
- 配置文件级代理模式、绕过配置与强制 PAC 行为。
- 访问日期
- Chrome 企业 DnsOverHttpsMode 策略 Google Chrome Enterprise
- 支持的主题
- DNS-over-HTTPS 的自动与安全模式,包括回退和失败行为。
- 访问日期
- Chrome 企业 WebRtcIPHandling 策略 Google Chrome Enterprise
- 支持的主题
- WebRTC 网络接口策略,以及禁用非代理 UDP 模式和相关取舍。
- 访问日期
- RFC 9110:HTTP 语义 Internet Engineering Task Force
- 支持的主题
- HTTP 代理认证质询、CONNECT 隧道语义与代理授权字段。
- 访问日期
- RFC 7617:HTTP Basic 认证方案 Internet Engineering Task Force
- 支持的主题
- Basic 认证的编码方式,以及敏感凭证需要受保护传输通道。
- 访问日期
- RFC 1928:SOCKS 协议第 5 版 Internet Engineering Task Force
- 支持的主题
- SOCKS5 的域名地址形式,以及协议层面的认证方法协商。
- 访问日期
- Chromium NetLog 设计与隐私指南 Chromium project
- 支持的主题
- NetLog 捕获模式、脱敏边界,以及诊断文件可能包含的敏感字段。
- 访问日期