使用 HTTP Toolkit 检查 HTTPS 请求
当你的 API 调用静默失败或身份验证无故中断时,浏览器开发者工具往往力不从心。你需要看到应用程序实际发出的加密流量。HTTP Toolkit 正好提供了这种能力——一种直接拦截 HTTPS 流量并检查网络上真实传输内容的方法。
本文介绍 HTTP Toolkit 如何作为本地代理工作、你需要了解的协议支持情况,以及前端开发者用于调试 HTTPS 请求的实用工作流程。
核心要点
- HTTP Toolkit 作为中间人代理运行,通过使用受信任的根证书颁发机构来解密 HTTPS 流量。
- 该工具完全支持 HTTP/1.1、HTTP/2 和 WebSocket 拦截,HTTP/3 会回退到早期协议。
- 浏览器拦截通过预配置实例自动工作,而移动端和桌面应用需要手动配置代理和证书。
- 除了被动检查,HTTP Toolkit 还允许你设置断点、修改请求,并在不更改后端的情况下测试不同的 API 响应。
HTTP Toolkit 如何作为 MITM 代理工作
HTTP Toolkit 作为中间人(MITM)代理运行。它位于你的客户端(浏览器、移动应用或桌面应用程序)和服务器之间,拦截所有通过的流量。
对于 HTTP 流量,这很简单。HTTPS 检查需要额外的步骤:信任 HTTP Toolkit 生成的根证书颁发机构(CA)。当你信任此证书时,该工具可以解密 TLS 流量,以可读形式显示它,然后在转发到目标服务器之前重新加密。
对于通过 HTTP Toolkit 启动的浏览器,证书信任会自动进行。对于其他应用程序,你需要手动配置代理设置并安装证书。
协议支持和限制
HTTP Toolkit 完全支持 HTTP/1.1 和 HTTP/2 拦截。这些协议涵盖了绝大多数前端调试场景。
HTTP/3(QUIC)则是另一种情况。当客户端通常会使用 HTTP/3 时,HTTP Toolkit 会强制回退到 HTTP/2 或 HTTP/1.1。原生 QUIC 拦截尚不可用。对于大多数前端调试工作,这个限制很少产生影响——无论使用何种传输协议,请求和响应数据都保持相同。
该工具还处理 WebSocket 连接,让你可以在标准 HTTP 流量旁边检查实时通信。
连接浏览器和应用
浏览器拦截
最简单的工作流程从 HTTP Toolkit 的仪表板开始。点击浏览器选项(Chrome、Firefox 或 Edge),HTTP Toolkit 会启动一个已配置好代理设置和证书信任的预配置实例。
来自该浏览器窗口的每个请求都会出现在 HTTP Toolkit 的 View 标签页中。你可以看到完整的请求——方法、URL、请求头和请求体——以及完整的响应。
移动应用流量
移动端调试需要更多设置。对于 Android 设备,你有几个选项:
- ADB 连接:通过 USB 连接设备,让 HTTP Toolkit 配置它
- 手动代理:配置设备的 WiFi 设置以通过 HTTP Toolkit 路由
- 已 Root 设备:在系统级别安装证书以获得更广泛的覆盖
Android 的安全模型在这里会产生阻力。针对 Android 7+ 的应用只有在明确配置时才会信任用户安装的证书。许多应用完全忽略用户 CA 证书,这意味着你只能看到那些没有限制证书信任的应用的流量。
证书固定(Certificate pinning)增加了另一层障碍。固定特定证书的应用会拒绝 HTTP Toolkit 的证书,无论系统信任设置如何。存在一些解决方法(Frida 脚本、已 Root 设备的系统 CA 安装),但它们超出了 HTTP Toolkit 的核心功能范围。
Discover how at OpenReplay.com.
桌面应用程序
对于 Electron 应用和其他桌面软件,需要配置应用程序使用 HTTP Toolkit 作为其代理。具体方法因应用程序而异——有些遵循系统代理设置,其他则需要环境变量或命令行标志。
查看和修改流量
一旦流量通过 HTTP Toolkit,View 页面会显示每个被拦截的交互。界面分为请求列表和详细信息面板。
详细信息面板将每个交互分解为可折叠的部分:请求头、请求体、响应头、响应体和时序信息。请求体内容会根据内容类型自动格式化——JSON 获得语法高亮,压缩的 JavaScript 会展开以提高可读性。
对于前端调试,最有用的功能包括:
- 过滤:缩小到特定主机、方法或状态码
- 搜索:按 URL 模式或内容查找请求
- 导出:生成 fetch、axios、curl 和其他格式的代码片段
除了被动检查,HTTP Toolkit 还支持断点和规则。你可以在请求到达服务器之前暂停它们,修改请求头或请求体,然后转发修改后的请求。这有助于测试应用程序如何处理不同的 API 响应,而无需更改后端代码。
实用的前端调试工作流程
使用 HTTP Toolkit 进行 HTTPS 检查在以下几种场景中表现出色:
- 身份验证调试:检查令牌请求头、Cookie 值和 OAuth 流程
- API 集成问题:准确查看应用发送的有效负载与服务器期望的内容
- 第三方脚本分析:监控分析和广告脚本传输的内容
- CORS 故障排除:检查预检请求和响应头
该工具捕获浏览器开发者工具可能遗漏的流量——来自 Service Worker 的请求、后台获取或检测开发者工具是否打开的脚本。
结论
HTTP Toolkit 为前端开发者提供了跨浏览器、移动应用和桌面应用程序的可靠 HTTPS 检查。证书信任要求实现了解密,而 HTTP/3 的回退行为确保了与现代基础设施的兼容性。对于调试 API 调用、身份验证流程和网络行为,它提供了仅靠浏览器工具无法匹配的可见性。
常见问题
针对 Android 7 及更高版本的应用只有在其网络安全配置明确允许时才会信任用户安装的证书。许多应用将证书信任限制为系统证书或使用证书固定,这会拒绝任何与其预期值不匹配的证书。对于这些应用,你可能需要一个已 Root 的设备并进行系统级 CA 安装。
HTTP Toolkit 不原生拦截 HTTP/3(QUIC)流量。相反,它会强制客户端回退到 HTTP/2 或 HTTP/1.1。对于大多数调试目的,这种回退是透明的,因为无论底层传输协议如何,请求和响应数据都保持不变。
可以。HTTP Toolkit 支持断点和规则,允许你暂停请求、修改请求头或请求体内容,并转发修改后的请求。你还可以拦截响应并在它们到达应用程序之前更改它们,这对于测试错误处理和边缘情况很有用。
HTTP Toolkit 捕获开发者工具可能遗漏的流量,包括来自 Service Worker 的请求、后台获取以及检测开发者工具是否打开的脚本。它还可以跨浏览器、移动应用和桌面应用程序工作,提供来自多个来源的所有网络流量的统一视图。
Understand every bug
Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.