抓包工具功能对比,TraceEagle、Charles、Fiddler、Wireshark、mitmproxy 差别

之前调接口一直用 Charles,配好代理和证书,Rewrite 和断点都用得挺顺。直到有次要在 Windows 上抓一个做了证书绑定的 iOS App,代理这边一条请求都不出来;换 Wireshark,TLS 握手看得见,里面全是密文。那天我才把常用的几款工具按能力拆开看了一遍。这篇抓包工具功能对比不打分,一项一项说清楚:抓取、解密、协议、改包、重放、抓完之后的处理,各自卡在哪。

一、抓取范围:代理、网卡、应用内,各能看到哪一层?

代理型是 Charles、Fiddler、Proxyman、mitmproxy 这一路。设备或程序干脆把流量指到工具端口,装好证书,请求在工具里就是结构化的报文,改起来方便。前提也清楚:程序得认代理,证书得被信任。Rust 写的 CLI、部分客户端、系统服务绕过代理时,列表就是空的;DNS、QUIC 这类不跑代理端口的流量,也进不来。

网卡型是 Wireshark、tcpdump 那一路。从网卡上抄一份,覆盖面确实最大,DNS、ICMP、ARP、任意 TCP/UDP 都在。代价是原始字节:TLS 一加密就是密文,而且它只知道 IP 和端口,不知道是哪个进程发的。

TraceEagle 把代理、网卡、应用内三种入口放进同一个工具,另外还有指定程序、系统级抓取和移动设备直连。抓取范围的关键是每一层都有入口,工具多不多反倒次要。

二、HTTPS 解密:证书、密钥、证书绑定,槛差在哪?

代理型解 HTTPS 的标准动作是装根证书。桌面浏览器和很多 CLI 都能配合,证书这关呢,手机比桌面难得多:Android 7 起,targetSdk 24 以上的应用默认不信任用户证书,装进系统层要 root;iOS 要装描述文件,再去设置里信任。App 做了证书绑定,代理证书一递过去就被拒,连个像样的错误都不给(别问我怎么知道的)。

Wireshark 能解 TLS,但前提是你有会话密钥------让客户端吐 SSLKEYLOGFILE,或者有服务端私钥。不是所有程序都愿意吐,也不是所有服务端都给你私钥。

抓包工具功能对比里,解密这一项最容易被说成「谁都能解」。其实门槛在「拿不拿得到那一层的数据」。融合型工具的做法是会话密钥自动匹配,不让你手动导文件;遇到自带信任库的 Java、Python 程序,用证书覆盖;碰到证书绑定,就从应用内部取明文,不在中间换证书。

边界得说清楚:自动解密不是全能钥匙。双向证书绑定、应用层又加了一层自加密的,还是得走应用内取明文那条路;拿不到数据,算法再强也没用。

三、协议覆盖:HTTP/3、WebSocket、gRPC 和非 HTTP,谁接得住?

HTTP/1.1、HTTP/2 是代理型的日常,WebSocket 和 gRPC 也能看,具体支持到什么程度看工具版本嘛。HTTP/3 麻烦一点:QUIC 走 UDP,不经过传统代理端口,代理型要么看不见,要么得把客户端降级回 HTTP/2 再抓。

Wireshark 抓 QUIC 没问题,协议解析一直更新,但解密还是得有密钥。网卡型工具在这里的优势是「看得见」,劣势是「看得见不等于看得懂」。

非 HTTP 的流量------DNS、ICMP、ARP、私有 TCP/UDP 协议------只有网卡型接得住。Wireshark 的协议解析器库最全,tcpdump 在服务器上先落成 pcap 再拉回来看,比较稳吧。融合型工具在网卡层做逐包直抓,再配自定义解码器给私有二进制协议分帧;HTTP/3 有降级、透传、真解三档,真解那档要配合无感代理用。如果只是确认某条请求走没走 H3,看一眼连接用的是 UDP 还是 TCP 就有答案,不用非得把明文解出来。

四、改包能力:规则、断点、脚本,各自适合什么活?

印象里,Charles 的 Rewrite 和 Map Local 是很多人入门时的第一套工具,断点、重放也顺手,界面老派但稳定。Fiddler 的 AutoResponder 做 Mock 方便,FiddlerScript 适合批量改;mitmproxy 用 Python 写 addon,能接 CI,灵活度还挺高,代价是要写代码。

融合型工具把改包分成三层:固定规则做转发、映射、Mock、改头改体;断点负责「当场看一眼再决定」的临时修改;脚本和 HTTP 外呼处理要算签名的动态值。三层按顺序走,规则和脚本先自动处理,断点只处理你特意标记的那部分。固定的用规则,临时判断用断点,要计算的值交给脚本。

五、重放与压测:单条重发和成批压测,差的不是一点

说实话,单条重发和成批压测是两码事。Charles 有 Repeat 和 Advanced Repeat,Fiddler 有 Composer,mitmproxy 能写脚本批量跑;这些都能把一条请求发出去很多次。我原以为重放几次就算压测了,后来发现并发怎么控制、结果怎么看百分位、签名和时间戳每次怎么变,都是另一层问题。

融合型工具把请求构造、单条重放、会话重放和压测放在一条线上。请求里的签名可以用 ${hmacSha256:...} 这类语法现算;会话能按顺序批量重放;单条右键就能开压,恒定 QPS 或并发两种模式,结果给到 p99.9 百分位。压测结果也别只盯平均值,p95、p99 这类尾部数字更容易暴露问题。压测这事得提醒一句:只在自己的测试环境做,别拿线上接口练手。

六、抓完之后:对比、生成代码、反推文档,谁接着干?

抓完之后,工具之间的差别就出来了。代理型工具的主线是「看和改」,请求对比、代码生成、反推接口文档不是它们的核心路径;网卡型工具给你的是包,不是接口,想从流量还原出 OpenAPI,得自己写脚本。

TraceEagle 在这一层收得还挺全:两条请求逐行对比、一条请求转成 cURL、Python、JavaScript、Go、OkHttp、从流量反推 OpenAPI 3.0、主机档案(归属、地理位置、证书 A-F 评级、技术栈)、网络工具箱(DNS 查询、TLS 体检、端口扫描、子域发现、DNS 泄漏检测)。还有 MCP 服务,把 40 多个工具开放给 AI 助手。抓包工具的差别,前面在「拿不拿得到」,后面在「拿到之后还能不能接着干活」。

七、平台与收费:Windows、Mac、手机,怎么组合?

平台和收费也得摆出来。Wireshark 开源免费、三系统都能跑;tcpdump 免费,适合服务器。Charles 跨平台但收费;Fiddler Classic 在 Windows 免费,Everywhere 是另一套付费产品;Proxyman 以 macOS 为主,用起来顺,有免费档也有付费档;mitmproxy 开源,脚本党喜欢。反正我机器上这几个都留着,按当天的活挑。融合型工具走的是全平台免费,手机端 iOS 免越狱、Android 免装证书,整机抓包要 root。团队里 Windows 和 Mac 混用的话,优先挑三系统都能跑的组合,别让某台机器成了流程里的孤岛。价格和授权会变,掏钱前以各家官网为准吧。

八、组合用法:别指望一个工具包打天下

组合用法比单挑更实际。我的习惯是:协议层深挖丢给 Wireshark,日常 HTTP 联调看团队习惯用 Charles 或 Fiddler,CI 里的批量处理交给 mitmproxy,手机 App、证书绑定、非 HTTP 流量这类跨层问题用 TraceEagle。抓包工具功能对比说到底,拼的是能不能接上你手上那一环,功能数量反倒没那么重要。

它也不是全能的:协议解析的广度拼不过 Wireshark,漏洞扫描、攻击面探测那些事它不做,Android 整机抓包要 root。把它当成「抓得到、解得开、改得动」的那一层,和 Wireshark、Charles 这些搭着用,比指望一个工具包打天下靠谱。

真遇到抓不到的问题,顺序大概是这样:先确认流量走没走代理,再确认证书信没信,接着看要不要动网卡或应用层;这些都不行,再考虑改包和压测。工具是接力棒,不是擂台,折腾一圈下来,手边这几样起码能接上就行,组合也不用一步到位,先解决当下抓不到的那个再说。

相关推荐
Flynt1 小时前
AI 写的页面一眼假?有人把"假指纹"写成 62 条规则,不用大模型就能跑
前端·ai编程·claude
kyriewen1 小时前
我把 10 道面试题答案真跑了一遍:6 道是错的
前端·javascript·面试
WebInfra2 小时前
Rspack 2.3 发布:联手 SWC 团队带来全新编译器
前端·javascript·github
小卿噢3 小时前
同样是插 10 万行,最快的写法比最慢的快 103 倍
前端
weixin_417396833 小时前
星级酒店境外电视频道怎么合法接入?合规要点与核对清单
开发语言·前端·php·1024程序员节·综合布线
hiahiahia1233 小时前
Structured Output
前端·人工智能
FRing033 小时前
JavaScript入门到精通三十一(原型继承、原型链)
开发语言·前端·javascript
山雀~5 小时前
CSP 安全漏洞修复
前端·网络协议
陌离5 小时前
Go-Gui:一套 无限接近 现代化UI的 GPU绘制界面组件框架
前端