有一个现象,每次有人问「抓包工具有哪些」,底下给的答案十有八九不是工具名,而是一句「看你要抓什么」。这话没错,但对刚上手的人基本等于没说——工具名字都没认全,怎么知道要抓什么。
所以这篇换个写法:先把常见工具按「解决什么问题」摆出来,再说每个工具的功能,结尾给一条能直接照着走的选法。先说明一点,这些工具我在不同阶段都用过,哪个也不是全能的,别指望一款工具把包分析、接口调试、自动化全包了。
| 你要解决的问题 | 先试哪个 | 它的位置 |
|---|---|---|
| 看协议细节、握手、重传、DNS / QUIC | Wireshark | 包分析的主场 |
| 服务器上没有图形界面 | tcpdump | 先落成 pcap,再拉回来分析 |
| 调 HTTP / HTTPS 接口、改请求、断点 | Charles / Fiddler / Proxyman | 代理层的 API 调试 |
| 批量处理、接 CI、写自定义逻辑 | mitmproxy | 用脚本换灵活度 |
| 只在当前网页看请求 | 浏览器 DevTools | 零安装,范围也限于这个页面 |
| 手机 App、证书绑定、非 HTTP 流量 | TraceEagle | 代理、网卡、应用层三种抓法收在一处 |
工具没有高下,只有合不合手嘛。挨个说说。
Wireshark 是包里最细的那一层。协议分层树、过滤器、跟踪 TCP 流、看握手和重传,这些它做得最完整。排查「包到底有没有到」「为什么一直重传」「QUIC 为什么没降级」这类问题,绕不开它。
常用的过滤条件也就那几条,
ip.addr == 10.0.0.5、
tcp.port == 443、
http.request,记不住就从右键菜单里生成。学习成本主要在过滤器语法上,真正常用的其实不多。
它也有脾气呢。想看 TLS 里面的内容,得有会话密钥——要么让客户端把密钥吐出来(SSLKEYLOGFILE 这类),要么有服务端私钥,不是所有程序都配合。它的视角是包,不是接口:想改一条响应、Mock 一份数据,那不是它的活。
tcpdump 解决的是另一个问题:服务器上没有桌面环境。ssh 上去跑一条
tcpdump -i eth0 -w capture.pcap(网卡名按实际换),抓完把文件拉回本地,用 Wireshark 打开。抓的时候尽量把范围收窄,只抓某个端口或某个主机,别一上来就全量,文件会大得吓人。这两个搭着用的场景,比很多人想的要多。
这一类的共同点是代理:把设备或程序的流量指到工具上,装好证书,HTTPS 就能解成明文。日常调接口、看请求参数、改个响应体,基本都在这一层。
Charles 是很多人入门时用的第一款。断点、Rewrite、Map Local、限速这些功能都有,界面是老派的树形结构,用久了倒也顺手。它的 Rewrite 和 Map Local 是招牌,改响应、把线上域名指到本地,都是点几下的事。收费。
Fiddler 的 Classic 版在 Windows 上免费,脚本能力是它的特色,AutoResponder 做 Mock 也方便。跨平台的 Everywhere 版是另一套产品,要付费。
Proxyman 在 macOS 上的体验很顺,界面清爽,抓手机流量的引导做得细,证书安装按提示点就行。同样是收费工具。
三者还有个共同门槛:抓 HTTPS 要装证书,证书还得装到真正发请求的那台设备上。电脑上抓浏览器和抓手机,证书的位置是两回事,第一次配的时候最容易在这卡住。
差别主要在平台、界面和脚本能力上,能力大方向是一致的。选哪个,看你日常用哪台机器、团队里别人用什么,以及愿不愿意为体验付费吧。
mitmproxy 是开源的那一路,Python 写 addon,控制台和 Web UI 都有,能批量处理、能重放、能无头跑在 CI 里。
代价是要写代码。你就想改个响应头,用它就有点杀鸡用牛刀;但你有一批流量要按业务规则处理、或者想把抓包接进自动化流程,它的灵活度是图形工具给不了的。它的控制台界面是键盘操作,第一次用会有点不适应,习惯之后效率挺高。它没有图形化的请求列表那么直观,但脚本能做的事多得多。
够,也是最快的。F12 打开 Network,请求、响应、耗时、Copy as cURL 都在,还能模拟慢网。装都不用装。
调试跨域、看 preflight、检查缓存有没有命中,DevTools 也是最直接的。想临时改个响应,Chrome 的 Local Overrides 也能顶一下,但只管当前浏览器。
局限也清楚:只覆盖当前浏览器里的这个页面。原生 App、别的设备、命令行程序,它都够不着;想持久化地改响应,也不方便。
上面几类工具的分工,大致是按「抓哪一层」划的。 TraceEagle 的思路不太一样:它把三种抓法放进同一个工具里。
代理抓包负责 HTTP 这一层,规则驱动的解密代理能处理 HTTP/1.1、HTTP/2、HTTP/3、WebSocket、gRPC,也能改写和重放。网卡直抓负责整机流量,DNS、QUIC、ICMP、ARP、任意 TCP / UDP 都能看,还带协议分层树和连接追踪。应用层抓包则直接从程序内部取明文,不装证书、不配代理,做了证书绑定也能拿到内容。
自动解密是它省事的一块。不用手动导密钥、不用配环境,挑一种抓法开始,会话密钥自动匹配,原始包和解密后的明文并排看。
手机端也不用另起一套:iOS 免越狱,Android 免装证书(整机抓包需要 root)。抓完之后的事情也没落下——断点、Mock、重放、请求对比、生成代码、反推 OpenAPI、弱网模拟、主机详情、网络诊断,都在同一个界面里。还有内置的 MCP 服务,能让 AI 助手直接调抓包能力。
三种抓法可以同时开,按场景组合;多个会话之间是隔离的,各看各的,不会搅在一起。
取舍也得说。它不是 Wireshark 的替代品,协议层的深度分析还是 Wireshark 更专;也不是安全测试平台,漏洞扫描、攻击面探测那些事它不做。它解决的是「抓得到、解得开、改得动」这条日常链路,全平台免费。
平台也是个现实因素。公司配的是 Windows,Charles、Fiddler 都能跑;团队清一色 Mac,Proxyman 的体验会更顺;要跨平台又不想花钱,mitmproxy 这类开源工具更合适。
工具的分工不是按名气排的,是按「你要看哪一层、要改到什么程度」排的。
真实项目里也很少只用一个工具。常见的组合是:先用代理工具把接口层看清楚,抓到的包需要深挖协议时转给 Wireshark;CI 里的批量校验交给 mitmproxy 或者命令行工具。工具之间能接上,比单挑一个全能选手更实际。
「抓包工具有哪些」这个问题,真正难的不是记住名字,是知道自己卡在哪一层。先判断是包的问题、接口的问题,还是 App 内部的问题,再挑工具,基本不会走偏啊。
手边要是已经有顺手的工具,就先用它把问题定位出来;定位之后发现它够不着,再换。折腾工具本身,其实挺容易上瘾的,别本末倒置就好。工具用得顺手,问题解决得就快;为了用工具而用工具,反而绕远。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70051062/viewspace-3186382/ ,如需转载,请注明出处,否则将追究法律责任。