GPNIP

代理知识

代理支持 HTTP/3 吗?如何检查 QUIC 和 HTTP/2 回退

2026/10/2010 分钟阅读22 次浏览
代理支持 HTTP/3 吗?如何检查 QUIC 和 HTTP/2 回退
目录

代理支持 HTTP/3 吗?

支持,但取决于代理类型、UDP 转发能力以及浏览器使用代理的方式。服务商标注支持 HTTP 或 HTTPS,并不意味着该服务支持 HTTP/3。要得出准确结论,需要确定各个连接段使用的协议,并检查实际访问会话。

在许多传统的 HTTP 代理或 HTTPS 代理配置中,浏览器通过基于 TCP 的 CONNECT 隧道访问 HTTPS 网站。而 HTTP/3 使用基于 UDP 的 QUIC。因此,浏览器通过此类隧道连接网站时,通常使用 HTTP/2 或 HTTP/1.1,而不是 HTTP/3。

本文将阐明 HTTP/3 代理的概念、支持 QUIC 代理的条件,以及检查 HTTP/3 并确认 HTTP/2 回退的流程,避免仅凭宣传信息作出判断。

正确理解 HTTP/3、QUIC 与代理连接的各个链路段

HTTP/3 使用 QUIC 取代 TCP

浏览器通常在基于 TCP 的 TLS 连接上使用 HTTP/2。HTTP/3 则将 HTTP 交互映射到 QUIC 上,QUIC 是一种运行于 UDP 之上、集成基于 TLS 的安全机制的传输协议。

使用代理时,这一区别至关重要。仅转发 TCP 流的代理无法自动传输 QUIC 数据包。同时,仅在本地网络中允许 UDP 也不够:应用程序、代理和网络路径必须共同支持相应的传输方式。

连接代理不等于连接网站

代理支持 HTTP/3 吗?如何检查 QUIC 和 HTTP/2 回退

评估 HTTP/3 代理时,需要将浏览器到代理的连接段与通往目标网站的连接段区分开来。根据架构不同,代理可能只是转发隧道,也可能自行建立到目标服务器的 HTTP 连接。

例如,反向代理可以接收用户发来的 HTTP/3 请求,但使用 HTTP/2 与后端服务器通信。反过来,某项服务也可能在内部链路上使用 HTTP/3,而浏览器仍只通过 HTTP/2 与前端接入点通信。

某个连接段支持 HTTP/3,并不能证明整条路径都使用 HTTP/3。检查报告应明确说明观察的是哪个连接段,而不是简单断言整个代理是否支持 QUIC。

哪些类型的代理可以传输 QUIC?

传统 HTTP 代理和 HTTPS 代理

对于 HTTPS 网站,浏览器通常会请求 HTTP 代理打开通往目标服务器的 CONNECT 隧道。传统 CONNECT 提供的是 TCP 流,适用于 TLS 和 HTTP/2,但不能直接转发 QUIC 的 UDP 数据报。

HTTPS 代理会为连接到代理的链路增加 TLS 层。这个名称并不意味着代理支持所有 HTTP 版本,或具备传输 QUIC 的能力。需要阅读服务文档,了解其实际实现的隧道机制。

SOCKS5 与 UDP 能力

SOCKS5 提供 UDP ASSOCIATE 机制,但协议中定义了这项能力,并不意味着浏览器就会使用它。浏览器中的许多 SOCKS 配置主要用于处理 TCP 流量。

因此,SOCKS5 代理声称支持 UDP,还不足以确认浏览器能够通过该代理运行 HTTP/3。还需要检查代理服务器、客户端,以及应用程序如何将 QUIC 流量映射到代理连接中。

CONNECT-UDP 与 MASQUE 架构

CONNECT-UDP 是与通过 HTTP 转发 UDP 直接相关的机制。基于 MASQUE 架构的实现可以提供通过代理传输 UDP 流量的基础,包括 QUIC 流量。

不过,不应推断只要代理支持 CONNECT-UDP,所有浏览器就都能自动使用。客户端必须支持相应机制、配置正确,并与服务兼容。代理使用 HTTP/3 接收连接,也不一定意味着它提供向网站转发 UDP 的功能。

准备 HTTP/3 测试环境

可靠的测试需要建立不使用代理时的基准。如果网站在直连时从未使用过 HTTP/3,那么启用代理后看到 HTTP/2,并不能证明代理就是原因。

  • 选择支持 HTTP/3 的网站:优先选择明确公开支持情况、且能在浏览器中观察协议的测试站点。
  • 保持条件一致:对比测试时使用相同的设备、浏览器、网络和网站地址。
  • 记录配置:保存代理类型、身份验证方式,以及其对浏览器或操作系统的生效范围。
  • 控制中间因素:记录 VPN、HTTPS 检查软件、扩展程序和管理策略。
  • 使用独立测试会话:关闭相关会话,或使用独立的浏览器配置文件,减少已建立连接的影响。

网站可以通过 Alt-Svc 或 DNS HTTPS 记录通告 HTTP/3 支持情况。浏览器有时需要先访问一次,才能建立 HTTP/3 连接。因此,首次加载使用 HTTP/2,并不一定意味着网站不支持 HTTP/3。

如何在浏览器中检查 HTTP/3

观察 DevTools 中的 Protocol 列

代理支持 HTTP/3 吗?如何检查 QUIC 和 HTTP/2 回退

对于基于 Chromium 的浏览器,打开开发者工具,切换到 Network,然后通过表头菜单启用 Protocol 列。具体名称可能因浏览器语言和版本而异。

  1. 关闭代理,访问测试网站并打开 Network 面板。
  2. 重新加载页面;可以在 DevTools 打开时启用 Disable cache,以减少 HTTP 缓存的影响。
  3. 观察主文档请求及发往同一主机名的请求。
  4. 必要时再次访问,让浏览器有机会利用 HTTP/3 通告信息。
  5. 记录代表性请求的协议值、域名和响应状态。

h3 表示工具记录到该请求使用 HTTP/3;h2 对应 HTTP/2。如果显示 HTTP/1.1,则该请求使用的是这一版本,而不是回退到 HTTP/2。

一个页面可能从多个域名加载资源,并使用不同协议。不应根据某个广告资源或外部图片的结果,判断到主域名的连接情况。

区分网络响应与已有数据

由缓存或 service worker 提供的请求可能不会建立新的网络连接。检查 HTTP/3 时,应优先观察实际经过网络的请求,并查看响应来源信息。

Disable cache 不一定会清除 Alt-Svc 状态或关闭现有连接。如果结果难以解释,应完全关闭浏览器,再使用独立测试配置文件重试,而不只是重新加载页面。

如何确认浏览器使用代理时回退到 HTTP/2

对比直连与代理连接

在直连时观察到 h3 后,启用代理并建立新的连接会话。不应只修改配置,然后继续使用仍保留旧连接的标签页。

  1. 配置代理,并检查配置是否已对浏览器生效。
  2. 通过代理日志或合适的 IP 地址检测站点确认访问路径。
  3. 重新打开用作基准的同一个网站。
  4. 观察主文档及同一主机名请求的 Protocol 列。
  5. 记录请求是通过 h2、HTTP/1.1 成功完成,还是出现连接错误。
  6. 关闭代理,创建新会话并再次检查,以进一步验证对比结果。

如果直连使用 h3,而代理连接使用 h2,就可以得出结论:通过代理的访问会话正在使用 HTTP/2,而不是 HTTP/3。这是所测试配置下 HTTP/2 回退行为的有效实测证据。

区分直接选择 HTTP/2 与尝试 QUIC 后失败

仅看到 h2,并不能证明浏览器先发送了 QUIC 流量,失败后才切换协议。浏览器可能知道代理配置不适用,从一开始就选择 HTTP/2。

如果需要确定准确顺序,应采集浏览器网络日志,例如使用 Chromium 的 NetLog 功能。查找有关代理选择、QUIC 建立、TCP 连接和协议协商的信息。

结论应准确反映证据:“通过代理访问时使用 HTTP/2”,与“已记录到在建立 HTTP/2 之前有一次失败的 QUIC 尝试”,是不同的表述。

在网络层及通过命令行工具检查 QUIC

使用抓包工具观察 UDP

代理支持 HTTP/3 吗?如何检查 QUIC 和 HTTP/2 回退

抓包工具可以帮助识别 UDP 流量及被识别为 QUIC 的连接。应按测试时间、目标地址限定观察范围;如果工具支持,也可以按进程筛选。

不过,存在 UDP 流量并不意味着网站请求正在使用 HTTP/3。这些流量可能属于其他应用程序,或浏览器的其他功能。反过来,使用加密隧道时,在设备上观察到的可能只有通往代理的外层连接。

要确认 QUIC 确实通过代理传输,应结合浏览器中的协议信息、代理日志和抓包数据进行判断。出口 IP 地址发生变化,只能证明 IP 检测请求经过了该路径,不能证明所有连接都如此。

使用 curl 进行辅助检查

如果安装的 curl 编译时启用了相应功能,就可以用它辅助检查 HTTP/3。首先检查版本和功能信息,然后查阅当前版本的文档,了解 --http3、--http3-only 选项和代理配置。

需要区分允许回退到其他协议的模式与仅接受 HTTP/3 的模式。同时,支持使用 HTTP/3 连接目标服务器,并不自动意味着 curl 支持通过当前测试的代理类型传输 QUIC。

curl 的结果只能作为浏览器测试的辅助,因为两个应用程序可能在 QUIC 库、代理处理方式和连接策略上有所不同。

评估 HTTP/3 代理时容易得出的错误结论

  • 看到 Alt-Svc 就认定已经使用 HTTP/3:该响应头只是通告支持能力,并不确认当前响应使用的协议。
  • 看到 h2 就立即归咎于代理:需要先排除网站、网络或浏览器策略原本就不允许 HTTP/3 的可能性。
  • 启用代理后看到 h3,就认定 QUIC 经过了代理:需要检查配置生效范围、排除规则及实际连接路径。
  • 将支持 UDP 等同于浏览器支持:服务器具备 UDP 能力,但客户端未必能使用相应机制。
  • 将 HTTP/2 回退视为错误:HTTP/2 仍可能是正常工作且适合代理架构的协议。

结论

代理可以支持 HTTP/3,但需要具体评估 UDP 传输机制、客户端能力以及各个连接段。对于使用传统 CONNECT 的 HTTP 代理或 HTTPS 代理,访问 HTTPS 网站时,HTTP/2 通常是比 QUIC 更现实的选择。

可靠的检查流程是:确认直连时使用 h3,通过代理创建新会话,观察是否使用 h2,并在必要时对照日志。这种方法有助于区分代理确实传输了 QUIC,还是浏览器使用了 HTTP/2,同时避免将初始协议选择误认为一次失败后的 QUIC 回退。

#proxy HTTP/3#proxy QUIC#kiểm tra HTTP/3#HTTP/2 fallback#cấu hình proxy

看完教程,准备好用上真正的代理了吗?

购买住宅、ISP、数据中心或移动代理 — 几分钟内即可开通。

查看产品