如何抓取 Google Chrome 和 macOS 应用的 HTTP/3 流量
阅读约需 5 分钟
1. 问题:HTTP/3 请求缺失
网站在 Google Chrome 中能正常加载,或 macOS 应用已收到响应,但 Proxyman 中却看不到对应请求。一种可能的原因是 HTTP/3,它使用基于 UDP 的 QUIC,而不是普通 HTTP 代理所处理的 TCP 连接。
- 部分请求能够显示,另一些请求则绕过了抓取。
- 仅安装 Proxyman 证书,无法让 QUIC 流量经过代理。
- Mac 应用也可能忽略系统代理设置。
解决方法: 在 Proxyman 中启用 Network Extension 和 Use HTTP/2。对于支持的连接,扩展会让 HTTP/3 回退到 TCP,这样 Proxyman 就能通过 HTTP/2 抓取请求。
预期结果
- 来自 Chrome 或 Mac 应用的新请求会出现在 Proxyman 中。
- 设置证书信任和 SSL Proxying 后,即可读取 HTTPS 的请求头和正文。
- 协商成功时,HTTP/2 会显示为抓取到的协议。下图中,上游服务器已接受
h2。

此流程会在 HTTP/3 回退到 HTTP/2 后抓取请求,无法解码原生 QUIC 流量。当 HTTP/2 不可用时,也可能回退到 HTTP/1.1。
2. HTTP/3 回退的工作原理
HTTP/3 改变了请求在网络中的传输方式,但它仍然承载熟悉的 HTTP 数据,例如 URL、请求头和响应正文。HTTP/3 标准描述了 QUIC 连接失败时回退到基于 TCP 的 HTTP 的做法。
抓取过程如下:
- Chrome 或应用尝试通过 UDP 端口 443 上的 QUIC 建立连接。
- 对于 Proxyman Network Extension 处理的流量,该连接会被拒绝。
- 支持回退的客户端会改为建立 TCP 连接。
- 启用 Use HTTP/2 后,Proxyman 可以协商 HTTP/2 并显示通信过程。
这样就可以调试 API 数据、登录请求和服务器错误。由于传输方式已改变,排查 HTTP/3 时序或 QUIC 特有的问题时,请使用原生的 QUIC 抓包工具。
3. 开始之前
- 使用 macOS 26 或更高版本。
- 安装最新的 Proxyman for macOS 直接下载版。
- 使用 Network Extension 需要 Proxyman PRO。该扩展目前为 BETA 版,默认关闭,且在 Setapp 中不可用。
- 请使用支持 TCP 回退的网站或应用。仅支持 HTTP/3 的客户端无法使用此方法。
本指南适用于在 Mac 上运行的应用。iPhone 和 Android 设备需要单独设置抓取。
4. 安装并启用 Network Extension
- 打开 Proxyman → Settings → Network Extension。
- 开启 Enable Network Extension。
- 如果出现 Install and Enable,请点击它。

- 打开 System Settings → General → Login Items & Extensions。
- 在 Extensions 下,选择 By Category → Network Extensions。

- 启用 Proxyman,然后在 macOS 询问是否添加网络配置时点击 Allow。

- 返回 Proxyman,等待它显示正在抓取本地应用 HTTP 和 HTTPS 流量的提示。
Network Extension 指南包含完整的安装步骤。抓取期间请保持 Proxyman 处于打开状态。
5. 在 Proxyman 中启用 HTTP/2
- 打开 Proxyman → Settings → General。
- 在 Proxy 部分开启 Use HTTP/2。
- 修改设置后发起的新请求才会生效,现有连接会被关闭。

Proxyman v26.0.0 起支持 HTTP/2,默认关闭。HTTP/2 指南介绍了协议协商和回退机制。
设置 HTTPS 流量检查
- 打开 Certificate → Install a Certificate on this Mac…。
- 选择 Automatic Mode,确认安装,并检查是否显示 Installed & Trusted。
- 为要检查的应用或域名启用 SSL Proxying。你可以在侧边栏中右键点击它来启用。
- 重复该请求,使 Proxyman 能抓取解密后的内容。
如果尚未设置证书信任,请参阅 macOS 证书指南。Network Extension 负责转发连接,证书信任则让 Proxyman 能读取 HTTPS 内容。
6. 抓取 Google Chrome 或 macOS 应用的流量
Google Chrome
- 使用 ⌘Q 完全退出 Chrome,然后重新打开,以建立新连接。
- 访问要调试的网站,并重复触发请求的操作。
- 在 Proxyman 中,于侧边栏选择 Chrome 或目标域名。
- 选择某个请求,即可查看其请求头、查询参数、正文和响应。
- 如果刷新页面没有发出新请求,请打开 Chrome DevTools,选择 Network → Disable cache,并在 DevTools 保持打开的状态下刷新页面。
macOS 应用
- 启用 Network Extension 后,退出并重新打开应用。
- 触发一次网络操作,例如刷新列表或加载个人资料。
- 在 Proxyman 中选择该应用或其 API 域名。
- 查看响应状态和正文,了解服务器返回的内容。
应用仍需信任 Proxyman 证书。即使回退正常工作,证书固定(Certificate Pinning)或独立的信任存储也可能阻止 HTTPS 检查。
7. 验证抓取到的 HTTP 版本
- 检查应用与 Proxyman 之间连接的请求 HTTP 版本。
- 在 Request 面板中打开 Connection Log,查看 Proxyman 与服务器之间的连接。
- 查找
ALPN: server accepted h2,以确认上游使用 HTTP/2。 - 检查最终接受的协议。仅提供包含
h2的列表并不能作为确认依据。
这两段连接可以使用不同的 HTTP 版本。如需帮助解读结果,请参阅 Connection Log 指南。
8. 排查请求缺失问题
- 没有任何显示: 检查 Network Extension 是否处于活动状态、录制是否已开启,以及过滤器是否隐藏了请求。然后重启目标应用。
- HTTPS 内容仍然是加密的: 确认证书已被信任,并为实际的 API 域名启用 SSL Proxying。该域名可能与网站域名不同。
- 抓取到的是 HTTP/1.1: 检查 Use HTTP/2 设置后重试。客户端和服务器各自的连接都必须支持 HTTP/2。
- 应用无法连接: 检查证书错误,并确认该应用是否要求 HTTP/3 且不支持 TCP 回退。
- 自定义 QUIC 服务缺失: 此回退仅处理 UDP 443 端口。其他端口上的 QUIC 不在本流程范围内。
完成后,请在 Proxyman 设置中关闭 Enable Network Extension,以停止通过该扩展进行抓取。
相关文章
