尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

五款主流抓包工具横向对比:从Charles到Wireshark的实战选型指南

五款主流抓包工具横向对比:从Charles到Wireshark的实战选型指南 做了十几年开发天天打交道最多的其实不是 IDE而是各种抓包工具。从最早接触的 Wireshark到后来做移动端联调离不开的 Charles再到 Windows 办公时常用的 Fiddler、Mac 上体验不错的 Proxyman以及最近经常被问到、下载量涨得很快的 TraceEagle这五款工具我算是挨个从安装用到卸载踩坑踩出了一套自己的方法论。这篇就围绕它们的定位差异、HTTPS 解密配置、弱网模拟、Mock 能力以及常见问题一次讲清楚。先说结论抓包工具没有“哪个最好”只有“哪个最适合你当下的场景”。做接口联调和移动端调试Charles 和 Proxyman 更顺手在 Windows 上做全流程调试、弱网验证Fiddler 绕不开一旦要下沉到 TCP/IP 层面排查网络问题Wireshark 依然不可替代TraceEagle 则适合想快速看到流量统计、又希望界面全中文的同学。下面逐一拆开讲。1. 先看清五款工具的本质定位1.1 为什么抓包工具这么多还都有人用每天都能看到“charles怎么使用”“wireshark安装教程”“fiddler使用教程”这类高频搜索。其实抓包工具多是因为“抓包”两个字背后藏着三种完全不同的需求。第一种是应用层调试。开发接口、联调小程序、排查 H5 页面请求失败你关心的是“请求发出去了没有、返回了什么、Header 和 Body 对不对”。这种场景下最顺手的是 Charles、Fiddler、Proxyman 这类 HTTP 代理工具。第二种是底层协议分析。网络不通、延迟偏高、TCP 重传频繁、某个端口连不上这时候必须看到网络栈最原始的数据帧Wireshark 是唯一能打的。第三种是流量统计与安全分析。你不是盯着某一个请求而是想对整台设备或整个网络做流量梳理找出可疑通信、分析异常行为这时 TraceEagle 这种偏流量分析与可视化的工具就派上了用场Wireshark 也常被拉来配合。所以你会发现不是这些工具功能重复而是需求本身就有层次。先想清楚今天要解决什么问题再选工具效率会高很多。1.2 底层原理决定了工具的能力边界抓包工具大致分两类实现方式理解了底层原理你就知道为什么不同工具的表现差异这么大。一类是代理模式代表是 Charles、Fiddler、Proxyman。它们在电脑上开启一个本地 HTTP/HTTPS 代理端口然后把移动端、桌面端的流量引导到这个代理上。因为流量经过了工具工具就能查看、修改、拦截、转发。优点是功能强能断点、能改包、能模拟弱网缺点是只能处理“愿意走代理”的应用层流量对非代理协议基本无能为力。另一类是链路层抓包代表是 Wireshark。它依赖 WinPcap/Npcap/libpcap 库把网卡上经过的数据帧全部拷贝一份送给上层分析。优点是任何协议都能看从 ARP、DNS 到 TLS 握手全量保留缺点是它默认不做中间人代理所以 HTTPS 流量拿到手里通常是密文需要额外配置密钥导出才能解密。TraceEagle 的定位更接近两者之间的一种过渡形态既能做本机网卡流量捕获又提供友好的中文统计分析界面适合不熟悉 Wireshark 繁琐过滤器语法的用户先从宏观层面掌握流量构成。2. Charles移动端开发和接口调试的准标配2.1 为什么很多后端和客户端同学首选 CharlesCharles 是一款基于 Java 的 HTTP/HTTPS 代理工具老牌、稳定、跨平台macOS 和 Windows 上都有同名版本搜索“charles”“charles中文版”的人一直很多。它最大的优势是图形化断点和改写能力非常直观在请求列表中直接右键设置断点修改请求再发出去也可以把线上某个响应直接替换成本地文件。对移动端联调来说这几乎是刚需。另一个常被忽略的特点是它会话记录保存能力很强能保存成 .chls 文件方便后续回放和把问题转给同事复现。2.2 HTTPS 解密的核心原理与开启步骤很多人第一次用 Charles 都卡在同一处——“只能看到 CONNECT 请求看不到具体内容”。原因很简单HTTPS 流量被 TLS 加密了。Charles 的做法是中间人方式它生成一张自己的 CA 证书你的客户端信任这张证书后Charles 就能解密它和客户端之间的加密流量再以客户端身份向服务器发起请求完成转发。所以在电脑端要先开启 SSL Proxying菜单栏选择 Proxy - SSL Proxying Settings勾选 Enable SSL Proxying在 Locations 里添加 Host 为 *Port 为 443。如果只想看某个域名也可以单独添加限制范围。然后手机端访问 chls.pro/ssl 下载证书并安装iOS 用户还需要到“设置 - 通用 - 关于本机 - 证书信任设置”里把 Charles Proxy CA 的开关点亮。这一步很多人容易漏漏了就永远提示证书无效。2.3 手机抓包的完整流程把手机和电脑接到同一个局域网里这一步是最容易被忽略的。很多办公网络有 AP 隔离同 WiFi 下设备互访不通代理自然失败。建议排查时先 ping 一下电脑的局域网 IP通了再往下走。电脑端 Charles 的默认代理端口是 8888保持开启。打开手机 WiFi 的代理设置选择手动填入电脑的局域网 IP 和 8888 端口保存后先在 Charles 弹出的代理确认框里点击 Allow。此时打开手机任意 App就能在 Charles 里看到请求了。如果是真机调试 iOS注意 iOS 14 以后对本地网络权限管得严有的 App 没有“本地网络”权限会拒绝走代理需要去系统设置里打开。Android 设备则要留意 targetSdkVersion 24 以上默认不信任用户证书不少 App 会忽略代理或校验证书抓包抓不到时优先怀疑这两点。2.4 弱网模拟与 Mock 数据的常用技巧Charles 的弱网模拟和 Mock 能力是我日常使用频率最高的功能。选中任意接口右键选择 Throttle 开头的选项会弹出配置窗口可以设置带宽、延迟、丢包率、抖动等参数精确模拟 2G/3G/4G 网络。在 Proxy - Throttle Settings 里也可以全局配置或者把具体 URL 拖到“Throttle”列表里做按接口限速。Mock 方面更常用的是 Map Local 和 Map Remote。Map Local 能把线上 URL 直接映射到本地文件适合前端联调时代替后端返回假数据Map Remote 则可以把一个域名或路径转发到另一个环境解决“切换测试环境必须改代码”的痛点。我自己的习惯是凡是外部依赖的接口先用 Map Local 准备一份 fixture跑通主流程再接入真实环境效率能提升一大截。2.5 关于汉化、注册码和常见问题“charles汉化”“charles 注册码”这两个搜索词的量一直很大。先说结论Charles 官方演示版启动后 Session 只能保存 30 分钟但功能全部可用正常调试完全够用。网上流传的注册码基本是撞运气不稳定而且有版权风险不建议使用。汉化包同理Charles 菜单本身不复杂高频功能就那么几个用熟英文菜单反而省心汉化包还可能在升级后布局错乱。为什么注册码搜索量这么大大概率是因为 Charles 4.x 改成了按年订阅个人付费略贵。我的做法是工作场景用公司购买的正版个人偶尔调试用官方演示版。另外提醒一句某些“破解版”“汉化版”网站下载的安装包可能带广告或后门不要为了省这点钱把机器安全搭进去。3. FiddlerWindows 生态里绕不开的调试专家3.1 Fiddler 与 Fiddler Classic 的版本差异Fiddler 最经典的是 Fiddler Classic免费、基于 .NET Framework只能在 Windows 上用。后来推出了新版 Fiddler Everywhere界面更现代跨平台支持 macOS、Linux、Windows但开始收费。对绝大多数 Windows 用户来说Fiddler Classic 依然是学习和日常调试的首选。需要注意 Fiddler Classic 的默认代理端口也是 8888和 Charles 一样。如果你的电脑上同时装了 Charles 和 Fiddler必须先停掉其中一个再启动另一个否则两个工具抢同一个端口后启动的会报错“Address already in use”。这是我踩过不少次的坑。3.2 HTTPS 解密和系统代理配置Fiddler Classic 开启 HTTPS 解密很直接菜单 Tools - Options - HTTPS勾选 Capture HTTPS CONNECTs 和 Decrypt HTTPS traffic弹窗问是否信任根证书时选 Yes工具会自动把 Fiddler Root Certificate 装进系统证书库。有一个容易忽略的点Fiddler 打开的是系统代理如果你在浏览器里装过代理插件可能被它覆盖或冲突。遇到“Fiddler 开启后 Chrome 打不开网页”时先检查系统代理Internet 选项 - 连接 - 局域网设置如果代理服务器地址指向 127.0.0.1:8888说明 Fiddler 在起作用。关闭 Fiddler 后系统代理不会立刻还原需要手动取消勾选或重启浏览器。3.3 弱网测试Fiddler 的仿真能力详解“fiddler弱网测试”在搜索热度里一直很高。Fiddler Classic 的弱网模拟藏在 Rules - Performance - Simulate Modem Speeds勾选后会给所有请求加上约 15kb/s 下行和 10kb/s 上行的延迟基本等于模拟拨号上网。这个配置简单粗暴适合快速演示但不适合精确模拟真实 App 的网络环境。更精细的做法是修改 CustomRules.js。在 FiddlerScript 编辑器里找到 OnBeforeRequest 和 OnBeforeResponse 函数加入一段延迟逻辑例如static function OnBeforeRequest(oSession: Session) { if (oSession.HostnameIs(www.example.com)) { oSession[request-trickle-delay] 3000; } }这段代码的意思凡是发往指定域名的请求人为延时 3000 毫秒用来模拟高延迟网络。在 OnBeforeResponse 里设置 response-trickle-delay可以控制响应包的下发速率。这种方式能按域名、按接口精准限速比全局开关实用得多。3.4 卸载后上不了网到底是怎么回事“fiddler卸载后上不了网”这个搜索词相当有代表性。绝大多数情况是 Fiddler 卸载时没有正确还原系统代理导致系统中仍残留着指向 127.0.0.1:8888 的代理设置而程序已经没了代理自然失效所有流量都走不通。解决办法很简单把浏览器或系统设置里的代理服务地址清空或者取消“为 LAN 使用代理服务器”的勾选。如果浏览器还上不了网可能是 WinHTTP 代理残留在管理员命令行下执行netsh winhttp reset proxy如果仍然有问题检查 hosts 文件是否被某些旧版 Fiddler 插件改过路径是 C:\Windows\System32\drivers\etc\hosts把无关的行删掉即可。这套顺序基本覆盖九成“卸载后上不了网”的场景。4. Wireshark底层协议分析的显微镜4.1 先读懂它和 Charles/Fiddler 的本质差异Wireshark 经常被拿来和抓包工具比较但它的工作方式和 Charles 完全不同。Charles 像快递柜只处理“交给它转发的包裹”Wireshark 像机场安检的监控摄像头所有经过网卡的流量它都能录下来。也正因为它直接工作在网卡驱动层面对操作系统和驱动依赖较强Windows 上必须装 Npcap 或 WinPcapmacOS 上则需要授权系统扩展。4.2 安装、捕获过滤器与显示过滤器关于“wireshark安装教程”网上教程已经很多我只说三个关键点。第一Windows 安装时会让你选择 Npcap 或 WinPcap新版建议用 Npcap支持 Windows 10/11 的新网卡驱动兼容性优于老旧的 WinPcap。第二安装完成后首次启动可能提示没有权限抓包Windows 下要以管理员身份运行macOS 下在系统设置里允许 Wireshark 捕获网络流量。第三Wireshark 4.0 是近年最重要的版本更新强化了 I/O 图表界面也更现代直接装 4.x 而不是老版本。抓包界面的两大过滤器必须先搞清楚捕获过滤器在开始抓包前设置起“过滤监听”作用比如只抓 80 端口tcp port 80显示过滤器在抓包过程中设置起“筛选展示”作用比如只看 HTTP 请求http。新手最大的误区是把显示过滤器写成捕获过滤器语法或者反过来导致要么抓不到包要么抓了一堆没用的包。我的建议是抓包阶段尽量少用捕获过滤器先全量抓下来再用显示过滤器筛选因为漏抓是不可逆的。4.3 HTTPS 解密与 TLS 流量分析Wireshark 想解密 HTTPS需要拿到 TLS 会话的密钥。最常见的方式是环境变量 SSLKEYLOGFILE。以 Chrome 为例先设置环境变量指向一个文件路径再启动 Chrome浏览器会在访问 HTTPS 网站时把会话密钥写入该文件。然后在 Wireshark 的 Preferences - Protocols - TLS 里配置 (Pre)-Master-Secret log filename 指向同一个文件重新抓包或用 File - Open 载入 pcapng就能看到解密后的 HTTP/2 内容了。有个细节要注意SSLKEYLOGFILE 必须在浏览器启动前设置中途再改环境变量是无效的。Windows 上可以在系统环境变量里直接新增macOS/Linux 在终端里 export。这个方法不只对浏览器有效很多编程语言的 HTTP 客户端也支持 SSLKEYLOGFILE排查后端调第三方接口的问题时特别有用。4.4 典型分析场景网站数据包、VLAN 与 CTF 实战“wireshark怎么抓网站的数据包”这类问题流程很简单选择正确的网卡无线网卡或以太网卡开始捕获在浏览器里打开目标网站停止捕获在显示过滤器里输入 http 或 tls就能看到明文请求和响应。注意访问量大的页面会产生大量广播包和无关流量用 ip.addr目标IP 过滤会清爽很多。如果网络里有 VLAN 划分Wireshark 默认可能不解析 802.1Q 标签抓包看到的是带 0x8100 的未知协议。解决办法是在 Preferences - Protocols - IEEE 802.1Q 里启用 VLAN 解析配合 vlan.id 过滤器按 VLAN ID 筛选流量。做网络运维排查广播风暴、环路问题时这个技巧很关键。说到“密码比赛中的wireshark的writeup”CTF 比赛里流量分析题基本就是 Wireshark 的舞台。常规思路分三步先看协议分层异常协议比如非标准端口上的 HTTP、大量 DNS 请求往往是藏雷位置再用 http.request、tcp contains flag 这类过滤器定位可疑数据最后通过 File - Export Objects 把隐藏在流量里的文件抠出来常见的 secret.png、flag.zip 都藏在里面。不少新手一上来就一个个包翻着看效率极低学会用过滤器语法才是关键。5. ProxymanmacOS/iOS 开发者的优雅选择5.1 为什么 Proxyman 在苹果生态里越来越流行搜索“proxyman抓包iphone”的人数暴涨不是没有原因的。Proxyman 是一款原生 macOS 应用对 iOS 模拟器的无缝抓包支持是它的一大亮点——用 Charles 抓模拟器流量通常还要额外配置模拟器的代理地址而 Proxyman 安装完成后默认就能看到 iOS 模拟器里所有 App 的请求对做 iOS 开发的团队来说体验极佳。此外 Proxyman 的 UI 做得非常精致请求列表、响应预览、Header 查看都以快捷键和分栏形式组织用惯了再切回 Charles 会有点不适应。它还内置了脚本功能可以用 JavaScript 写规则对请求和响应做动态改写比如自动给某个接口追加 token比 Charles 的 Rewrite 更灵活。5.2 在 iPhone 真机上抓包的完整流程第一步Mac 上打开 Proxyman确认代理端口默认 9090。第二步iPhone 连接与 Mac 同一个 WiFi进入 WiFi 设置配置 HTTP 代理为手动服务器填 Mac 的局域网 IP端口填 9090。第三步Safari 打开 Proxyman 界面提示的地址下载并安装证书然后去“设置 - 通用 - 关于本机 - 证书信任设置”开启完全信任。第四步回到 App 发起请求Proxyman 就能看到手机到服务器的完整流量。遇到“设备走了代理就断网”的情况多半是证书没信任或者代理端口没写对。真机上如果某个 App 走了非 HTTP 协议比如 TCP 长连接Proxyman 默认也能看到连接层级但看不到内部数据这种场景还是得上 Wireshark。5.3 容易被忽略的高级功能Proxyman 自带的 Live 过滤和 Map 功能值得一试。Map Local 可以把线上接口直接映射到本地 JSON 文件Map Remote 可以做环境切换用法和 Charles 类似但配置界面更直观。另外它的断点功能可以在请求发出前、响应返回前分别设置断点动态修改后再放行。做接口异常注入测试的时候这套组合拳比 Charles 顺手不少。6. TraceEagle中文流量分析工具的新选择6.1 TraceEagle 的定位与价值TraceEagle 是这几款里比较特殊的一个。从名字和功能定位看它更偏向流量分析和日志溯源而不是传统意义的本地代理抓包。它擅长的是把本机或采集到的网络数据做可视化统计比如协议占比、Top 域名、会话列表、异常流量识别界面全中文对不喜欢折腾的同学非常友好。“traceeagle下载”搜索量持续走高说明国内确实有一批用户需要“开箱即用 中文界面 可读报告”的流量分析产品。6.2 下载安装与上手建议TraceEagle 的下载建议只去官网或官方渠道避免第三方软件站捆绑安装器。安装过程一般比较傻瓜需要留意的是是否提示安装驱动或证书——如果提示安装网络扩展是为了获取系统网卡权限属于正常现象。上手路径和 Wireshark 相反Wireshark 是先抓包再学会看懂TraceEagle 是先给你一份统计报告再按需进入某个会话查看详情。所以我通常把它当“先定位、再用 Wireshark 深入”的入口工具。7. 五款工具的横向对比和选型建议7.1 核心维度对比表对比维度CharlesFiddler ClassicWiresharkProxymanTraceEagle抓包层级HTTP/HTTPS代理HTTP/HTTPS代理链路层全流量HTTP/HTTPS代理流量分析聚合平台支持Win/macOS/LinuxWindows全平台macOS(含iOS)Windows/macOSHTTPS解密需装CA证书需装CA证书需要SSLKEYLOGFILE需装CA证书视版本支持断点改包支持支持不支持(只读)支持不支持Mock/映射Map Local/Remote有体验一般无Map Local/Remote无弱网模拟内置Throttle脚本全局模拟无内置无上手难度中等中等较高偏低低7.2 分场景推荐如果你是做 App 接口联调我的首选是 CharlesMac 上尤其顺手iOS 模拟器场景建议直接用 Proxyman。Windows 平替首选 Fiddler Classic免费、功能全弱网模拟也够用。需要分析底层协议、排查网络丢包重传、做安全审计和 CTF 流量题Wireshark 不可替代。只想要一份流量统计报告、快速了解流量大致构成TraceEagle 胜在简单直接。8. 通用抓包排查思路抓不到包时先别慌8.1 一套通用的代理流程不管是 Charles、Fiddler 还是 Proxyman配置顺序都是有套路的开启工具代理 - 确认监听端口 - 设备设置手动代理指向电脑 IP 和端口 - 安装并信任证书 - 发起请求查看流量。任何一步没做对都会表现为“抓不到包”。排查时按优先级检查电脑和手机是不是同一个网段、能不能互 ping代理端口是否写对、电脑端防火墙是否放行证书是否真正被系统信任iOS 大坑是漏掉“证书信任”开关App 是否强制绕过代理很多大厂 App 有安全策略Android 7.0 以上是否信任用户证书必要时需要把证书装进系统证书目录或用调试方案绕过证书校验——注意只在自己设备上做测试。8.2 HTTPS 解密常见异常处理证书无效重新下载安装确认系统日期时间正确证书链完整请求显示 CONNECT 但没有内容SSL Proxying 未勾选或 Host/Port 配置范围不对解出来的响应是乱码确认内容编码Charles 和 Fiddler 都有编码设置浏览器警告证书错误因为中间人证书不受浏览器信任在测试设备上手动信任即可生产环境千万不要全局信任未知 CA。8.3 一个我常用的调试快速恢复技巧很多朋友遇到抓包工具一开就断网第一反应是卸载重装。其实先检查系统代理把代理关闭网络往往就恢复了——这类十有八九是代理端口被程序占用或者代理指向了已关闭的端口。Windows 用 netsh winhttp show proxy 看一眼macOS 在系统设置 - 网络 - 详细信息 - 代理里检查比重装工具快得多。这套“最小恢复策略”是我踩过多次坑以后总结出来的分享给你。做了这么多年开发我自己的抓包工具组合是固定的日常接口调试用 CharlesWindows 办公机上用 Fiddler下沉协议层用 Wireshark临时在 Mac 上调试 iOS 项目用 Proxyman给同事输出流量报告时偶尔用 TraceEagle 辅助。说实话工具之间的功能差异远没有想象中大真正拉开效率差距的是你对“这一层流量到底经过哪些路径、哪个环节可能出问题”的理解。希望这篇对比能帮你少走点弯路把时间花在定位问题上而不是折腾工具本身。
返回列表