资讯详情

抓包工具横评:Charles、Fiddler、Wireshark、Proxyman、TraceEagle 对比与实操指南

📅 2026/9/12 3:23:19 | 华诺云谱 👁 阅读
抓包工具横评:Charles、Fiddler、Wireshark、Proxyman、TraceEagle 对比与实操指南
做客户端这些年我电脑里长年躺着至少四款抓包工具Charles、Fiddler、Wireshark、Proxyman最近又因为团队协作需要把 TraceEagle 也拉进来做了几轮实测。五款工具我都在真实项目里跑过不带“云评测”那种而是拿真实流量、真实证书、真实弱网环境一点点验出来的。今天这篇就把它们放在同一张桌上从定位、原理到实操区别完整讲一遍顺便把“最新网络热词”里那些高频问题都扫进去比如 Charles 手机抓包、Wireshark TLS 解密、Fiddler 弱网测试、Proxyman 抓 iPhone 之类的。先给结论没有哪款工具能包打天下。选抓包工具本质上是选你想看哪一层的网络数据。有人只关心 App 调了哪些接口、返回值对不对这类需求用 Charles、Fiddler 这类代理调试工具最顺手但如果你怀疑是底层丢包、TCP 重传、DNS 异常那 Wireshark 才是正经答案。Proxyman 在 macOS/iOS 开发者群体里口碑很好TraceEagle 最近讨论度也明显上来了可它们在原理层面和 Charles 是同一类东西只是交互和定位各有侧重。1. 五款抓包工具的定位与适用场景1.1 一张表看懂五款工具的基本盘工具类型主要平台核心定位授权与常见人群CharlesHTTP(S) 代理调试Windows/macOS/LinuxApp 接口调试、HTTPS 解密、Mock、弱网模拟商业付费试用期有限制前后端、移动端测试用得最多Fiddler ClassicHTTP(S) 代理调试Windows 为主Windows 桌面端、浏览器、App 抓包弱网模拟免费老牌工具教程存量很大ProxymanHTTP(S) 代理调试macOS/Windows/iOSiOS/模拟器抓包体验好界面现代内置脚本商业付费试用期有限制macOS 开发者更偏爱Wireshark协议分析/网卡捕获全平台TCP/IP 排障、协议字段解析、底层报文分析开源免费运维、网络工程师、安全分析必备TraceEagleHTTP(S) 代理调试多平台定位接近 Charles侧重团队协作和结果整理近期讨论度上升具体授权需参考官方适合团队内部使用这里要额外说一句版本问题。Fiddler 家族现在分成 Fiddler Classic 和 Fiddler Everywhere前者是 Windows 上的经典免费版后者是跨平台商业版网上搜“Fiddler 安装教程”时先分清是哪个版本否则很多菜单对不上。Charles 官方只有英文界面网上流传的“Charles 中文版”“汉化包”基本都是老版本我建议别折腾英文菜单用几天就熟了反而省掉很多版本坑。1.2 按需求选型你抓的是哪一层我给新人做培训时经常打一个比方网络数据就像一栋楼代理型抓包工具站在一楼大堂检查进出的人能看到每个人的工牌、目的地和随身物品Wireshark 则蹲在大楼门口的摄像头旁边把每一帧经过的画面都录下来包括车辆轮胎压过的痕迹。这个比喻对应到实际场景就是你用 Charles 打开一个 App 的接口能看到 URL、Header、请求体、响应体、耗时这是“业务层”但你看不到 TCP 握手是几次、有没有重传、ACK 是否延迟。Wireshark 能清楚看到三次握手、乱序、重传可默认情况下它看 HTTPS 报文是一堆密文除非你额外配置会话密钥导出。两者并不矛盾而是同一段网络流量在不同层切开的照片。TraceEagle 我试用下来的感受是它更想把“抓包”这件事变成团队协作流程抓到的请求可以整理成报告分享历史记录管理做得比 Charles 直观界面也在往现代化方向靠。不过它的生态和资料目前远不如 Charles 和 Fiddler遇到冷门问题基本只能自己摸索。如果个人用我暂时不会拿它当主力如果是团队需要统一工具、共享抓包结果它可以作为一个备选。2. 抓包原理差异为什么同样的流量在不同工具里长得不一样2.1 代理型工具中间人解密是怎么发生的Charles、Fiddler、Proxyman、TraceEagle 都属于代理型工具。你把手机或浏览器的网络代理指向电脑上对应端口后所有 HTTP 请求会先经过抓包工具再由工具转发到服务器。这一步很多人会忽略觉得“我只是配了个代理而已”但实际上工具在中间做了一个关键动作对 HTTPS 来说它既要和客户端完成一次 TLS 握手也要和服务器完成另一次 TLS 握手客户端实际上连的是抓包工具而不是真正的服务器。为了让客户端信任这个“中间人”就必须提前把抓包工具生成的根证书安装到系统或手机里。客户端验证证书通过后工具才能解密请求和响应。这就是为什么所有教程都反复强调“要装证书、要信任证书”。如果你只设置了代理却没装证书看到的通常只有 CONNECT 记录和 TLS 握手报错没有任何 HTTP 明文内容。Charles 默认代理端口是 8888Fiddler Classic 默认也是 8888Proxyman 默认是 9090。这几个端口号建议刻在脑子里配手机代理时最常用的就是它们。Charles 还支持一键开启 macOS 或 Windows 系统代理浏览器抓包基本不用手动改系统设置打开 Proxy macOS Proxy 或 Windows Proxy 就能直接接管浏览器流量。2.2 Wireshark 的旁路捕获模型Wireshark 的原理和代理型工具完全不同。它直接调用网卡驱动抓取经过网卡的数据包本身不参与连接不修改流量也不做转发。在 Windows 上这个动作依赖 Npcap 或 WinPcap 驱动所以安装 Wireshark 时通常会提示你同时安装 Npcap。如果安装失败多数情况是没用管理员权限或者系统里残留了旧版本的抓包驱动。由于是旁路捕获Wireshark 能看到所有经过网卡的数据包包括广播、组播以及不是发给本机的流量。这也是它能做 TCP 重传分析、DNS 排查、VLAN 标签解析的基础。它默认看到的是“线缆上的原始数据”所以对协议的刻画最完整你甚至可以逐字段展开 Ethernet、IP、TCP、HTTP 每一层的头部。Wireshark 的“可视化”也很值得提一句。很多人只会看报文列表但其实 Statistics 菜单里有一堆好东西IO Graph 可以看流量速率变化Flow Graph 可以看连接建立和断开顺序TCP Stream Graph 可以看窗口变化和往返时延。做网络性能问题定位时这些图比截图几十条报文有用得多。2.3 原理差异带来的能力边界代理型工具和 Wireshark 的能力边界非常清晰我用一张清单来区分代理型工具能改流量可以断点修改请求、响应可以做 Mock 数据、重定向、弱网模拟Wireshark 默认只能看不改。代理型工具看到的多是 HTTP 明文Wireshark 更擅长看 TCP/IP、DNS、TLS 握手细节底层的任何异常都逃不过。代理型工具对 UDP、TLS 密文的细节基本无能为力Wireshark 可以通过密钥日志还原 HTTPS 明文也能直接分析 DNS over UDP。代理型工具受代理协议限制某些 App 不走系统代理就抓不到Wireshark 只要数据包经过网卡就能捕获不依赖 App 是否配合。明白了这层边界就不会再出现“我拿 Charles 调了半天还是看不到 TCP 重传”这种问法了。工具选型的目标是根据问题去找最顺手的那把尺子。3. 高频实操手机 HTTPS 抓包、TLS 解密和弱网模拟3.1 iPhone 和 Android 手机抓包的标准流程手机抓包是搜索热度最高的场景尤其“charles 手机抓包”“fiddler 抓包手机app”“proxyman 抓包 iphone”这类问题。标准流程其实都差不多以 Charles 为例电脑和手机连到同一个 Wi-Fi确保能互相访问。打开 Charles 的 SSL Proxying进入 Proxy SSL Proxying Settings至少添加一条*:443的规则让它对 HTTPS 流量做解密。在手机 Wi-Fi 设置里把 HTTP 代理改为手动服务器地址填电脑的局域网 IP端口填 8888。手机浏览器打开 chls.pro/ssl下载安装 Charles 根证书。iPhone 还要多一步去“设置 通用 关于本机 证书信任设置”把 Charles 证书的完全信任开关打开。Android 上Android 7.0 之后 App 默认只信任系统 CA不信任用户添加的 CA所以很多 App 抓不到这个下面细说。Fiddler 抓手机 App 的步骤类似但要在 Tools Fiddler Options Connections 里勾选 Allow remote computers to connect然后重启 Fiddler否则手机连不上代理端口。Proxyman 对 iOS 真机有专门的安装证书引导对 iOS Simulator 更是可以直接开启代理不需要手动填体验确实省心但真机测试仍然要走到证书信任那一步。Android 是很多人踩坑的重灾区。你可能会发现浏览器能被正常解密但打开 App 就显示证书校验失败或者直接连接超时。根本原因是 Android 7.0 之后应用默认不信任用户证书。想继续抓通常需要把证书装进系统证书目录或者目标 App 本身提供了允许自定义 CA 的调试开关不少 App 还加了证书绑定SSL Pinning这时候普通抓包基本拦不住。做测试的同学至少要能解释清楚抓不到不一定是工具没配好很可能是对端应用的信任策略把路堵死了。3.2 Charles、Proxyman 做 HTTPS 解密时的细节差异Charles 第一次做手机抓包时最容易漏掉的是 SSL Proxying 里的域名白名单。你只在 Location 里加了*:443浏览器能正常解但有些 App 的请求还是会显示为ssl或者直接乱码原因往往是白名单没覆盖到目标域名。更稳妥的调试方法是先用*:443跑通全流量确认目标域名后再把白名单收紧到具体域名避免无关流量干扰。Proxyman 默认对 HTTPS 解密更主动首次连接时会弹证书信任引导整体流程对新手更友好。它还有一个很实用的功能可以把某个请求直接存成集合后续团队协作或自己复现问题都很方便。不过要注意模拟器里的网络行为和真机还是有差异模拟器通过宿主网络代理配置虽然简单但测弱网、测局域网延迟时它模拟出的结果不一定等同于真机。不管是 Charles 还是 Proxyman都要注意“App 不走系统代理”的情况。很多即时通讯、音视频类 App 使用自研网络库Socket 直连或者自定义 UDP 传输这种流量代理型工具根本看不到。遇到这类问题别硬磕该上 Wireshark 就上 Wireshark配合抓包网卡或者镜像口才能拿到完整报文。3.3 Wireshark 解密 TLS 的惯用套路Wireshark 解密 HTTPS 的核心是拿到 TLS 会话密钥。现代浏览器和 curl 都支持通过环境变量导出密钥设置方法如下Windows 上可以先在命令行执行set SSLKEYLOGFILEC:\sslkey.log然后从同一个命令行窗口启动 Chrome。macOS/Linux 则是先export SSLKEYLOGFILE~/sslkey.log再用命令启动浏览器。比如 macOS 可以写export SSLKEYLOGFILE~/sslkey.log open -a Google Chrome。密钥写入文件后在 Wireshark 里打开 Edit Preferences Protocols TLS在 Pre-Master Secret log 那一栏填上这个日志文件的路径重新开始抓包Wireshark 就能把 HTTPS 流量解成明文能看到 HTTP/2、HTTP/3 的请求和响应内容。这里有个非常常见的坑环境变量只对设置它的那个 shell 以及从这里启动的进程生效。很多人设置完之后直接双击桌面图标打开浏览器结果日志文件根本没生成Wireshark 里当然也解不出明文。记住一定要用命令行启动浏览器。另外TLS 1.3 已经把密钥交换算法换掉了以前抓 HTTPS 常用的“导入 RSA 私钥解密”方式基本失效现在主流就是 SSLKEYLOGFILE这个方向别走偏。3.4 Fiddler 弱网测试的配置方法Fiddler 做弱网测试是很多测试同学的第一反应因为 Fiddler Classic 自带一个“弱网开关”Rules Performance Simulate Modem Speeds勾上之后就会模拟调制解调器级别的慢速网络。但这个开关比较粗糙它只是固定延迟和固定带宽真正做弱网用例时不够用。更可控的办法是改 FiddlerScript。在 Fiddler Classic 里进入 FiddlerScript 选项卡找到OnBeforeRequest函数在里面加两行if (m_SimulateModem) { oSession[request-trickle-delay] 300; oSession[response-trickle-delay] 300; }这样能模拟上下行都有 300 毫秒延迟的效果。想要细分不同场景可以再叠加带宽限制或者配合外部的网络工具做丢包。Charles 的 Throttle Settings 里有 3G、4G、5G 预设也能自定义上下行带宽和延迟Proxyman 的 Network Condition 同样支持这类模拟。我个人习惯把弱网测试分成两种第一种是验证接口超时和重试逻辑用代理工具限制带宽、增加延迟就够了操作简单结果也好复现第二种是要验证断线重连、弱信号切换这种情况下光靠代理工具是不够的最好用 Wireshark 抓包确认真正断点再配合能丢包、能断流的网络损伤设备或软件。工具只能还原部分网络问题想模拟全部真实网络环境是不现实的。4. 常见问题与排查技巧实录4.1 Charles/Fiddler 抓不到手机包的排查顺序我见过最多的“为什么抓不到手机上的包”问题基本出在代理、证书、端口这三件事上。这里给一套排查顺序按顺序走完基本能解决 90% 的问题先确认手机能访问电脑。在手机上打开浏览器访问电脑 IP 加端口比如http://192.168.1.10:8888能打开证书下载页面说明网络通、端口通。检查电脑防火墙。Windows 上常有防火墙拦截 8888 端口需要放行对应程序或端口。手机 Wi-Fi 里填的 IP 一定不能是 127.0.0.1。那是手机自己不是电脑。确认代理端口和工具里监听的端口一致。Charles 默认 8888Proxyman 默认 9090Fiddler 需要勾选 Allow remote computers to connect 并重启。确认系统代理没被别的软件抢占。如果电脑上同时开着其他代理类软件端口冲突会导致抓包工具收不到流量。证书下载、安装之后iPhone 还要在“证书信任设置”里打开完全信任否则 HTTPS 还是解不开。如果目标 App 开了 SSL Pinning或者根本不走系统代理那工具怎么配都可能抓不到这时候要换思路用 Wireshark 抓底层或者从开发侧获取调试开关。这里有个很容易被忽略的低级坑手机和电脑连接的是同一个 Wi-Fi但有些企业网络开了“AP 隔离”设备之间互相访问不了。现象就是手机浏览器打不开证书下载地址请求超时。遇到这种环境先连手机热点或者交换设备再试别浪费时间。4.2 Wireshark 为什么只能看到 520 字节而不是 2090 字节“Wireshark 为何只能显示 520 字节数据怎么显示 2090 个字节数据”是近期很热门的问题常见于实验和协议分析场景。碰到这问题先别慌通常不是数据丢了而是把“单个包的捕获长度”当成了“上层业务数据长度”。520 是某个分片或单个 TCP 段的长度而 2090 很可能是整个 IP 报文或者 TCP 流重组后的上层数据长度。以太网 MTU 一般是 1500一个大包会被网络层拆成多个分片Wireshark 默认把这些分片分别显示。想看完整上层数据可以做两件事菜单栏 Edit Preferences Protocols IPv4勾选 Reassemble fragmented IPv4 datagrams。再到 TCP 协议设置里勾选 Allow subdissector to reassemble TCP streams。打开重组之后原来分散的几个包会拼成完整应用层数据显示的字节数就会变大。如果还不行再看看 Wireshark 当前显示的是哪一列。列表里的 Len 列只是当前帧长度真正的 IP 包总长度要看 IPv4 头里的 Total Length 字段。另外如果抓的是 802.1Q VLAN 报文Wireshark 默认能解析 VLAN ID 和优先级如果显示异常可以在 IPv4 报文上右键 Decode As强制按 VLAN 解析一次一般就能看清。4.3 系统代理残留导致的“Fiddler 卸载后上不了网”这个坑我实在见过太多次值得单独写一节。Fiddler 在 Windows 上运行时会修改系统代理设置也就是 IE 的局域网代理设置。正常情况下退出 Fiddler 会把系统代理恢复原状但如果进程被强杀、系统异常关机、或者卸载流程没走干净系统代理会一直指向127.0.0.1:8888而抓包工具已经没了流量转发不出去自然“上不了网”。遇到这种情况先别急着重装系统。打开“控制面板 Internet 选项 连接 局域网设置”把“为 LAN 使用代理服务器”勾选去掉即可。如果想用命令处理管理员权限打开 CMD执行netsh winhttp reset proxy这个命令会把 WinHTTP 代理设置重置为空。更彻底一点可以检查注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings主要看ProxyEnable和ProxyServer。正常上网状态ProxyEnable应该是 0ProxyServer应该为空或指向有效代理。改成 0 之后重启系统基本就能恢复。这个问题本质上是工具对系统的副作用Charles 和 Proxyman 同样会改系统代理只是退出时处理得更干净。以后用完抓包工具最好在菜单里关掉系统代理再退出养成习惯能少踩特别多坑。5. 综合对比与选型建议5.1 核心能力对比矩阵把五款工具放到业务能力维度上对比会更直观能力点CharlesFiddler ClassicProxymanWiresharkTraceEagleHTTPS 解密强白名单灵活强脚本可扩展强默认解全量需配置 SSLKEYLOGFILE中上和 Charles 类似弱网模拟有预设和自定义有预制开关和脚本有网络条件模拟无需外部工具基础能力Mock/断点支持 Map Local、BreakpointsAutoResponder 很强支持 Map Local不支持直接改支持基础 Mock底层协议分析弱弱弱极强弱上手门槛中等中等偏下低高中等跨平台好官方偏 Windows好macOS 生态更好全平台取决于官方支持光看功能列表Wireshark 的底层协议分析能力是绝对碾压级的但它不能替代代理型工具做接口调试和 Mock。反过来Charles 在业务调试上非常顺手但指望它判断“是不是 TCP 重传导致接口超时”就不现实了。所以我的态度始终是把工具当工具别把某一个工具当信仰。5.2 我的个人选择建议如果只能留一个我会分场景给答案。Windows 上做接口和 App 测试Fiddler Classic 的 AutoResponder 非常方便免费也够用macOS/iOS 开发者Proxyman 的体验会更现代键盘操作和界面都舒服团队里需要大家统一抓包、分享明细Charles 依然是通用性最高的选择生态和教程最全只要涉及网络底层排障Wireshark 是必装项没有替代品TraceEagle 更适合想试试新工具、或者对结果协作有刚需的团队。最后再分享一个我自己的使用习惯遇到线上网络问题我经常开着 Wireshark 和 Charles 两个工具一起跑Wireshark 抓底层Charles 看业务各看各的互不干扰。刚开始可能会觉得信息量太大但只要明确这次的目标是“排查 TCP 层”还是“定位接口返回”两个视图反而能让问题更快水落石出。抓包工具永远是为定位问题服务的思路比工具本身更值钱。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。