
日常做开发、搞测试、排查网络故障的人手里肯定离不开抓包工具。不管你是要调试接口、分析页面请求、看App有没有偷偷上报数据还是想搞清楚某个视频流的地址到底在哪全平台可用的网络抓包软件总能派上用场。市面上的抓包工具名字一堆分布在不同平台、不同场景真正免费又好用的其实就那么几个但很多人一上来就卡在选型上。这篇文章就围绕“全平台、网络抓包、抓包工具”这三个关键词展开我会从工具选型逻辑讲起把主流的免费跨平台抓包软件逐个拆一遍连手机App、小程序、USB、蓝牙这些特殊场景的抓包方案也一起整理出来。内容适合刚接触抓包的后端开发、客户端开发、测试工程师也适合做网络运维和协议分析的朋友。前后梳理了好几个月的实操经验包括证书配置、过滤器语法、抓包踩坑直接照着抄就行。1. 全平台抓包先搞清楚工具选型的基本逻辑1.1 抓包到底在抓什么很多人以为抓包就是“看请求和响应”其实这只是最表层的东西。抓包工具在系统底层做的事情是捕获网卡上经过的数据帧然后把网络协议栈层层解开还原成你能看懂的HTTP请求、TCP连接、DNS解析、TLS握手过程。也就是说抓包不是某个软件“发明”了数据而是它把原本就存在于网络中的数据“截获并翻译”给你看。从技术本质上分抓包工具工作在网络的不同层级。像Wireshark这种是基于pcap库的直接抓取链路层的数据帧网卡上跑什么它全都能看到而Fiddler、Charles这类工具则是把自己注册成系统代理应用层的数据会主动经过它所以它们天然更关注HTTP/HTTPS协议。这也就解释了为什么有些工具能分析“TCP重传”有些工具却只擅长“改请求、看响应”。理解了这一点你在选工具的时候就不会被带偏。做协议分析、排查网络层问题首选Wireshark只调接口、看请求参数、调试问题Fiddler或Charles更顺手搞Web安全测试Burp Suite几乎是标配而在命令行环境或服务器上tcpdump加mitmproxy的组合才是王道。1.2 免费工具怎么选先按平台和使用场景分类所谓“全平台”指的是Windows、macOS、Linux三大桌面系统上都能跑而不是说只有一个平台的版本。很多新手在Windows上用惯了Fiddler换成Mac之后发现Fiddler Classic装不了就以为没工具可用了其实跨平台方案早就很成熟。选型的时候我习惯先问三个问题你要抓什么流量你在什么环境里操作你需不需要改包重发如果是纯看流量分析协议Wireshark是免费工具里覆盖面最广的桌面端三平台全覆盖还有命令行版TShark远程服务器上也能用。如果核心需求是HTTPS调试、查看请求细节、定向抓取某个App或小程序的流量Fiddler Everywhere、Charles、mitmproxy这些代理型工具会更友好因为它们天然就能解密HTTPS。如果做安全测试、想手动构造和重放数据包Burp Suite社区版虽然有点限制但代理、拦截、重放这些核心功能都还是免费的。下面这张对比表把目前主流的免费或提供免费版本的全平台抓包工具放在一起方便你横向参考。工具名称支持平台免费情况主要场景上手难度WiresharkWindows / macOS / Linux完全免费开源协议分析、网络排障、底层抓包中高tcpdump / TShark所有平台命令行完全免费开源服务器抓包、脚本化抓包中高Fiddler EverywhereWindows / macOS / Linux基础功能免费HTTP/HTTPS调试、接口测试低Fiddler ClassicWindows完全免费HTTP/HTTPS调试、老牌首选低CharlesWindows / macOS / Linux可免费试用有启动延迟移动端调试、HTTPS代理抓包低Burp SuiteWindows / macOS / Linux社区版免费Web安全测试、渗透测试中mitmproxy / mitmwebWindows / macOS / Linux完全免费开源命令行抓包、Python脚本扩展中ProxymanmacOS / iOS免费基础版Mac本地调试、iOS抓包低2. 主力全平台抓包工具逐个拆解2.1 Wireshark协议分析的王牌Wireshark这个工具做网络的人应该没人不知道它免费、开源、全平台正儿八经的协议分析神器。它的抓包原理是直接通过操作系统的pcap接口读取链路层数据帧所以你不仅能看到HTTP请求还能看到TCP握手、TLS证书交换、DNS查询、ARP广播这些底层细节。换句话说只要流量经过你正在监听的网卡它都能记录下来并帮你解析成可读的结构化信息。Wireshark最强大的地方在于协议解码能力。它内置了上千种协议的解码器从常见的HTTP、TCP、UDP到工业协议、蓝牙HCI、USB流量都能解。你只需要在“显示过滤器”里输入一句语法比如http.request.method GET它就能立刻帮你把所有GET请求过滤出来输入tcp.analysis.retransmission它就直接把所有TCP重传包高亮显示。这种“从海量数据流中快速定位问题”的能力是其他代理型工具完全没法比的。我实际用得最多的一个功能是“Follow HTTP Stream”跟踪流。抓完包之后右键选中一条HTTP记录选择追踪TCP流Wireshark会把这次完整请求的请求头、请求体、响应头、响应体全部按顺序拼在一页显示出来。排查接口为什么返回500、某个字段为什么没传对这个功能效率极高。但Wireshark也有明显的学习门槛。过滤器语法不算复杂但新手初次打开看到几万条数据包根本不知道从哪看起。我的建议是先学会三四个核心过滤器按IP过滤ip.addr 192.168.1.10、按端口过滤tcp.port 443、按协议过滤http或dns、按请求方法过滤http.request.method POST。只要把这几个记住日常排查问题就够用了。2.2 Fiddler系列HTTP/HTTPS调试的效率之选Fiddler在老一代Windows开发者心中的地位很高它不是一个网络层抓包工具而是把自己注册为系统代理应用层所有的HTTP/HTTPS流量都会经过它。正因为这样它天生就能看懂请求和响应能一键解密HTTPS还能打断点、改请求、模拟弱网在做接口调试和前后端联调的时候非常顺手。目前Fiddler有两套产品线Fiddler Classic只支持Windows完全免费老用户习惯性称它为“经典版”Fiddler Everywhere是跨平台版本支持Windows、macOS、Linux基础抓包功能免费界面更现代化它也保留了Classic里的核心交互逻辑。如果你现在用的不是Windows系统直接用Fiddler Everywhere就行如果你是Windows用户其实Classic的体验依然很好而且不用登录账号、没有任何平台限制。Fiddler最让我离不开的功能是AutoResponder自动响应器。它可以把某个请求直接映射到本地文件或者返回预设的响应内容。做前端开发的时候后端接口还没就绪我会先用AutoResponder把假数据放上去页面立刻就能正常联调不用干等后端。这个功能在调试异常流程、模拟不同返回码时也特别有用。另一个用得多的功能是Composer相当于一个可视化接口调试面板。你可以从左侧会话列表里把任意一条请求拖进来修改方法、地址、请求头、请求体之后就重新发送观察响应变化。对比有些独立的API调试工具它的优势在于上下文是完整的——你修改的是真实抓下来的请求而不是手工造出来的。2.3 Charles和Burp Suite开发调试和安全测试场景Charles是macOS生态里非常流行的抓包工具当我第一次在Mac上用它抓iPhone的包时只需要在手机上把WiFi代理指向Mac的IP和Charles监听的8888端口再安装并信任证书HTTPS流量就能在Charles里明文看到。它在移动开发圈的普及率很高因为苹果生态里很多工具链不如Windows那么齐全Charles提供了一个足够顺手的跨平台方案。Charles的核心机制也是代理但它的界面设计更强调“会话结构”——左侧按照域名和URL自动归组你可以快速看出某个App调用了哪些接口、每个接口的耗时是多少。它的“SSL Proxying”设置支持按域名精确控制是否解密HTTPS这样可以避免抓到大量无关流量。另外Charles的Map Local和Map Remote功能也和Fiddler的AutoResponder对应适合做重定向和本地替换。Burp Suite则是完全不同的方向它面向Web安全测试场景代理只是它的众多功能之一。社区版免费可以跨平台运行在Windows、macOS和Linux上。Burp的代理模块可以拦截所有经过它的HTTP/HTTPS请求你可以在Repeater里修改请求并重放在Intruder里做参数爆破在Decoder里做编码转换。安全测试人员常说的“抓包改包”九成情况下指的就是Burp。不过Burp的入门门槛比Fiddler高不少它的配置方式也更“重”。默认情况下Burp需要关闭系统代理或安装扩展证书而且社区版的Intruder速度受限专业版才支持并发爆破。我的建议是如果你不是做安全方向日常接口调试优先用Fiddler或Charles如果做Web渗透或者需要手动构造攻击报文再把Burp用起来。3. 特殊场景的抓包方案手机App、USB与蓝牙3.1 小程序与手机App抓包代理加证书那套事手机App和小程序用的是加密的HTTPS流量想抓到明文核心步骤就两步把流量引到你的抓包工具上然后让手机信任抓包工具签发的CA证书。一般流程是在电脑上打开Fiddler或Charles开启“允许远程连接”手机连同一个WiFi后把代理指向电脑IP和监听端口然后访问一个特殊地址下载安装CA证书安装后在系统设置里手动信任。但这里有个常见的坑Android 7.0及以上版本App默认不信任用户安装的证书即使你装了CA证书很多App仍然报“证书校验失败”或直接断网。原因就是Android的网络安全配置默认只信任系统证书。解决办法要么是root后把证书移入系统证书目录要么通过反编译修改App的networkSecurityConfig要么用Frida配合脚本绕过SSL Pinning。对于只想调试接口的普通开发者我建议直接用模拟器比如Windows上的MuMu模拟器配合Fiddler把证书装进系统镜像里比真机折腾起来省心很多。小程序抓包的情况更特殊。先说微信小程序它在移动端默认不走系统代理所以常规的“手机设置代理”方案在部分新版本上无效。实测下来最稳妥的方式是用Windows版微信在电脑上登录微信后打开小程序然后让Fiddler或Charles抓电脑端的HTTPS流量。电脑端的微信流量会走系统代理所以能直接抓到小程序发起的请求。如果你在模拟器里装了微信也可以用类似思路但要额外处理模拟器网络与宿主机代理的连通性问题。小红书、支付宝这类App内嵌的小程序或H5原理都差不多核心就是“让目标请求走代理”。iOS端抓包相对简单一点但证书信任多一步装完描述文件后还需要去“设置—通用—关于本机—证书信任设置”里手动打开该证书的完全信任开关否则HTTPS照样解密不了。3.2 USB抓包怎么搞提到USB抓包工具哪个最好用这个问题得分平台。Windows平台上最主流的免费方案是USBPcap它本身是一个抓包驱动配套的界面非常简陋但抓出来的文件可以保存为pcap格式直接用Wireshark打开分析。USBPcap安装后需要管理员权限抓包时会让你选择捕获哪条USB总线或设备选定之后运行再复现一次你的USB操作这样数据的完整交互过程就被记录下来。Linux平台可以用内核自带的usbmon模块不需要额外安装驱动只需要加载usbmon并挂载调试文件系统通过Wireshark的usbmon接口就能抓取USB流量。macOS平台比较麻烦苹果对USB驱动的管控很严格免费方案非常有限Wireshark只能抓有限的USB流量很多USB设备的数据根本捕获不到更靠谱的方案是借助Bus Pirate这类硬件调试工具或者商业版的USB协议分析仪。对于绝大多数人来说Windows的USBPcap加Wireshark是最省事的选择。抓USB流量不像抓网络流量那样能立刻看到HTTP明文USB包里全是传输层的数据块需要结合你设备的协议规范去解读。所以USB抓包更多用于嵌入式设备调试、驱动开发、外设协议逆向这些专业场景。3.3 蓝牙抓包的设备和工具蓝牙抓包又是一个不同维度的领域想抓到完整的蓝牙通信数据光靠软件是不够的因为蓝牙流量走的是无线电而非网卡普通电脑根本收不到。你需要一个专门的蓝牙嗅探硬件把空中的蓝牙数据包截获下来再交给软件解析。目前最常见的低成本方案是Nordic的nRF Sniffer for Bluetooth LE。它需要搭配一块nRF52840 USB Dongle大概一百多块钱固件刷成Sniffer模式后插到电脑上用Wireshark直接选择该设备作为捕获接口就能实时看到周围的蓝牙LE广播包和连接数据包。这套方案的好处是Wireshark原生兼容解析出来的报文结构很完整广告数据、扫描响应、LL控制包都能逐层展开看。Android设备还有一个另类方案在开发者选项里打开“启用蓝牙HCI信息收集日志”系统会把蓝牙协议栈收到的HCI数据包保存为btsnoop文件。拿到这个btsnoop文件后用Wireshark打开就能看到这台手机收发过的蓝牙数据包。这个方案不需要额外硬件但问题在于它只能看自己设备上的蓝牙数据看不到其他设备之间的通信。如果你想分析的是经典蓝牙BR/EDR或者需要抓两个外设之间真正的空中数据包还是得入手Ellsys或Frontline这类商业蓝牙分析仪价格很贵一般个人开发者用不上。4. 一次完整的抓包实操从零开始抓到HTTPS请求4.1 配置代理与安装CA证书这里我用Fiddler Classic在Windows系统上抓浏览器和手机App的HTTPS流量做示例完整走一遍流程你换到Charles或Fiddler Everywhere也完全类似。第一步打开Fiddler菜单里的Tools—Options—HTTPS勾选“Capture HTTPS CONNECTs”和“Decrypt HTTPS traffic”这时候会弹出提示是否信任Fiddler根证书选“Yes”。这一步的实质是把Fiddler生成的根证书安装到你的Windows系统证书库里。只有完成这步浏览器访问HTTPS网站时才不会因为证书不受信任而报错。第二步确认代理端口。Fiddler默认监听8888端口在Tools—Options—Connections里可以看到。如果要抓手机上的流量打开“Allow remote computers to connect”然后查看你电脑在局域网里的IP地址命令行里输入ipconfig查IPv4地址。手机连上同一个WiFi在网络设置里把代理设为“手动”服务器填电脑IP端口填8888。第三步手机安装证书。用手机浏览器访问http://电脑IP:8888页面上会有一个FiddlerRoot certificate的下载链接下载后安装到手机证书区。iOS用户装完描述文件后要记得去证书信任设置里开启完全信任。Android用户装完后建议先去浏览器随便访问一个HTTPS网站确认能正常打开且Fiddler能看到明文再继续后面的App抓包。这一步最常遇到的问题就是“装了证书还是不信任”九成原因是Android 7.0以上的用户证书信任机制。你可以在手机上用命令查一下证书是不是装到了“用户证书”区域如果App坚持不认就只能想办法进“系统证书”区域或者用模拟器方案绕开。4.2 过滤器的核心用法抓包工具一旦跑起来流量是海量的尤其是在电脑上开着浏览器、微信、各种App一分钟就能刷出几千条请求。这时候如果不过滤你根本找不到想看的那个接口。过滤能力的使用熟练度直接决定了抓包效率。Fiddler的过滤器在左下角的“Filters”页签里。最简单的用法是勾选“Use Filters”然后在Hosts区填上你要抓的域名比如www.example.com它就会只显示来自该域名的请求。更精细的做法是在“Request Headers”里填特征字段或者按响应状态码过滤比如只看500、403的请求。Wireshark这边更依赖显示过滤器语法。我整理几个高频使用场景的过滤器写法你直接复制就能用# 只看某个IP的流量 ip.addr 192.168.1.100 # 只看HTTP GET请求 http.request.method GET # 只看某个域名的HTTPS握手TLS SNI过滤 tls.handshake.extensions_server_name contains api.example.com # 只看所有TCP重传包 tcp.analysis.retransmission # 只看DNS查询 dns.flags.response 0熟练掌握这些语法之后你用Wireshark排查问题的速度会提升一个层次。比如用户反馈某功能请求很慢我先过滤出该域名的所有TCP流然后看发起时间间隔、看有没有重传、看TLS握手用了几次RTT基本几秒就能定位是网络层问题还是服务端处理慢。4.3 抓包之后的流量分析思路抓到包之后分析才是重头戏。我分享一个日常排障的分析顺序先看请求是否发出、再看响应是否返回、然后看耗时分布、最后看内容是否正确。用Fiddler举例左侧会话列表每一行代表一个请求列名包括结果、协议、主机、URL、内容类型、耗时等。如果页面有问题先找到对应请求看它是否返回200如果返回404或500直接看Response里的报错内容如果返回200但页面不对把请求体和响应体拉出来前后端逐个字段排查。如果是网络慢的问题就用Wireshark看“耗时细节”。Wireshark里有“Statistics—Service Response Time”一类功能也可以直接看TCP流的往返时延。一个最简单的判断方法是看瀑布图Statistics—Flow Graph它能直观展示每个请求从发出到收到响应的时序变化如果发现某个请求在前面排队了很久那问题多半出在浏览器同域名并发连接数或服务端连接池上。再补充一个很实用的技巧抓完包后把关键会话保存导出。Fiddler可以按快捷键“CtrlS”导出为.saz存档Wireshark可以导出为.pcapng文件。把这个文件发给同事或服务商对方用同样工具打开就能看到完整的请求数据、头部字段、响应体比截图省事得多也能避免手动复制过程中遗漏细节。5. 常见问题与排查技巧实录5.1 常见问题速查表这些问题都是我在各个项目里实际遇到的按“现象—原因—解决办法”整理成了一张速查表你遇到类似的可以直接翻。现象可能原因解决办法手机设置了代理但抓不到包代理端口没开或防火墙拦截检查Fiddler已勾选Allow remote computers放行8888端口浏览器能开HTTPS但App抓不到Android 7.0用户证书不被App信任用模拟器root环境装系统证书或Frida绕过SSL PinningiOS提示证书不受信任只安装未开启完全信任去设置—通用—关于本机—证书信任设置里打开开关微信小程序抓不到包新版本默认不走系统代理用Windows版微信抓电脑端流量或改模拟器方案抓包工具同时打开后失效多个代理工具抢占8888端口同时只开一个抓包工具或修改监听端口Wireshark抓不到HTTP明文流量可能走的是QUIC或TLS 1.3加密用tls.handshake.extensions_server_name过滤或禁用浏览器QUIC抓包后网络变得非常慢代理没关干净数据绕了一圈关闭抓包工具并还原系统代理设置5.2 几个独家心得说几个常规文档里不会写的实操体验都是踩坑踩出来的。第一个心得抓包之前先想清楚“当前会话的边界”。比如你要调试小程序那就只打开对应的工具和界面其他App、后台更新、浏览器标签页全部关掉或过滤掉这样流量列表才干净。流量越少定位越快这不是洁癖问题而是真实效率问题。第二个心得不要同时开两个代理型抓包工具。Fiddler、Charles、Burp都抢着设置代理时会互相覆盖轻则抓不到包重则整机断网。遇到“设置半天就是不通”的情况先查一下是不是系统代理已经被别的工具占用了Windows上可以在“设置—网络和Internet—代理”里看手动代理是否开着macOS在“网络—高级—代理”里查。第三个心得分析HTTPS抓包结果时别只看HeaderResponse Body里的信息往往更有价值。有一次我帮同事排查线上接口偶发超时从Fiddler响应体里发现服务端在业务异常时返回了一个非常长的堆栈信息导致响应大小暴增传输耗时就上去了。这种问题只看状态码根本发现不了。第四个心得网课视频、在线音视频这类流媒体请求很多人想抓包是为了拿到视频地址、分析卡顿原因。用Fiddler或Wireshark抓到m3u8、mp4地址后你可以用它来测试带宽、验证CDN节点、分析延迟和重传这些都属于正常的网络排查用途。但要注意视频内容本身有版权归属分析地址用于调试没问题未经授权下载、录制和二次分发就涉及合规风险了这个边界一定要把握好。6. 写在最后抓包这事工具只是第一步工具列得再多最终还是要落到实际问题的分析和解决上。我的个人经验是新手学抓包不要一上来就追求把所有工具都摸透那会很快消耗掉耐心。正确路径应该是先用Fiddler或Wireshark中的一个把浏览器端某个你熟悉的页面请求完整抓一遍看一遍请求头、响应头、Cookie、证书、耗时等你对“流量长什么样”有了体感再横向扩展去学其他工具和特殊场景。真正值钱的能力是那套分析思路请求有没有发出去、数据从哪里来、哪一段耗时最长、服务端返回了什么、客户端怎么处理的。工具只是把你的“眼睛”延伸到数据链路里而已看清楚之后怎么判断、怎么定位靠的还是你对协议和业务的理解。最后分享一个小技巧每次抓包分析完一个疑难问题我会把当时的过滤器表达式和关键分析过程存到自己的笔记里。过几个月再遇到类似问题直接翻出来套用省的时间远比当初记笔记花掉的多。希望这篇抓包工具大全能让你少走一些我走过的弯路。