做前端调试接口时卡在「明明改了返回值,页面却没变」;后端排查线上请求异常,日志里找不到真实入参;安全测试想看看某款 App 怎么传 token——这些场景,绕不开一个动作:抓包。
别被「高级」吓住,先搞清你要抓什么
HTTP/HTTPS 流量?TCP 层原始数据?还是移动端 App 的加密请求?不同目标,ref="/tag/175/" style="color:#479099;font-weight:bold;">工具差别很大。Wireshark 能看到网卡上每一帧,但看不懂微信小程序的 JSON;Fiddler 解密 HTTPS 很方便,却没法直接分析 UDP 协议;Charles 界面清爽适合 Mac 用户,但 Windows 上偶尔抽风;mitmproxy 命令行起手,写个 Python 脚本就能自动过滤敏感字段,可新手得啃文档。
Wireshark:协议分析的「显微镜」
装完打开就是满屏十六进制和协议树,看着劝退,但真遇到 DNS 劫持、TCP 重传、ARP 异常,它几乎是唯一能准确定位的工具。比如公司内网某台打印机老是连不上,用 Wireshark 抓局域网广播包,一眼看出它反复发 DHCP Discover 却收不到 Offer——问题立马锁定在 DHCP 服务器配置上。
启动命令(Windows):
wireshark.exe -i "以太网" -f "host 192.168.1.100"
Fiddler Everywhere:Windows 用户的「开箱即用」之选
界面左侧会话列表、右侧请求头/响应体/时间线一目了然。勾选「Decrypt HTTPS traffic」,再装个 FiddlerRoot 证书,连微信内置浏览器的请求都能看清。某次帮朋友查「为什么淘宝 H5 页面登录态失效」,直接过滤 login 关键字,发现 Cookie 中 cookie2 字段被截断——原来是某中间代理服务配置了错误的 header 长度限制。
Charles:Mac 上的「安静高手」
没有弹窗、不抢焦点、支持 Map Local 快速模拟接口返回。做 App 灰度测试时,把线上 /api/v2/user 映射成本地 JSON 文件,改两行就验证新 UI 行为,比等后端部署快得多。不过要注意:它的 SSL Proxying 在 macOS Sequoia 后需手动开启「完全磁盘访问」权限,否则抓不到 Safari 流量。
mitmproxy:自动化抓包的「瑞士军刀」
命令行下跑着一个实时流量面板,按 q 退出,Enter 查看详情。更实用的是它的脚本能力。比如想自动屏蔽所有广告请求:
def request(flow):
if "adtech" in flow.request.host or "doubleclick" in flow.request.host:
flow.response = http.Response.make(204)
保存为 adblock.py,启动时加参数:mitmproxy -s adblock.py。写几行代码,就替代了一个插件。
怎么选?看这三句话
要查网络层丢包或协议异常 → 选 Wireshark;
主要调 Web 接口,Win 系统,想省事 → 选 Fiddler Everywhere;
用 Mac、常做移动调试、喜欢干净界面 → Charles 更顺手;
需要批量处理、写规则、集成进 CI 或长期监控 → mitmproxy 是真·生产力工具。