抓包工具怎么选?Charles、Wireshark等五款工具对比与实战指南 干客户端、做前后端联调、排接口性能问题这么多年抓包工具一直是我电脑里换得最勤的一类软件。从最早在 Windows 上用 Fiddler到后来切到 macOS 用 Charles再到现在把 Wireshark 当作排查底层问题的“显微镜”最近又看到 TraceEagle 这种新工具冒出来感触挺深市面上的抓包工具实在太多了但真正难的不是“会装一个”而是知道在什么场景下该用哪一个以及遇到抓不到包、解不了密、包被截断这类问题时该怎么处理。这篇文章把 Charles、TraceEagle、Wireshark、Fiddler 和 Proxyman 这五款工具放到一起聊。我不打算做那种“每个工具介绍三分钟”的浅尝辄止而是按我真实的使用顺序把每个工具的配置要点、原理、坑和排查思路都讲透尤其是手机抓包、HTTPS 解密、弱网模拟、包长截断这几个经常被问到的问题。适合刚入门想选第一个工具的开发者也适合已经在用但总在某个环节卡住的人。1. 先想明白五款抓包工具分别解决什么问题很多人选抓包工具的方式是“看哪个火就用哪个”结果装了一堆手机抓不到包就换下一个始终没有形成自己的工具组合。实际上这五款工具并不完全是同类竞品它们的核心差别是站在网络的不同层级工作先理解了这一点后面所有配置都不会再让你觉得混乱。1.1 按工作层级划分网络底层和应用层先打个比方。Wireshark 像整条公路上的监控系统能看到路上跑的所有车辆、车牌、速度、是否违章甚至能还原事故发生时的完整现场。而 Charles、Fiddler、Proxyman、TraceEagle 更像快递中转站的拆包员它们只对视你的业务流量关心的是“这个 HTTP 请求带了什么头、响应体是什么、状态码是不是 500”。也就是说Wireshark 工作在网卡层抓的是网卡上经过的所有数据包能看到 TCP 握手、TLS 协商、DNS 查询这些底层内容也能看到非 HTTP 协议比如数据库协议、自定义 TCP 协议。Charles、Fiddler、Proxyman、TraceEagle 本质是一个 HTTP/HTTPS 代理手机或浏览器把请求交给它它转发给服务器再把响应返回给客户端。它天然只处理代理流量所以界面更友好、操作更聚焦适合调试接口。这个层级差异决定了它们谁也无法完全替代谁。你在做后端接口联调时用代理工具就够了但遇到“TCP 连接频繁断开”“接口偶尔超时但后端说没收到请求”这类诡异问题最终都得靠 Wireshark 来还原整条链路的报文交互。1.2 按使用平台和场景选择Windows、macOS 与移动端除了层级差异平台偏好也很重要。如果你主力机是 WindowsFiddler Classic 就非常顺手免费、功能全面、弱网模拟开箱即用。如果你用的是 macOS尤其还经常抓 iPhone 的包那 Charles 和 Proxyman 的体验会更好证书安装、代理配置都比 Fiddler 顺畅。Wireshark 则是全平台通用Linux 服务器上排查网络问题时几乎是唯一选择。场景上我做移动端 App 联调时最常用 Charles 或 Proxyman因为它们对 iOS 的证书信任流程支持得特别好而且 Map Local、Breakpoints 这类 Mock 功能齐全前端在接口没开发完时也能继续推进。Fiddler 更适合 Windows 环境下的 Web 调试和弱网测试。TraceEagle 作为新工具移动端优先、轻量级适合新项目组快速上手也适合做安全方向的同学日常分析流量。1.3 一张表看五款工具定位差异工具工作方式默认端口核心优势主要限制适合人群CharlesHTTP 代理8888Mock 与 Breakpoints 强大移动端支持好商业付费Mac 上偶有内存问题前端、移动端、接口联调Fiddler Classic系统代理8888免费弱网模拟简单脚本扩展强仅 WindowsWindows 环境 Web 调试、QAWireshark网卡抓包无固定端口底层协议分析全面可解密 TLS学习曲线陡看不惯数据包就不懂网络工程师、后端、安全分析ProxymanHTTP 代理9090macOS 原生体验好证书管理清晰用户基数小于 CharlesmacOS/iOS 生态开发者TraceEagleHTTP 代理可自定义轻量、移动端优先、新特性多教程少生态还在积累移动团队、安全测试新手这张表不是告诉你“谁最好”而是告诉你“谁最适合你当前的处境”。工具没有全能冠军选型错了后面折腾一天都抓不到包真不是工具不行是没站对层级。2. Charles前端与移动端调试的“主力选手”Charles 是我用了最久、也最推荐作为“第一把交椅”的抓包工具。它对 HTTPS 的解密流程做得比较顺手机抓包、Mock 数据、断点修改这些高频需求都有对应功能而且跨平台支持很好Windows 和 macOS 都能用。下面这套配置流程我实打实跑了很多遍照着做基本不会翻车。2.1 安装、证书与手机代理一步步配好第一步是下载安装。Charles 官方提供了 Windows、macOS、Linux 三个平台的安装包Mac 装 dmgWindows 装 exe正常下一步即可。装完默认代理端口是 8888这个端口后面处处要用先记住。第二步是电脑端配置。打开 Charles 后先确认代理开关是开启状态菜单栏 Proxy - Proxy Settings勾选 HTTP ProxyPort 保持 8888 不变。然后配置 SSL Proxying在 Proxy - SSL Proxying Settings 里勾选 Enable SSL Proxying点击 Add 添加一条规则Host 填 *Port 填 443表示对所有 HTTPS 流量都做解密。很多人抓不到 HTTPS 包八成就是漏了这一步。第三步是手机连接。手机和电脑必须连同一个 Wi-Fi然后查电脑的局域网 IPWindows 用 ipconfigmacOS 用 ifconfig en0 看 inet 那一行。手机进入 Wi-Fi 设置把代理改为手动服务器填电脑 IP端口填 8888保存后打开任意网页Charles 里就应该开始刷请求了。第四步是安装并信任证书。电脑端安装证书比较简单Help - SSL Proxying - Install Charles Root Certificate装完在钥匙串里把 Charles Proxy CA 设为始终信任。手机端用 Safari 访问 chls.pro/ssl 下载证书iOS 下载完还需要去“设置 - 通用 - 关于本机 - 证书信任设置”里把完全信任打开这一步漏了HTTPS 流量依然解不开。Android 的高版本有个额外坑Android 7.0 之后App 默认不信任用户安装的证书只有 debug 包或自己写了 networkSecurityConfig 的包才能被抓到 HTTPS 明文。如果你在 Android 上抓不到包先确认这个 App 是不是允许用户证书而不是一味地怪 Charles。2.2 手机抓不到包的六类高频原因排查手机连不上、抓不到包是 Charles 最常见的求助问题。根据我看到的和实际遇到的基本上逃不出下面这几类现象可能原因处理办法手机完全没流量代理 IP 填错或端口不是 8888重新核实电脑 IP确认代理端口只有 HTTP 能抓HTTPS 看不到内容未开启 SSL Proxying 或证书未信任检查 SSL Proxying 规则重装证书iOS 能下载证书但提示未受信任未打开证书完全信任设置 - 通用 - 关于本机 - 证书信任设置Android 抓不到 HTTPS 明文App 默认不信任用户证书用 debug 包、改 networkSecurityConfig所有请求都转向超时电脑防火墙拦截了 8888放行 8888 端口或临时关闭防火墙能抓网页但抓不了某个 AppApp 做了代理检测这类情况属于反向对抗正常调试一般不会遇到排查思路有一个原则先看手机浏览器能不能正常上网再看 Charles 里有没有请求进来最后才去看 HTTPS 解密和证书问题。层级递进别一上来就怪证书。2.3 用 Charles 做本地 MockMap Local 与 Breakpoints联调时最怕后端接口还没好或者偶尔挂掉Charles 的 Map Local 和 Breakpoints 能很好解决这个问题。Map Local 的本质是把某个 URL 的请求直接映射到你本地文件Charles 不会再发请求到服务器而是把你指定的文件内容当作响应返回。操作是右键某个请求选择 Map Locally然后在弹窗里选择本地 JSON 或文本文件路径填好Charles 就会用文件内容来响应。这里有个细节本地文件的 Content-Type 要和接口约定一致否则客户端解析会报错比如接口约定返回 application/json你给一个纯文本文件客户端就可能拿到字符串解析失败。Breakpoints 则是更“暴力”的玩法。右键请求选择 Enable BreakpointCharles 在请求发出去之前和响应返回之后会拦截住你可以手动改请求头、改请求体、改响应状态码和响应内容然后继续转发。我经常用它来模拟后端返回异常比如把登录接口的响应 code 改成 500测试前端异常分支写得对不对。Mock 数据在前后端并行开发时尤其好使前端先按约定字段造一份返回界面开发完全不受后端进度影响。2.4 弱网模拟与限速配置弱网测试最常用的功能在 Proxy - Throttle Settings。勾选 Enable Throttling 后可以设置上行带宽、下行带宽、延迟、MTU、丢包率等参数。Charles 自带了一些预设比如 3G、4G、宽带直接选预设再微调延迟就能模拟。实际测试中我常用这么一组参数下行带宽 300 kbps上行带宽 150 kbps延迟 800 ms丢包率 1%。用于模拟一个比较差的移动网络看 App 的超时重试逻辑是否正常。弱网模拟的价值不只是“看慢不慢”更重要的是验证客户端在超时、卡顿、半连接状态下不会崩溃或卡死比如图片加载失败是否有占位图、请求超时是否有提示、下载中断能否续传。3. FiddlerWindows 生态里的老牌 HTTP 抓包管家Fiddler 是老牌 HTTP 调试代理尤其在做 Windows 端 Web 开发和接口调试时非常趁手。它的版本有点历史包袱Classic 版免费但只有 WindowsEverywhere 版跨平台但需要订阅。我先把这个版本问题说清楚再讲配置和最容易踩的坑。3.1 Fiddler Classic 与 Everywhere 怎么选Fiddler Classic 是最经典的免费版本仅支持 Windows功能非常完整抓包、断点、弱网模拟、脚本扩展都有依赖 .NET Framework安装包也不大。Fiddler Everywhere 是后来出的跨平台商业版支持 Windows、macOS、LinuxUI 更现代但需要登录和订阅。我的建议很直接Windows 单机开发者直接用 Classic免费且稳定如果你需要在 macOS 上用 Fiddler 或者想要团队协作功能再考虑 Everywhere否则没必要为订阅付费。3.2 系统代理原理与 HTTPS 解密配置Fiddler 的核心机制是把自己注册成系统代理。打开 Fiddler 后它会修改 Windows 的 WinINET 代理设置让本机浏览器和部分应用的网络请求都走 Fiddler再通过它转发到真正服务器。这也是为什么很多人卸载 Fiddler 后出现“上不了网”的问题原因我们后面专门讲。配置 HTTPS 解密的路径是Tools - Options - HTTPS勾选 Capture HTTPS CONNECTs 和 Decrypt HTTPS traffic。首次勾选后 Fiddler 会生成自己的根证书 Fiddler Root Certificate并询问是否要把它安装到系统受信任根证书里选择“是”。这时 Fiddler 就能以中间人方式解密 HTTPS 流量。如果是手机抓包手机浏览器访问 http://电脑IP:8888在 Fiddler 的页面里找到 Fiddler Root Certificate 下载安装。Fiddler 的默认监听端口是 8888如果你同时开了 Charles两个工具会抢同一个端口必须只保留一个。3.3 弱网测试、请求重放与 AutoResponderFiddler 做弱网测试非常方便菜单 Rules - Performance - Simulate Modem Speeds 一键模拟 56k 调制解调器网络当然这个网速太夸张日常测试时我更推荐用脚本自定义延迟。打开菜单 Rules - Customize Rules在 OnBeforeRequest 函数里插入一段代码给每个请求加上延迟if (oSession.HostnameIs(api.example.com)) { oSession[request-trickle-delay] 500; oSession[response-trickle-delay] 800; }这段代码的意思是发往 api.example.com 的请求请求发送延迟 500 毫秒响应接收延迟 800 毫秒。保存后脚本立即生效不用重启 Fiddler比默认的调制解调器模拟灵活得多。请求重放用 Composer 面板。把抓到的请求拖进 Composer可以改 HTTP 方法、URL、请求头、请求体然后点 Execute 重新发送。做接口测试时有时后端改了某个鉴权逻辑我想验证旧请求重放会不会失败Composer 就非常方便。AutoResponder 则是响应拦截器设定一个匹配规则比如 URL 包含某个关键字就把响应替换成本地文件或另一个 URL 的响应适合做前端 Mock 和故障注入。3.4 卸载后不能上网的修复方法这是 Fiddler 用户最容易踩的坑也是最经典的互联网求助话题。原理并不复杂Fiddler 启动时把系统代理指向自己正常退出时它会还原代理设置。但如果你直接结束进程、强制卸载或者系统异常重启代理设置可能没还原系统会一直保留一个指向 Fiddler 的无效代理地址导致浏览器所有请求都发到不存在的代理上自然“上不了网”。修复方法分两步。第一步手动检查 WinINET 代理打开控制面板 - Internet 选项 - 连接 - 局域网设置把“为 LAN 使用代理服务器”取消勾选。第二步用命令清理 WinHTTP 代理在管理员命令行执行netsh winhttp reset proxy这两步之后基本都能恢复。预防更简单卸载 Fiddler 之前先正常打开 Fiddler然后菜单 File - Exit 正常退出让工具自己把代理还原掉就不会留下后遗症。4. Wireshark从字节层面看网络的“显微镜”如果说 Charles 和 Fiddler 是给业务开发用的那 Wireshark 就是给网络排障和协议分析用的。它不会“拆”HTTP 请求给你看而是把网卡上每一个二进制数据包都原原本本抓出来从以太网帧到 IP 头、TCP 头再到应用层内容全部可以展开看。排查 TCP 连接异常、DNS 解析慢、TLS 握手失败这类问题Wireshark 是无可替代的。4.1 安装与依赖Npcap 是 Windows 抓包前提Windows 上安装 Wireshark 时安装程序会顺带安装 Npcap这是 Windows 下抓包的关键驱动。Npcap 安装时保持默认选项即可不要取消安装否则 Wireshark 无法抓包。macOS 用户可以用 Homebrew 安装命令是 brew install wiresharkLinux 用户根据发行版用 apt 或 yum 安装 wireshark。需要注意一点Wireshark 抓包需要管理员权限。Windows 上要右键“以管理员身份运行”macOS 和 Linux 上如果没权限网卡列表会是空的点击开始按钮也可能没有任何数据。不是软件坏了是权限不够。4.2 快速上手界面认识与核心过滤器启动 Wireshark 后会看到网卡列表选择当前在用的网卡比如 Wi-Fi 或以太网双击就开始抓包。停止用红色正方形按钮。乍一看满屏的协议列表新手容易懵但真正高频使用的细节其实不多。最关键的是显示过滤器它只影响列表显示不影响已抓到的数据随手改随时恢复。常用表达http只看 HTTP 协议包dns只看 DNS 查询和响应ip.addr 192.168.1.100只看这个 IP 的入站和出站包tcp.port 443只看 443 端口流量http.host example.com只看某个域名的 HTTP 流量tcp.analysis.retransmission只看 TCP 重传包把光标点在任意一个包上下方会展示这个包的详细层级Frame 是帧信息Ethernet 是 MAC 地址IP 是地址和 TTLTCP 是端口、序号、确认号、各种标志位最上面如果有 Application Layer 则是应用数据。排查问题时从下往上逐层看先确认 MAC 层是否收到包再看 IP 是否匹配最后看 TCP 是否有异常。捕获过滤器和显示过滤器要区分开。捕获过滤器是在抓包前设置的用 BPF 语法比如 host 192.168.1.100 or port 443只抓符合条件的数据其他的直接丢弃。显示过滤器只是把抓到的数据里不匹配的条目隐藏起来。日常建议直接用显示过滤器灵活不丢包。4.3 为什么只能显示 520 字节怎样完整抓取更大的包这个问题被问得非常多“Wireshark 里一条包显示 520 bytes on wire但明明应该有个 2090 字节的数据为什么只有 520 字节” 这个现象说明抓包被“截断”了也就是常说的 snaplen 限制。Wireshark 在捕获时默认会限制每个包最多保存多少字节超出部分丢弃。如果在抓包选项里勾选了“Limit each packet to 520 bytes”之类的大小那无论线上包多大抓下来都只保留了最前面 520 字节。更常见的线索是包详情里出现一行提示[Packet size limited during capture]看到这个就基本可以确定是被截断了。解决方法是点击网卡选择页的“齿轮”进入 Capture Options找到“Limit each packet to”并取消勾选或者把这个值手动改成 65535然后重新抓包。也可以在 Edit - Preferences - Capture 里设置默认的帧长度改完影响后续所有抓包会话。Capture Options - Limit each packet to: 不勾选或设为 65535另外一个容易混淆的情况有时抓包显示 [Packet size limited during capture]但问题不在 Wireshark而在网卡驱动或虚拟化环境把数据包裁剪了。如果取消限制后依然是截断状态去网卡属性里关闭 TCP Offload大型发送卸载 LSO、校验和卸载再试一次通常能解决。这类底层问题排查起来比较玄但方向是对的。4.4 TLS 解密拿到加密流量里的明文Wireshark 抓到的 HTTPS 流量默认是 TLS 密文只能看到几个 TLS 握手报文看不到 HTTP 明文。要解密最通用的做法是让浏览器或 curl 把会话密钥导出成一个日志文件Wireshark 再用这个密钥解析密文。先设置环境变量 SSLKEYLOGFILE路径自己定。Linux 和 macOS 上export SSLKEYLOGFILE$HOME/sslkey.logWindows PowerShell 里用setx SSLKEYLOGFILE $env:USERPROFILE\sslkey.log设置完成后重启浏览器或终端用 Chrome、Firefox、curl 访问目标网址密钥会自动写入日志文件。接着打开 Wireshark进入 Preferences - Protocols - TLS在“(Pre)-Master-Secret log filename”里指定这个日志文件路径。重新抓包后TLS 流量的 Info 列就会变成 HTTP/2 或 HTTP/1.1 明文包点开就能看到请求头、请求体和响应内容。这里要特别说明这个功能只适用于你自己有权调试的流量也就是你自己的浏览器、你自己的服务。不要拿这个去分析别人的加密通信合法性是最基本的底线。4.5 TCP 分析怎么读从专家信息到重传、零窗口Wireshark 的 TCP 分析是我排查网络问题最依赖的能力。抓包界面里经常出现的“Expert Information”会按严重程度用颜色标记异常红色是错误黄色是警告蓝色是提示。最常见的 TCP 异常是这几类TCP Retransmission发送方没在规定时间内收到 ACK于是重发数据。出现频率高说明网络丢包或对端响应慢。TCP Dup ACK / Fast Retransmit接收方收到乱序包连续几次返回同样的 ACK触发快速重传说明存在丢包或乱序。TCP Zero Window接收方窗口为 0告诉发送方“我的缓冲区满了先别发了”常见于接收端应用消费速度太慢。TCP Out-of-Order数据包到达顺序错乱通常是由网络多路径或者负载均衡引起。实用排查案例某 App 图片上传总超时后端说没收到完整数据。抓包后发现前面几十个包正常后面出现大量 TCP Retransmission而且对端的 TCP Window 逐渐降到 0。这说明客户端或中间网络设备存在丢包且接收端处理能力跟不上进一步把矛头指向了移动网络差和弱网处理逻辑缺失而不是后端接口代码的问题。读 TCP 流的捷径是右键任意一个 TCP 包选择 Follow - TCP StreamWireshark 会把整条 TCP 会话按发送接收顺序还原成数据流配合解密后还能直接看到 HTTP 层的内容排查逻辑瞬间清晰很多。5. ProxymanmacOS 和 iOS 生态里的原生体验派Proxyman 是 macOS 上口碑非常好的抓包工具最近几年在 iOS 开发者圈子里热度上涨很快。它和 Charles 基本处于同一个生态位但做得更“原生”界面、性能和证书管理都更贴合 macOS/iOS 用户习惯。如果你主力机是 Mac又经常抓 iPhone 的包非常值得试试。5.1 为什么 macOS 端我会单独推荐 ProxymanProxyman 的优点主要体现在三个方面。第一是界面流畅完全按照 macOS 设计规范来做在 Apple Silicon 上运行非常顺滑不像 Charles 在某些版本里偶发卡顿。第二是证书管理体验好安装根证书、设置系统信任、清除证书每一步都有清晰引导对新手友好很多。第三是内置了很多实用小功能比如一键切换环境分组、请求脚本修改、WebSocket 抓取、网络条件模拟细节打磨得不错。它的默认端口是 9090和 Charles 的 8888 不冲突所以两个工具如果同时安装在电脑上也不会因为端口抢占用打架。5.2 iPhone 抓包与证书信任流程Proxyman 抓 iPhone 包的第一步和 Charles 一样确认 Mac 和 iPhone 在同一 Wi-Fi然后在 iPhone 的 Wi-Fi 设置里配置手动代理服务器填 Mac 的局域网 IP端口填 9090。Proxyman 的菜单里会直接显示当前电脑的 IP省去自己敲 ifconfig 的麻烦。第二步装证书。iPhone 用 Safari 访问 http://电脑IP:9090 会看到一个下载页面下载 Proxyman 的根证书。下载完成后iOS 一定会弹出“此证书尚未验证”的提示你要去“设置 - 通用 - 关于本机 - 证书信任设置”里找到 Proxyman 的证书打开开关启用完全信任。第三步是常见遗漏点。iOS 14 以后App 访问本地网络时会弹出一个权限确认框如果你点了“不允许”App 就无法连接局域网里的 Mac自然也就走不了代理。抓包时如果发现只有浏览器能抓到、App 抓不到先去看“设置 - 隐私与安全性 - 本地网络”里有没有给对应 App 打开权限。装完证书、开完信任、给完本地网络权限重启一次 AppProxyman 里应该就能看到来自 iPhone 的 HTTPS 请求了。5.3 脚本和 Mock 能力给接口测试提速Proxyman 的脚本功能是它除了好看之外真正的加分项。在界面的 Script 标签里你可以给指定域名写 JavaScript 脚本在请求发出前或响应返回前修改数据。常见用法是给测试环境接口统一追加一个 header或者把响应里的某个字段值改掉模拟后端返回不同状态。比如一段最简单的响应修改脚本if (url.includes(/api/user)) { body body.replace(name:张三, name:李四); }保存后匹配到这个 URL 的响应体就会自动替换。这个能力和 Charles 的 Breakpoints 殊途同归但 Proxyman 的脚本可以批量、持续地生效不需要每个请求手动点确认做接口联调时效率高很多。Map Local 这类本地映射能力它也有右键请求选择 Map Local就能把响应指向本地文件。环境分组功能尤其推荐你可以把一个项目下的所有接口 URL 前缀保存成一个环境比如“测试环境”对应 test-api.example.com“生产环境”对应 api.example.com切换时一键完成不用一个个改请求。6. TraceEagle新面孔值得关注吗TraceEagle 这个名字很多人可能还比较陌生我是在一次移动端团队分享里看到的。它定位在“移动端优先的网络调试与安全分析工具”某种程度上是在 Charles、Fiddler 的基础上做了新一轮的产品化升级面向的是当下 App 协议更多样、团队协作更频繁的开发环境。6.1 这工具到底是什么定位从产品形态看TraceEagle 属于 HTTP/HTTPS 调试代理工具但它把很多常见需求做成了开箱即用的功能WebSocket 抓包、Protobuf 协议解析、脚本化 Mock、断点编辑、弱网模拟、请求重放还有会话分享和团队协作。也就是说日常在 Charles 里需要靠插件或手写脚本才能实现的操作在 TraceEagle 里可能直接内置了。它的名字也透露了定位Trace 是追踪Eagle 是鹰眼。它不只是“抓包”更强调对捕获流量的分析和追踪比如按时间线还原一次完整请求链、从错误日志反查某个请求的上下文。对移动端开发和轻度安全测试来说这种分析视角很实用。6.2 核心亮点与典型使用场景先说协议支持。现在很多 App 已经不是纯 HTTP 请求了比如聊天室用 WebSocket、部分接口用 Protobuf 序列化。Charles 和 Fiddler 对这类协议的支持需要装插件或手动解析不够直接。TraceEagle 原生支持常见的 WebSocket 和 Protobuf 解析在移动端联调时优势明显。再说脚本 Mock。它内置了脚本引擎可以直接在界面上写规则修改请求头、请求体、响应体而不需要像 Fiddler 那样去改自定义脚本文件。弱网模拟也做成了参数化配置带宽、延迟、丢包率一填就能用。这类操作在传统工具里都能做但 TraceEagle 把门槛降低了新手也能快速上手。典型使用场景包括移动 App 接口联调、WebSocket 消息调试、测试环境数据 Mock、团队内部抓包会话分享、以及简单的 App 流量分析。新项目组里如果有成员之前没用过抓包工具TraceEagle 的学习成本比 Charles 和 Fiddler 低不少。6.3 上手建议与组合用法上手方式和 Charles 几乎一致安装后配置代理端口手机 Wi-Fi 里填电脑 IP 和端口然后安装并信任根证书。如果你已经熟悉 Charles切到 TraceEagle 基本没有学习成本只是菜单名称和布局需要适应。组合方面我建议把 TraceEagle 和 Wireshark 搭配使用而不是和二选一。TraceEagle 负责业务层的请求、响应、Mock、弱网模拟Wireshark 负责底层协议和网络链路排障两者一个向上、一个向下配合起来可以把问题面覆盖得很完整。作为新工具TraceEagle 目前的教程和社区资料还比较少遇到问题主要靠官方文档和 GitHub 讨论区但这也说明早期使用者有机会提出需求、影响产品方向对新工具来说算是红利。7. 五款工具横向对比与最终组合建议把五款工具放一起做横向对比是为了方便你在不同角色、不同阶段快速做判断。对新手来说可能只需要一款工具就能满足 80% 需求对资深开发者来说往往要组合使用才能高效覆盖各种突发问题。7.1 一张速查表理清五款工具对比维度CharlesFiddler ClassicWiresharkProxymanTraceEagle工作层级HTTP 代理HTTP 代理网卡抓包HTTP 代理HTTP 代理默认端口88888888无9090可自定义支持平台Windows/macOS/LinuxWindows全平台macOS/WindowsWindows/macOS/LinuxHTTPS 解密支持需装根证书支持需装根证书支持 TLS 密钥解密支持需装根证书支持需装根证书手机抓包支持体验好支持需要配合 AP 模式或热点支持iOS 体验好支持移动端优先Mock 数据Map Local、BreakpointsAutoResponder、Composer不适用Map Local、脚本内置脚本 Mock弱网模拟Throttle SettingsSimulate Modem 或脚本不适用Network Condition参数化配置学习成本中等中等高低低典型场景移动端、前端联调Windows Web 调试、QA网络排障、协议分析macOS/iOS 联调移动团队快速调试这个表有两个细节值得注意。第一Charles 和 Fiddler Classic 默认端口都是 8888同时安装时一定要手动改一个否则后启动的把前一个顶掉表现就是“明明开了抓包工具但浏览器根本不走代理”。第二Wireshark 的“弱网模拟”不是内置功能通常用 tcLinux、Network Link ConditionermacOS或 Windows 的网卡限速来实现它自己专心抓包和分析。7.2 不同岗位怎么搭配工具最顺手前端开发Charles 或者 Proxyman 就够了。重点用 Map Local 做接口 Mock、Breakpoints 做异常分支模拟、Throttle 做弱网体验这三个功能覆盖前端联调 90% 的需求。移动端开发iOS 为主就选 Proxyman 或 CharlesAndroid 为主就选 Charles 或 TraceEagle。除了常规抓包重点关注 WebSocket 抓取和 Protobuf 解析TraceEagle 在这块更省心。后端/协议工程师Wireshark 是主力。写好过滤器、读懂 TCP 状态和三报文握手、会用 TLS 解密是底层排障的必备技能。HTTP 层问题可以参考 Charles 补一下接口联调。测试/QAFiddler Classic 在 Windows 下做弱网测试最方便AutoResponder 做数据 Mock 也很成熟。如果团队用 macOS就选 Proxyman 或 TraceEagle弱网和 Mock 都是开箱即用。安全分析Wireshark 负责底层报文分析TraceEagle 负责 App 业务层流量分析两者结合可以把从传输到应用的完整链路都覆盖到。7.3 端口冲突、证书混乱等日常问题速查问题原因处理办法开了 A 工具B 工具抓不到包系统代理同时只能有一个生效一次只开一个代理工具另一个彻底退出端口被占用多工具默认端口冲突修改其中一个的代理端口重启生效抓包后浏览器上不了网代理未正常还原手动取消系统代理Fiddler 用户执行 netsh winhttp reset proxy证书越来越多、信任列表混乱每个工具都生成自己的根证书定期检查系统信任证书列表删除不再使用的根证书解密后看不到内容证书没信任或 App 不支持用户证书检查证书信任开关、networkSecurityConfigWireshark 抓包没数据权限不足或选错网卡以管理员运行确认选择的是活跃网卡证书信任这块需要特别提醒抓包工具的根证书一旦被系统完全信任就等同于它有能力解密流经该设备的 HTTPS 流量。临时抓包结束后建议在系统证书列表里把对应的根证书禁用或删除尤其是共享电脑或测试设备上能减少很多安全风险。不要图方便长期保留一个不知名根证书在系统里。最后再分享一点个人经验我目前的固定组合是 Charles 加 Wireshark手机抓包和接口调试用 Charles遇到 TCP 连接异常、DNS 解析慢、TLS 握手失败这类底层问题时切到 Wireshark。如果是在 macOS 上做一个全新的 iOS 项目我也会优先考虑 Proxyman因为它的证书管理和脚本修改在苹果生态里确实舒服。TraceEagle 目前还在观察阶段但它对新协议的支持和低上手门槛让我对它在移动团队里的普及比较看好。给新手的建议就一条不要一开始就五个工具全装。从一款代理工具入手Charles 或 Fiddler 二选一先把 HTTP 抓包、HTTPS 解密、手机代理、Mock 数据这四个基础能力玩熟再根据需要去学 Wireshark。抓包工具本质上只是“看流量”的窗口真正值钱的是你理解网络协议的能力工具只是帮你看得更清楚。最后说一句底线的话HTTPS 解密能力是一把双刃剑请只在你自己的设备、自己开发的 App、自己有权限的服务器上使用。抓包是为了更好调试和排障不是用来窥探他人数据的理由。技术水平越高越要清楚什么该做、什么不该做。