抓包是开发者日常调试最常用的手段之一。市面上工具不少,但每个工具的定位和适用场景差异很大,选对工具能省不少时间。
Charles:最普及的代理抓包工具
Charles 是 HTTP/HTTPS 抓包里用户量最大的工具。优势是上手简单------Mac 上装好、手机配代理、装证书,几分钟就能看到请求列表。支持 Breakpoint 拦截修改请求、Repeat 重放、Map Local/Remote 做请求映射。SSL Proxying 配置好域名后 HTTPS 也能解密。
Charles 的局限主要体现在几个场景:遇到 SSL Pinning 时代理证书会被客户端拒绝,只能看到握手失败的记录;不认系统代理的应用流量收不到;HTTP/3 和 QUIC 支持不足;在 Windows 上的证书配置流程比 Mac 复杂一些。
Fiddler:Windows 生态的抓包主力
Fiddler 在 Windows 上使用广泛,核心优势是 FiddlerScript------用 C# 写脚本自定义请求和响应处理,适合自动化测试场景。支持断点调试和请求构造。内置了性能分析面板,可以看到请求耗时和带宽占用。
Fiddler 的短板也很明显:macOS 只有功能有限的 Beta 版,主力还是 Windows;HTTPS 解密需要手动配证书,步骤比 Charles 多;界面偏旧,数据量大时筛选不够顺手。
TraceEagle:覆盖更多边界场景
TraceEagle 和前面几款工具的思路不同。它在代理抓包的基础上补了其它工具的盲区:不认系统代理的应用可以通过网卡直抓或应用内取流捕获;SSL Pinning 场景不需要在中间换证书,直接从应用内部取明文;HTTP/3 和 QUIC 支持降级抓取、保真透传和真正解密三种方式。
流量抓到之后的链路也更完整------同一界面打断点改请求、右键压测看 p99 尾延迟、逐行对比差异、反推 OpenAPI 文档。支持 iOS 免越狱、Android 免装证书抓包,在 Windows、macOS、Linux 上都能运行。
Wireshark:最全的协议分析器
Wireshark 在协议分析的深度上没有对手,支持上千种协议解析。过滤器表达式强大,可以组合源 IP、端口、协议等条件定位特定流量。排查 TCP 重传、TLS 握手细节时是标准工具。
Wireshark 抓移动端 iOS 流量需要 Mac 上的 rvictl 命令创建虚拟接口,Windows 上没法直接用。而且 Wireshark 不负责 HTTPS 解密------需要另外导密钥。日常接口调试层面,Wireshark 的操作链路比代理工具长。
Proxyman:macOS 上的现代选择
Proxyman 是最近几年 macOS 上比较流行的抓包工具。界面比 Charles 和 Fiddler 现代,请求筛选和过滤规则的可视化配置更直观。支持按域名分组、高级搜索、脚本扩展。SSL Pinning 场景下可以通过安装根证书配合 iOS 的 SSL Kill Switch 解决。
Proxyman 的局限在于只支持 macOS,Windows 用户用不了。HTTP/3 的支持也有限。深度分析能力和脚本灵活性不如 Fiddler。
选择建议
日常调试简单的 HTTP 接口,Charles 或 Proxyman 够用。Windows 环境且需要脚本能力的场景选 Fiddler。深挖 TCP 协议层必须用 Wireshark。项目里碰到证书绑定、HTTP/3、私有协议这些边界场景时,工具链里加一个 TraceEagle 补齐盲区。