说实话我见过太多人倒在“抓包工具”这四个字上。前几天还有个读者问我“博主我装了Wireshark打开那一刻我就傻了满屏五颜六色的包我该点什么然后关了它卸载了。”问他本来想干嘛他说想看看自己电脑上某个软件在偷偷请求什么地址。这不是个例几乎每周都有人被选错工具这件事劝退。所以我干脆写一篇横评把Fiddler、Charles、Wireshark、Burp Suite、mitmproxy这五把刀挨个亮出来掰开揉碎讲清楚各自的定位、强项和致命短板。这篇文章不劝你“全都要”只帮你想明白一件事作为新手你的第一把抓包工具到底选哪个以及为什么。1. 先分清楚你是要抓“网页请求”还是“网络数据包”1.1 抓包工具不是一类东西而是三类很多新手对“抓包工具”的理解是一个筐什么都能往里面装。实际上这个领域至少分三个方向选错方向就像想拧螺丝却拿了个扳手工具本身没错但就是干不了你要干的活。第一类是应用层转发监听工具代表是Fiddler、Charles、Burp Suite、mitmproxy。它们的工作方式是在你电脑上开一个监听端口把HTTP/HTTPS请求引到这个端口过一遍你就能看到每次请求的URL、请求头、响应体、Cookie、JSON数据。前端联调、排查接口报错、看App请求不发出去、抓小程序流量95%的日常需求都属于这一类。第二类是网络链路嗅探工具代表是Wireshark。它直接读取网卡上的原始数据包能看到MAC地址、IP层、TCP握手、DNS查询、TLS证书交换甚至可以冲出HTTP和HTTPS之外去看ARP、ICMP、TCP重传这些底层的玩意。但它的信息量极其巨大对一个只想看看某个请求返回了什么JSON的新手来说用Wireshark就像用电子显微镜找钥匙能看到无数细节却更找不到目标了。第三类是硬件接口级抓包比如USB抓包、蓝牙抓包。USB抓包常用Wireshark加USBPcap驱动蓝牙抓包要看HCI日志。这一方向偏嵌入式、硬件调试离“新手的第一把刀”就更远了。把这三类搞清楚你就明白为什么很多教程写得没错但就是帮不到你——因为它们默认你已经知道自己要抓哪一层的包。1.2 为什么要“中间人”才能看到HTTPS内容紧接着新手就会问一个问题我装了Fiddler为什么打开的网页全是乱码什么内容都看不到答案是现在的HTTPS流量是加密的抓包工具如果不对流量做解密它只能看到一个加密的字节流。解密的基本逻辑是“中间人转发”。可以把它理解成你和服务器之间本来在说悄悄话现在抓包工具插在中间当翻译官你发给服务器的内容先经过翻译官翻译官把它解密并记录然后再加密发给服务器。反向响应也一样。要做到这一点你的设备得信任翻译官也就是把抓包工具生成的根证书安装到系统信任区。这一步做完抓包工具才能解密HTTPS。很多人卡在这个“装证书”环节后面我会专门写一节避坑清单。这里先记住凡是不需要装证书就号称能直接抓到HTTPS明文的东西要么是碰运气要么是误导。1.3 五把刀的定位速查表在进入逐个剖析之前先拉一张总表。这张表按“新手友好度”从高到低排的工具核心定位学习成本费用适合人群FiddlerHTTP/HTTPS调试Windows向低Classic免费前端、后端、测试、新媒体运营CharlesHTTP/HTTPS调试跨平台低付费30天试用前后端联调、移动端开发Wireshark底层网络协议分析高免费开源网络工程师、嵌入式、安全分析Burp Suite接口安全检测与渗透高社区版免费安全测试、接口漏洞排查mitmproxy命令行/脚本化流量处理中高免费开源自动化测试、接口mock这个表的信息量挺大的但我建议你别只看这张表就草率决定。每个工具的真实手感远远不是一个表格能说清楚的。下面挨个讲。2. Fiddler和Charles绝大多数新手的终点其实就在这两个里面2.1 FiddlerWindows玩家零门槛上手Fiddler我用了非常久它在Windows平台上的地位很难被撼动。Fiddler Classic现在依然是免费版安装包几十MB双击装上就能用。它的默认监听端口是8888启动后会在系统网络转发设置里自动登记你电脑上任何走HTTP/HTTPS的请求都会从它眼前过。打开Fiddler之后那个界面第一眼可能有点吓人左边是一长串会话列表右边是请求详情和响应详情。但真正需要你记住的不多。最常用的是会话列表上面那一条命令输入栏你直接输入目标域名回车列表就会被过滤成只显示这个域名的请求。这个操作比点鼠标配置Filters还要快新手一定要学会。HTTPS解密在Fiddler里也简单Tools Options HTTPS勾选Decrypt HTTPS traffic弹出的提示选Yes证书会被自动装到系统信任区。关上弹窗再刷新页面请求里的明文内容已经能看到了。我实测下来Fiddler解码JSON响应体、查看请求Cookie、看响应头这些操作都是零学习成本级别的顺手。Fiddler的短板也比较明显。第一它在macOS上的体验一般很多功能是为Windows设计的。第二抓底层TCP/IP的包它干不了它只处理HTTP/HTTPS层。第三移动端抓包时如果手机安卓版本在7.0以上用户证书默认不会被应用信任这一块比较麻烦后面章节展开讲。2.2 Charles跨平台多端联调更顺手Charles是另一把热门刀。它跨平台macOS和Windows都能跑UI比Fiddler精致不少会话列表按域名做树状展示第一眼就比Fiddler那套白底黑字的传统界面更有亲和力。Charles默认监听端口也是8888和Fiddler一样是转发方案核心原理完全一样。Charles真正让我喜欢上它的地方是几个非常实用的功能。Breakpoints可以让你在某个URL的请求发出前或响应返回前打断手动修改参数再放行这对调试签名逻辑、Mock异常返回特别有用。Map Local可以把线上资源映射到本地文件前端不用起服务也能调页面样式和逻辑。Throttle可以模拟弱网环境测App在2G/3G下的表现这对移动端开发者是刚需。但Charles有一个绕不开的痛点它收费。官方提供30天试用到期后虽然还能打开会有强制延时用起来相当闹心。市面上的破解版又很容易被恶意篡改装了就后悔。所以我一般只建议两种情况买Charles一是你的日常工作是前后端联调和移动端调试二是你本身就愿意为工具付费换取更好的体验。如果只是偶尔抓包看看请求Fiddler或下面要讲的工具就够用了。2.3 两者怎么选三个判断标准Fiddler和Charles在能力上是同一梯队的选谁更多是主观偏好的问题。我总结三个判断标准。第一看平台。主力机是Windows无脑先试Fiddler主力机是macOSFiddler会让你觉得别扭优先考虑Charles。第二看要不要跨平台换机。经常在公司Windows电脑和家里Mac之间来回切换统一用Charles能省去适应成本。波第三看你对界面颜值的在乎程度。Fiddler的信息密度高、效率优先Charles的UI对新手更友好在会话量大的时候找请求更直观。如果你实在拿不准我的建议是先装Fiddler免费、够用、马上能上手。用两周觉得哪里不对劲或者你后面要长期干移动端联调再换Charles试一下。第一把刀不要求完美先用起来才是关键。3. Wireshark为什么不适合当第一把刀但又早晚得学3.1 它和Fiddler们不在一个层次Wireshark是这一堆工具里名气最大的也是新手最容易“慕名而装、装上就荒废”的。说到底是因为它解决问题的层级和Fiddler们完全不同。Fiddler和Charles关心的是HTTP层面URL是什么、状态码多少、JSON返回了什么。Wireshark关心的是数据包层面一个TCP连接的握手过程、每一个包的Seq和Ack、DNS查询几毫秒返回、TLS证书交换的完整步骤。它能把你电脑上所有进出的流量事无巨细地记录下来包括那些你根本不知道的系统后台请求、局域网广播包、组播包。所以新手一打开Wireshark看到屏幕上成千上万条自己完全不认得的包那种信息过载带来的打击感是劝退的主要原因。我自己第一次正经用Wireshark是排查一个“网页偶尔打不开”的问题。应用层工具看不出任何异常后来用Wireshark抓包才发现是TCP重传非常多链路质量拉胯。那一刻我才明白Wireshark适合的是“从网络协议层面找原因”的场景而不是“看某个接口返回了什么”的场景。方向完全不同。3.2 新手什么时候才需要碰它那到底什么情况下新手可以碰Wireshark我的经验是下面四类场景出现时你才值得花时间学。第一类是排查网络连接类故障某个端口连不上、TLS握手失败、DNS解析失败、网页时好时坏。这些现象往往在应用层里只表现为“请求超时”或“连接被重置”真正的原因藏在TCP、TLS这些协议层里面必须用Wireshark才能看到。第二类是分析慢请求的瓶颈请求慢到底是DNS慢、TCP握手慢、TLS握手慢还是等待响应慢Wireshark的Time列和Statistics菜单能帮你拆得明明白白。第三类是调试底层协议或外设比如自定义TCP协议的服务端和客户端联调再比如USB抓包、蓝牙抓包这类场景Fiddler一类工具完全使不上劲。第四类是安全分析看一个程序有没有在偷偷向外发包、连接到什么IP、传输了什么数据。Wireshark的Follow TCP Stream功能可以直接还原一段TCP会话的全部内容特别适合这种分析。这里插一句如果真的只想看某个程序有没有在偷偷联网用Wireshark可能有点重。Windows上可以先看资源监视器的网络活动选项卡macOS也可以用一些轻量工具先锁定是哪个进程在发包再用Wireshark深挖内容。这样能省不少力气。3.3 USB抓包和蓝牙抓包的实际用法说回标题里热搜词反复出现的USB抓包和蓝牙抓包。这两个方向确实是Wireshark的应用范围但它们不是新手第一阶段的菜最多算是进阶菜单。USB抓包需要额外装一个USBPcap驱动。装好之后Wireshark的捕获接口列表里会多出一个以USBPcap开头的接口选中它就可以开始抓取USB总线上传输的数据。常用于调试自制的USB外设、分析U盘主控的指令交互、排查设备掉线问题。这套方案在Windows下相对成熟前提是你的驱动和Wireshark版本匹配。蓝牙抓包稍微复杂一点。一种是从蓝牙适配器的HCI层抓日志Wireshark可以直接打开并解析这些日志另一种是用专用的BLE嗅探硬件配合Wireshark分析低功耗蓝牙的广播和连接事件。后者需要额外花钱买硬件对纯软件新手来说门槛更高。所以这两个场景我只提示一个结论等你在应用层抓包熟练了真的需要面对USB或蓝牙设备调试时再回来学Wireshark你会发现自己上手快非常多。基础概念是通用的。4. Burp Suite和mitmproxy安全向和脚本向的两把“偏门刀”4.1 Burp Suite想研究接口安全再上它Burp Suite在我接触过的工具里属于那种“看起来朴实用起来狠”的。它是Java写的默认监听端口是8080。社区版免费功能上砍掉了大部分自动化工具但核心的拦截、改包、重发这些能力都在够你学很久。它的核心工作流和Fiddler们不一样。Fiddler的重心是“看”Burp的重心是“改”和“打”。Intercept拦截功能可以把每一个经过的请求拦下来你可以在发送前修改请求头、参数、签名然后再放行。Repeater功能则可以把任意一个历史请求单独拎出来你连续点发送看不同参数翻来覆去地试探时服务器的反应。这对接口安全测试来说是基本功。我举一个实际场景你调试一个带签名参数的登录接口每次改动请求体都会因为签名校验失败返回错误。用Burp的拦截功能你可以先看前端的正常签名然后试着把参数改掉但保留原签名看服务器到底只校验签名还是连参数一起校验。这种测试逻辑用Fiddler也能做但Burp的交互方式更适合这种反复修改试探的节奏。Intruder在社区版里被限速标准版的爆破和字典遍历用起来非常爽但那属于安全进阶内容新手知道有这么回事就行。还需要注意Burp Suite默认监听的是127.0.0.1:8080使用前需要把浏览器的网络转发设置指到这个端口并通过访问http://burp下载它的CA证书安装信任。这一步装不好后面抓到的全是加密乱码。4.2 mitmproxy面向自动化玩家的命令行流派mitmproxy是五把刀里最特殊的一把。它没有传统意义上的图形界面主程序是一个命令行工具但提供了三个入口mitmproxy是终端交互界面mitmdump是纯命令行输出mitmweb是网页版界面。默认监听端口8080。它最大的优势是可以用Python脚本直接处理流量。我随便写一个例子比如你希望所有经过工具的请求都自动加一个自定义请求头def request(flow): flow.request.headers[X-Debug-Mark] hello把这段代码保存成addon.py然后在终端里运行mitmdump -s addon.py所有经过8080端口的请求都会被加上X-Debug-Mark这个请求头。这种脚本化能力让mitmproxy非常适合接口自动化测试。你可以用它在测试环境批量改写接口地址也可以录制一段真实流量再通过脚本回放对比响应差异还可以做线上的小规模mock。这些玩法对搞自动化和测试的朋友来说是真正的生产力工具。但有一条我必须直说mitmproxy不适合作为纯新手的第一把刀。它对命令行操作、Python脚本、HTTP协议都有一定的前提要求。你连Fiddler都还没摸熟就直接上mitmproxy很容易被各种配置问题绕晕最后得出一个“这种工具真难用”的错误结论。它更适合作为你的第二把或第三把工具在已有基础之后再扩展。4.3 安全意识抓包别乱抓合规是底线既然提到了安全工具我必须穿插一段现实提醒。抓包能看到的数据超乎普通用户的想象正因为能力大更该管住手。你自己设备上的流量随便抓公司配发的电脑和账号按公司制度来别人家的服务接口、网课平台、App接口未经授权不要恶意测试、爬取或传播数据。尤其现在很多接口都做了风控短时间高频请求很容易触发账号封禁也不要做这种既违规又没收益的事。具体到网课视频抓包这个热搜词我多说一句。如果你是学员视频加载不出来、找不到某节课的接口地址导致播放异常用抓包工具定位请求排查网络问题这是很正常的开发调试思路。但如果你是想把整个课程的文件扒下来重新分发这不仅涉及侵权还很可能被平台的反爬策略直接拉黑账号。工具没有原罪用的人心里得有分寸。5. 按场景落地小程序、网课视频、模拟器、外设抓包怎么选5.1 小程序抓包从微信开发者工具到真机小程序抓包也是热搜榜的常客。它有几个不同的抓包路径我按推荐程度从高到低讲。第一选择是微信开发者工具这是新手最省事的方案。开发者工具自带调试面板打开后Network标签页里能直接看到小程序发出的所有请求、请求头、响应体连HTTPS解密都帮你做完了不需要额外配置任何证书。前提是你手上有小程序的源码或在开发者工具里打开过这个项目否则只能走下面的方案。第二选择是在手机端配置网络转发到电脑让小程序流量经过Fiddler或Charles。操作链路是电脑上开好工具并开启HTTPS解密手机连同一个局域网在WiFi设置里把网络转发指向电脑IP加工具端口再用手机浏览器访问工具提供的证书下载地址安装并信任证书最后打开小程序。实测下来问题通常出在最后一步——微信对用户证书的信任策略很严格安卓7.0以上默认不信任用户级证书你需要把证书安装到系统证书目录这往往需要模拟器或root环境普通手机不一定能搞定。第三选择是Charles配合代理转发工具做全局转发思路是把手机的所有流量先引到某个转发工具再由转发工具指向电脑上的Charles。这个方案能解决一部分“小程序不走系统转发设置”的情况但脚本和配置都比较绕新手不建议一上来就试。我先说结论小程序抓包能用开发者工具就用开发者工具那是最省心的路径。5.2 网课视频抓包定位资源地址的关键逻辑网课视频抓包的热度一直很高但我建议先分清目的。如果你是开发者想搞清楚一个在线教育网站的视频是用的什么播放协议、m3u8索引从哪个接口返回、分片文件存在哪个CDN域名下那抓包是标准操作。操作逻辑不复杂开Fiddler或Charles开启HTTPS解密并过滤视频服务的域名刷新播放页开始播放然后在会话列表里找类型为m3u8或mp4的响应。点开之后响应的JSON或纯文本内容一般会包含播放地址的完整URL或分片地址列表在响应头里也经常能看到缓存策略、CDN厂商信息。这里有个实用技巧不要一上来就同时开好几个过滤条件。先按域名维度过滤然后看一眼哪些URL的响应体特别大按Size排序最大的往往就是视频或索引文件。定位到资源地址之后你拿这个地址去排查播放失败的原因就方便很多。但再次提醒定位到地址只用于合法范围内的网络问题排查未经授权下载和传播视频内容属于侵权行为我不鼓励也不讨论。5.3 Windows mumu模拟器抓包怎么设置“windows mumu 抓包工具”出现在热搜里不意外很多人是用模拟器跑App看请求比在真机上折腾证书方便不少。mumu模拟器抓包的核心逻辑和真机一样只是网络环境的配置方式略有差别。先把Fiddler或Charles在电脑上开好确认监听端口。再把mumu模拟器的WiFi设置打开长按当前的WiFi网络修改网络把IP改为电脑在局域网里的IP端口改为抓包工具的端口。保存后用模拟器里的浏览器访问工具提供的证书下载地址下载并安装证书。到这一步大部分App在模拟器里发出的请求就能被看到了。实际踩坑最多的地方是两个。第一是模拟器网络模式造成的连通性问题。如果模拟器使用的不是NAT模式电脑IP可能访问不通你要把模拟器网络模式调整为NAT或桥接对应模式。第二是证书装完之后没有在系统设置里手动信任。安卓系统安装用户证书后还需要在“安全 加密与凭据 信任的凭据”里检查部分App只认系统证书这一步不做等于白装。还有一个额外提示如果App启用了SSL Pinning或证书绑定即便证书装好也会报网络错误这不是你配置错了是你抓不到这种特定机制下的流量后面单独讲一句怎么办。5.4 App抓包遇到SSL Pinning怎么办SSL Pinning是App端一种证书绑定机制。它会在App内部写死一个服务端证书的指纹或公钥正常通信时App只信任自己内置的那个证书而不是系统信任列表里的证书。所以抓包工具安装的证书对这类App无效表现就是App提示网络异常、连接失败而抓包工具里什么都看不到。在合规前提下处理思路一般是一是使用调试版的App很多App的debug包会关闭SSL Pinning这是最省事的方式二是用逆向工具在运行时hook掉证书校验函数这属于安全和逆向方向工作量和风险都高新手不要轻易尝试三是找App是否提供“信任用户证书”的开关比如一些内部测试App会在开发者选项里提供。多数情况下遇到SSL Pinning的App建议直接接受“抓不到”这个事实把精力转到你能抓到的部分。能在用户态抓到的流量已经覆盖了大部分联调和问题排查场景。6. 五把刀横向对比表与新手避坑清单6.1 “第一把工具”选型清单场景决定结论现在我给出一个比较干脆的选型建议直接对应不同场景你的主要需求第一把抓包工具理由排查网页接口报错、看请求返回Fiddler免费、零门槛、Windows顺手前后端联调、移动端开发、跨平台CharlesUI清晰、功能完整、多端一致分析网络连接故障、TCP/DNS问题Wireshark能直接看到协议层语义接口安全测试、反复改包试探Burp Suite拦截重放工作流最顺手自动化测试、批量mock、脚本化mitmproxyPython addon扩展能力强拿不定主意就看这条经验日常开发调试类需求无脑选Fiddler用两周上手之后再依据自己感受决定要不要换。想深入网络协议或安全方向再按具体方向去学Wireshark或Burp Suite。第一把刀的核心作用是让你快速建立“我能看到流量了”的感觉工具越早上手越好。6.2 我踩过的坑排行榜按翻车次数排序这些年用抓包工具踩过的坑可以列个排行榜新手照着检查能省下大量时间。第一名是证书装错位置或没装完整。Windows上装完证书后一定要启动certmgr.msc看证书是不是真的出现在“受信任的根证书颁发机构”下面而不是“个人”或其他分类里。手机上装完证书还要去系统设置里手动信任iOS尤其麻烦需要在“设置 通用 关于本机 证书信任设置”里打开开关。很多新手说“我装了证书还是抓不到”九成是这步没做完。第二名是端口冲突和端口被占用。Fiddler和Charles默认都是8888如果你同时开了两个工具后启动的会提示端口被占用实际有权限的其实是先启动的那个。Burp Suite默认8080有时会和本地已经运行的其他服务冲突。遇到抓不到包先看一眼工具左下角有没有报端口绑定错误再决定要不要换端口。第三名是系统转发设置没恢复。工具正常退出时会把系统网络转发设置恢复原状但如果你强杀进程、蓝屏、断电网络转发设置会残留在系统里表现就是电脑上不了网或者所有请求都被引到一个已经不存在的端口。解决办法是手动进入系统网络设置里把本地转发关闭或重开一次抓包工具让它自动接管。这个问题容易排查但第一次遇到时真的会慌。第四名是过滤器写错导致“以为没抓到”。Fiddler里输入过滤域名时如果写的是和实际请求不完全匹配的字符串列表会显示为空你会误以为工具坏了。所以新手排查时先把过滤条件清空看工具是不是还在持续记录请求。有记录说明工具正常是你的过滤条件有问题。第五名是公司电脑的管控软件拦截证书和本地端口。这个情况在企业环境里很常见。电脑装了终端安全管理软件会在系统层面拦截自签名证书或限制本地监听端口。表现就是抓包工具反复装证书无效、端口无法监听。如果你在公用电脑上遇到这种问题不用硬折腾换自己个人电脑测试即可公司安全策略没必要强行绕过。6.3 抓包的核心能力是观察不是工具数量最后说一点个人体会。选来选去你会发现工具之间的差距远没有想象中大。真正拉开人和人差距的是面对一个现象时能不能提出正确的问题以及能不能在茫茫多的字段里找到那条关键线索。抓包工具的终极形态也不是把软件装齐而是把一款工具用到足够熟。Fiddler抓不到的换Charles大概率还是抓不到Wireshark看不懂的换Burp也不会自动变看得懂。工具做得再好也只是把信息呈现到你面前观察、判断、定位这些能力还是得靠你自己在一次次的抓包实战里喂出来。我建议你从今天这篇横评里选出第一把刀给自己一周时间每天故意抓几个包看看随便打开一个网站看它的请求列表找一个接口分析它的请求参数和响应数据把工具用成习惯。等你能闭着眼睛在会话列表里快速找到某一个请求的时候你再回头看这篇文章你会发现自己已经能判断什么时候该换工具了。到那时候第一把刀是谁已经不重要因为你已经知道怎么选了。