免费全平台抓包工具选型与实操:手机、小程序、蓝牙、USB全覆盖
经常有朋友跑来问我想学抓包到底该用哪个工具说实话这个问题看着简单真答起来挺费劲。因为“抓包”这俩字覆盖的场景太广了——有人在PC上分析TCP连接有人在手机上调试App接口有人要抓小程序、抓蓝牙、抓USB甚至有人只是想从网课里把视频播放地址抠出来。不同场景对应的全平台网络抓包软件完全不一样选错工具后面每一步都在跟工具较劲。这篇文章就从“免费”和“全平台”两个前提切入把我这些年用过的抓包工具按场景摊开讲附带手机、小程序、蓝牙、USB、无root这些高频场景的实操流程和踩坑记录。不管你是刚接触抓包的新手还是已经入行想补齐工具链的开发者按这个清单往下读基本都能找到答案。1. 全平台免费抓包工具逐一点评1.1 桌面三巨头Wireshark、Fiddler、Charles怎么选先聊大家最常问的三个名字Wireshark、Fiddler、Charles。这三者经常被混为一谈但它们抓包的方式和定位完全不同。Wireshark是免费开源、跨平台Windows/macOS/Linux的协议分析之王它抓的是网卡上的原始数据包IP层、TCP/UDP层、HTTP层全都看得见。适合做底层网络排障、TCP三次握手分析、慢请求定位。缺点也很明显——信息量太大新手打开满屏十六进制直接懵。我第一次用它抓了个干净的HTTP请求盯着那几百个包根本不知道从哪看起后来才明白要先学会用过滤器。Fiddler Classic是老牌HTTP调试代理前几年在Windows上几乎是接口调试标配免费而且功能强大可以断点改请求、写FiddlerScript做自动化、查看请求响应细节。但它只在Windows上免费macOS上的Fiddler Everywhere收费所以严格的“全平台免费”它并不完全符合但在Windows用户群体里依然非常值得装。Charles是跨平台的UI做得漂亮手机抓包体验一流iOS开发者尤其喜欢。问题是它只有30天试用期长期使用需要付费。如果你预算不够后面我会讲到几款能平替的免费工具。结论是真正完全免费又能跨平台组合我建议用Wireshark tcpdump Reqable这套配置能覆盖绝大多数个人开发者的日常需求。1.2 命令行与开发者向tcpdump、Burp Suite、Proxyman、Reqable除了上面三巨头还有一批开发者向工具在日常排障中同样重要。tcpdump是Linux/macOS自带的命令行抓包工具服务器上出现问题十有八九靠它先看一把。它没有图形界面但正因为轻量在服务器上部署成本极低。我习惯在远程服务器上先tcpdump抓一段时间导出pcap文件拉回本地用Wireshark做可视化分析效率和体验都能兼顾。Burp Suite Community是Java写的Web安全测试工具有免费的社区版。它本质也是一个HTTP代理可以截获请求、修改重放是安全测试入门的标配。如果你要测自己搭的靶场、做授权范围内的接口安全验证用Burp很合适。社区版砍掉了主动扫描等高级功能但手工抓包、改包完全够用。另外补充一个国内团队做的Yakit界面中文、模块化设计内置了抓包和MITM代理安全测试圈子用得越来越多也可以作为Burp的替代选项。Proxyman是macOS/iOS开发者的心头好界面清爽、能按App过滤流量基础抓包功能免费适合抓iOS模拟器和真机请求。Reqable则是跨平台免费工具里我认为最接近“Charles平替”的支持Windows/macOS/Linux/Android/iOS抓HTTP/HTTPS/WebSocket还集成了API调试、重放、Mock相当于抓包工具和接口调试工具合体。新版对证书管理、移动端联动也做得很顺手个人开发者装一个基本够了。1.3 移动端与专项场景手机App、蓝牙、USB、无线手机抓App的包如果不想开电脑代理可以直接在手机上装抓包应用。Android平台比较出名的有PCAPdroid、HTTPCanary小黄鸟它们在本地创建一个虚拟网络接口把流量导进来实现无root抓包。iOS因为系统封闭无越狱抓包能用的工具少一些可以试试Stream或配合电脑端Proxyman/Charles。市面上还有很多像蜂鸟这类轻量抓包小工具界面简单适合快速验证单个请求但功能深度普遍不如PC端软件。专项场景里蓝牙抓包可以用Android开发者选项里的“蓝牙HCI信息收集日志”导出btsnoop_hci.log后用Wireshark打开能看到完整的蓝牙协议栈交互红米K50这类机型也能用这个方法排查配对和断连问题。USB抓包在Windows下用Wireshark加USBPcap驱动Linux下用usbmon内核模块。无线抓包则需要支持Monitor Mode的网卡比如AX210配合Wireshark的监听模式抓802.11空口包主要用于无线网络排障。这些专项玩法后面实操部分再展开。2. 抓包原理与全平台选型思路2.1 两种抓包模型镜像口抓包 vs 代理中间人很多人选工具的时候忽略了一个关键问题抓包软件用什么方式拿到数据的。搞懂这一点选型就不会乱。第一种是镜像抓包代表工具是Wireshark、tcpdump。它们的原理是让网卡进入混杂模式或直接读取内核网络栈的报文副本把经过网卡的每个包都复制一份出来给你看。这种模式是“被动”的你只能看不能改变原请求适合分析协议细节、排查网络层问题。比如服务器丢包、TCP握手异常、TLS版本不匹配用镜像抓包能看得非常清楚。第二种是代理中间人代表工具是Fiddler、Charles、Burp Suite、Reqable。它们在客户端和目标服务器之间扮演中转站客户端先把请求发给抓包工具抓包工具再转发给服务器响应也是同样路径。这种模式的好处是能看到完整的HTTP请求行、Header、Body还能解密HTTPS、修改请求做调试。手机抓包时把WiFi代理指向电脑的抓包工具端口本质就是让手机流量主动经过代理。打个比方镜像抓包就像在路边用摄像头记录所有路过的车代理中间人则是给每条路设了一个收费站车流量都从你眼前过你可以决定放行还是拦截。两种模型各管一段分析网络性能用镜像调试业务接口用代理。2.2 HTTPS证书与中间人解密原理抓包最常翻车的点是HTTPS。数据被TLS加密后代理工具默认只能看到一堆密文。要看到明文就要引入“中间人”思路抓包工具生成一份自己的根证书让客户端安装并信任这份证书之后工具就能分别和客户端、服务器建立TLS连接两边数据在工具这里被解密后再加密转发。理解了这个原理你就能明白为什么所有代理型抓包工具都要你“装证书”“信任证书”。不是工具想麻烦你而是没有这套信任链它就没法解密。实操中有两个高频坑。iOS装完证书后必须再去“设置-通用-关于本机-Certificate Trust Settings”里打开完全信任开关不然等于没装。Android 7.0及以上App默认不信任用户安装的CA证书这就是很多人明明装了证书还是抓不到App HTTPS包的根本原因。后面常见问题里会细说无root抓包的解决思路。2.3 全平台场景下的工具搭配建议基于以上原理我给一个直接能抄的选型表。你在什么场景下做什么事就选哪类工具不用什么都装一遍。使用场景推荐工具平台免费情况网络协议分析、TCP排障Wireshark / tcpdump全平台完全免费Web/浏览器接口调试Fiddler Classic / ReqableWindows / 全平台Fiddler Classic免费Reqable有免费版手机App接口调试Charles / Proxyman / ReqablemacOS/Windows / macOS / 全平台Charles收费Proxyman免费版够用Reqable免费版够用微信小程序抓包Fiddler / Reqable / Burp Suite全平台按工具而定安全测试、改包重放Burp Suite Community / Yakit全平台社区版免费服务器远程排障tcpdump WiresharkLinux/macOS 本地完全免费蓝牙/USB/无线专项Wireshark 对应驱动Windows/macOS/Linux完全免费这套搭配的核心思路就是前面说的两种模型结合日常接口调试优先走代理型工具遇到网络层疑难杂症再切镜像抓包。别指望一个工具解决所有问题。3. 实操三种高频场景抓包流程3.1 PC端用Wireshark抓取并分析TCP请求先说Wireshark的标准操作流程这是网络排障的基本功。第一步下载安装WiresharkWindows安装时记得勾选Npcap和USBPcap组件macOS首次打开需要给终端授权网络访问权限。第二步启动后选择正确的网络接口。抓WiFi选Wi-FimacOS上是en0抓有线网选以太网macOS上可能是en3等抓本机进程的本地流量选Loopback。选错接口是新手第一个坑折腾半天什么都抓不到往往就是这一步。第三步设置抓包过滤器减少无关流量干扰。比如只想看某个IP的包就输入host 192.168.1.5只想看某个端口的TCP流量就输入tcp port 443。第四步点开始抓包在浏览器或终端里触发一次请求再点停止。第五步用显示过滤器分析。看TCP三次握手用tcp.flags.syn1能同时看到SYN和SYN-ACK包看HTTP请求用http看HTTPS的ClientHello用tls.handshake.type1。我举个例子。抓完包后过滤器输入tcp.flags.syn1你会看到三条记录客户端发往服务器的SYN包、服务器返回的SYNACK包、客户端确认的ACK包。这就是一次标准TCP握手。如果只看到SYN没有SYNACK说明服务器端口没开或防火墙拦了如果握手完成但HTTP请求很慢就在时间列里对比每个包的间隔八成能定位到是握手阶段慢还是数据传输阶段慢。这套分析方法能解决大多数“网页打不开”“接口超时”问题。tcpdump的命令行版本同样重要在Linux服务器上排查问题时几乎绕不开。最常用的是# 抓指定网卡的完整流量并保存文件 sudo tcpdump -i eth0 -w /tmp/capture.pcap # 抓指定主机和端口的流量输出摘要 sudo tcpdump -i any host 192.168.1.5 and tcp port 80 # 抓本地回环流量看进程间的HTTP通信 sudo tcpdump -i lo -n -v # 直接看包内ASCII内容适合快速确认请求内容 sudo tcpdump -i eth0 -A抓完把pcap文件拖回本地用Wireshark打开按3.1的过滤器继续分析即可。3.2 手机/小程序抓包Fiddler、Charles、Reqable配置流程手机抓包是需求最集中的一块我把常见步骤完整走一遍。电脑端先准备好代理监听。Fiddler打开菜单Tools-Options-Connections勾选Allow remote computers to connect端口默认8888。Charles在Proxy菜单里勾选SSL Proxying Settings添加*:443开启HTTPS解密。Reqable默认监听端口是9000直接在“抓包”页面打开手机扫码配置提醒即可。手机和电脑连同一个局域网在WiFi设置里把代理改为手动主机填电脑的局域网IPWindows上用ipconfig查macOS上用ifconfig查端口填对应工具的监听端口。然后手机浏览器访问证书下载地址Fiddler访问http://电脑IP:8888Charles访问chls.pro/sslReqable可以在手机端装配套App再扫码装证书。证书装完记得按系统要求信任。iOS要去设置里开“证书信任设置”Android分版本处理Android 7以下一般装完就能用Android 7以上还要看App是否允许用户证书很多系统App默认不允许。全部配置完重启App再操作一次业务请求此时电脑上的抓包工具应该能看到流量了。如果看的全是TLS密文多半是证书没信任或者SSL Proxying没配好。微信小程序抓包稍微特殊一点小程序底层是微信自己的网络栈不走系统代理时可能抓不到。实战中常用两个办法一是抓电脑端微信小程序把电脑端微信的代理指向Fiddler或Burp的监听端口再开着Socks或HTTP代理做中转二是用Android上的Reqable/HTTPCanary这类本地虚拟网卡工具让流量强制走抓包端再配合证书解密。如果是自己开发的小程序在微信开发者工具里勾选“不校验合法域名、web-view业务域名、TLS版本以及HTTPS证书”是最省事的方式。3.3 专项抓包tcpdump命令行、USB与蓝牙抓包思路tcpdump命令已经在上文列过这里重点说USB和蓝牙。USB抓包Windows下安装Wireshark时勾选USBPcap驱动然后用管理员身份打开Wireshark会看到USBPcap接口选中即可抓到USB总线上的数据包。Linux下用modprobe usbmon加载内核模块再以root权限打开Wireshark选择usbmon接口。分析时常用过滤器usb.device_address 1锁定某个USB设备或者用usb.transfer_type 2只看批量传输。USB抓包适合排查外设通信异常、分析自定义USB协议。蓝牙抓包Android手机打开开发者选项找到“蓝牙HCI信息收集日志”不同厂商叫法可能略有差异红米K50这类MIUI系统一般在开发者选项里有开启后正常连接和使用蓝牙设备一段时间后日志文件会生成在/sdcard/Android/data/或/data/misc/bluetooth/logs目录下文件名通常叫btsnoop_hci.log导出后用Wireshark打开就能看到HCI层、L2CAP层的完整交互记录。分析时可以看“HCI_Command”“HCI_Event”来定位配对失败、断连原因。iOS用户则可以在“设置-隐私-分析与改进”里开启“记录蓝牙事件”之后从设置里导出日志分析。硬件级的蓝牙抓包器比如Ellisys、Frontline成本高个人开发者一般用不到软件方案足够排查常见问题。4. 高频问题排查与避坑指南4.1 常见报错与解决速查表我整理了一份实战中最高频的问题速查表每个都是社群里反复被问过的症状常见原因排查方向与解决办法Charles抓不到代理手机的包手机代理没生效、证书没信任、未开SSL Proxying确认IP和端口重装并信任证书Proxy-SSL Proxying设置添加*:443电脑防火墙放行端口Fiddler手机抓包全是密文证书未按系统要求完全信任iOS补开证书信任开关Android 7需要用允许用户证书的方式安装或改调试包Charles设置代理后进不去AppApp检测到代理并拒绝连接换成虚拟网卡型抓包工具部分调试版App可通过代码信任用户证书微信小程序抓不到包小程序不走系统代理或证书校验严格抓电脑端微信小程序用Reqable/HTTPCanary做无root抓包自研小程序在开发者工具里关闭证书校验Flutter Dio抓不到包Flutter的HttpClient默认不走系统代理在Dio中显式配置代理代码见下方示例App抓包失败普通场景证书问题、双向证书校验、不走系统代理先判断App是否使用系统代理再解决证书信任实在不行考虑无root抓包方案python2.7pyshark无法抓包pyshark依赖TShark且Python 2.7已停止维护升级到Python 3.8装新版pyshark确认TShark已加入PATH且以管理员/root权限运行usb抓包没有接口可选USBPcap驱动未安装或未以管理员运行重装Wireshark时勾选USBPcapWindows务必管理员身份打开补充一个Flutter Dio的配置示例。新版Dio在移动端默认不走系统代理需要手动指定代理地址final dio Dio( BaseOptions(baseUrl: https://api.example.com), ); (dio.httpClientAdapter as IOHttpClientAdapter).createHttpClient () { final client HttpClient(); client.findProxy (url) { // 这里的IP和端口换成电脑上抓包工具的监听地址 return PROXY 192.168.1.100:8888; }; client.badCertificateCallback (X509Certificate cert, String host, int port) true; return client; };这段代码只建议在开发调试环境使用发布到生产环境前务必注释掉尤其是badCertificateCallback直接信任所有证书的写法非常不安全。4.2 进阶技巧无root抓包与抓包信息怎么看越来越多的朋友在问“无root抓包怎么做”比如热搜里那个元萝卜无root抓包方案核心就是利用Android本地的虚拟网络接口能力把App流量转发到抓包端再配合可信任的证书完成HTTPS解密。这样做的好处是不用Root手机不会触发系统安全校验日常调试和协议分析都够用。如果是自己开发的App更稳妥的办法是在network_security_config.xml里显式允许用户证书或者用debug版本的证书配置。至于网上提到的LSPosed框架模块抓包本质是注入Hook属于另一个技术路线这里不展开但提醒一句只有在你拥有设备合法调试权限时才能这么做。抓到包之后最重要的基本功是“会看包”。打开任意一条HTTP请求重点看四个地方状态行比如HTTP/1.1 200 OK200代表成功4xx是客户端问题5xx是服务端问题。请求头Host、User-Agent、Cookie、Content-Type、Content-Length这些决定了服务器怎么处理请求。请求体JSON、表单参数或二进制流接口传参问题看这里。响应体接口返回的数据和错误码联调时90%的问题在响应体里一眼就能看出来。如果是Wireshark则要看协议树里的分层信息Ethernet帧、IP层、TCP层、应用层。点开TCP层能看到Seq/ACK序列号点开HTTP层能看到完整请求行和头部。定位问题时先用过滤器缩小范围再逐层往下看。“网课视频抓包”“测试短信接口抓包”这类需求本质也是这两个能力会过滤、会看接口返回。抓视频地址时在代理工具里用关键词搜索m3u8、mp4、flv或者在Wireshark里过滤http.response.code 206很快就能找到媒体流地址。抓短信接口时搜索sms、send、code等关键词配合响应体就能看出验证码下发是否成功。注意任何抓包分析都应在你有权调试的设备和业务范围内进行别拿这些技术去做不该做的事。最后再分享一个经验。我从零学抓包时踩过最多的坑不是工具不会用而是没想清楚“我要看哪一层、哪台设备、哪类流量”就开始瞎抓。后来养成习惯先确认目标再去选工具、配过滤器、装证书效率一下子高了很多。抓包工具本质上没有绝对的好坏你理解原理越深换任何一个新工具都能在半小时内上手。希望这篇全平台抓包软件清单和实操记录能帮你少走一些弯路。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →