十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

抓包工具全解析:三种技术路线与免费实战选型

抓包工具全解析:三种技术路线与免费实战选型 经常有人问我同一个问题有没有一款免费的全平台抓包工具装上之后什么流量都能抓我一般会反问一句你要抓的是网页请求、手机App流量还是USB设备、蓝牙外设的包因为在抓包这件事上工具只是后半段真正决定成败的是先搞清楚流量从哪条路走。这篇把免费好用的抓包工具按技术路线、按实际场景理了一遍也会聊到网课视频、小程序、USB、蓝牙这些高频搜索背后的真实操作思路。不管你是刚接触抓包的新手还是已经在用Wireshark但不清楚怎么解HTTPS的老朋友按下面的选型逻辑来挑工具基本不会跑偏。1. 抓包前先看流量走哪条路三种技术路线决定工具选型1.1 网卡采集与代理中间人本质是两条完全不同的思路所有抓包工具能“看到”流量靠的都是三种机制之一。第一种是网卡混杂模式。网卡默认只接收发给自己的数据帧但开启混杂模式后流经网卡的帧都会被收下来Wireshark就是这条路的代表。它对这个接口上经过的原始报文直接采样不管协议是HTTP、DNS、TCP还是未知的自定义协议先抓到再说。优点是看得全缺点是HTTPS只能看见密文想要明文需要额外把会话密钥喂给它。第二种是代理中间人。你的设备把流量先交给一个本地代理程序代理再替你转发给真正的服务器。这样一来流量全部从工具手里过工具就能解开应用层内容。Fiddler、Charles、mitmproxy都是这个模型它们是调试网页接口、App接口的主力。第三种是本地虚拟网卡转发。很多手机端抓包工具没办法直接控制网卡它们通过安卓系统的本地虚拟网卡接口创建一条通道把自己变成系统默认的流量入口把其他App的网络数据先引到自己进程里看一眼再放行。PCAPdroid就是这套机制的代表免root也能装非常适合日常抓安卓App的流量。1.2 “全平台”的真实含义平台覆盖不等于场景覆盖“全平台”这个词听起来很美好但它只解决了“能在哪些操作系统上运行”的问题没有回答“能抓到哪一类流量”。很多标榜全平台支持的抓包工具实际上覆盖的协议和场景是有明显边界的。比如Wireshark在Windows、macOS、Linux都有但抓蓝牙和USB流量需要额外装驱动或硬件Fiddler Classic是免费的但只支持WindowsFiddler Everywhere跨平台了免费套餐却有功能限制mitmproxy三个平台都能跑但对命令行基础有一定要求。所以在选型之前先别急着下载工具而是先问自己三个问题流量是走Wi-Fi还是走USB线目标应用是PC端还是手机端连接是明文HTTP还是加密HTTPS这三个问题确定了答案基本就自然浮出来了。技术路线代表工具主要能力HTTPS处理典型场景网卡混杂采集Wireshark、tcpdump网络层、传输层及各协议原始报文需要导入TLS会话密钥底层协议分析、网络排障代理中间人Fiddler Classic、mitmproxyHTTP/HTTPS应用层会话安装根证书后中间人解密网页调试、App接口、小程序本地虚拟网卡PCAPdroid等手机应用流量转发与采集配合代理工具做中间人免root抓安卓App流量这三条路线不是互斥的实际项目里经常组合使用。比如在安卓模拟器里抓小程序流量底层是模拟器走宿主机的代理代理负责解密HTTPS模拟器端再配好证书信任整个链路就通了。所以不要把自己的工具箱局限在一款软件里理解路线比背工具清单更重要。2. 免费好用的跨平台抓包工具逐个拆解2.1 Wireshark协议解析的天花板也是新手的第一个坑Wireshark是开源免费的全平台抓包工具支持Windows、macOS、Linux几乎所有你能叫出名字的协议它都能解析。安装之后启动会看到网卡列表选一块网卡点左上角的蓝色鲨鱼鳍就能开始抓包。但新手往往在这里踩第一个坑直接选默认网卡抓了几秒屏幕上瞬间滚过上万条包整个人直接懵掉。我自己的经验是抓包之前先想清楚要抓什么然后用捕获过滤器从源头缩小范围。比如只想看某个IP的流量就在捕获过滤器里填host 10.0.0.2只想看HTTP/HTTPS就填tcp port 80 or tcp port 443。流量少了注意力才跟得上。之后要学会用右键菜单里的Follow HTTP Stream查看一次请求的完整交互这对排查头像不显示、接口超时这类问题特别高效比肉眼一行行扫列表靠谱得多。Wireshark还有一个容易被忽略的神级用法配合环境变量SSLKEYLOGFILE解密TLS流量。在系统里设置一个环境变量指向某个文件启动浏览器访问HTTPS页面Wireshark就能读取浏览器导出的会话密钥把加密流量还原成明文。我在排查一个HTTPS接口超时时就用这招看到了请求体里某个字段拼错了十分钟定位问题。这个方法适合分析自己浏览器或测试环境中的流量不要拿去碰别人的数据。2.2 mitmproxy适合自动化与脚本控的免费跨平台代理mitmproxy是Python实现的免费开源代理Windows、macOS、Linux通吃工作方式比Wireshark更贴近应用层调试。它有三种运行形态mitmproxy是交互式终端界面mitmweb会开一个Web界面mitmdump则是无界面的脚本模式。很多新人被“命令行工具”这四个字劝退其实只要记住mitmweb启动后浏览器访问http://127.0.0.1:8081就能看到图形化流量列表上手难度就降下来一大半。它真正的核心价值在于可以写Python插件自动处理流量。比如做接口回归时可以用mitmdump录制一段真实流量保存下来再写脚本批量断言响应时间、状态码和字段值又比如需要把测试环境某个域名重写到另一台服务器几行代码就搞定。这些需求用图形化工具也能做但mitmproxy的自动化能力让它成为持续集成环境里的常客。对于纯新手我的建议是先用mitmweb熟悉流程之后再碰插件开发不迟。2.3 Fiddler Classic 与 Fiddler EverywhereWindows老兵与跨平台新贵Fiddler Classic是很多Windows用户的第一款抓包工具免费支持HTTP/HTTPS代理调试、断点修改请求、Composer重放请求功能对大部分前端联调和接口排查场景完全够用。它的界面虽然停留在老派Windows风格但胜在稳定、轻量到现在依然维护。如果只在Windows上做网页或接口调试它完全可以作为主力工具。Fiddler Everywhere是跨平台版本官方主推macOS和Linux场景界面现代化很多免费套餐对轻度使用也够。需要注意Fiddler Classic只支持Windows别在macOS上硬装Everywhere虽然跨平台但高级功能要订阅。两者本质工作方式一样都是系统代理加中间人证书。另外用Fiddler系列时有个容易被忽略的设置默认情况下它只抓本机流量想让手机或模拟器走它代理必须在Tools-Options-Connections里勾选Allow remote computers to connect不然外部设备根本连不上代理端口更别提抓包了。2.4 没有图形界面的场景tcpdump 与 TShark 的组合拳很多线上服务器、嵌入式设备没有图形界面装不了Wireshark这时候tcpdump是标准答案。tcpdump是Unix/Linux下经典命令行抓包工具极其轻量几乎所有发行版都自带或可以用包管理器直接安装。常用姿势是抓特定端口并写入文件tcpdump -i any -s 0 -w /tmp/http.pcap port 80抓完把pcap文件拉回本地用Wireshark打开分析这样可以在服务器上只负责“采集”把复杂的协议解析留到本地完成。TShark则是Wireshark的命令行版本可以直接在服务器上做字段提取比如快速列出所有HTTP请求的域名和URItshark -r /tmp/http.pcap -Y http.request -T fields -e http.host -e http.request.uri这个组合强在什么地方呢它不依赖图形环境不受屏幕尺寸影响出了问题可以写脚本批量分析还能直接嵌入到自动化巡检流程里。我处理嵌入式设备问题时经常会把静态编译的tcpdump丢到设备上抓完包再回传分析比在设备上折腾图形界面省太多事。工具免费模式支持平台核心定位适合谁Wireshark开源免费Windows/macOS/Linux协议级全面分析想理解网络原理、排查底层问题的人TShark开源免费Windows/macOS/Linux命令行抓包与解析服务器、脚本自动化场景mitmproxy开源免费Windows/macOS/LinuxHTTP/HTTPS代理与自动化习惯命令行的开发者Fiddler ClassicWindows免费WindowsHTTP/HTTPS代理调试Windows桌面用户Fiddler Everywhere免费套餐受限Windows/macOS/Linux跨平台代理调试跨平台图形化偏好者tcpdumpBSD许可免费几乎所有Unix系统命令行抓包服务器、嵌入式设备PCAPdroid开源免费Android免root本地流量抓包安卓App开发者3. HTTPS这关过不去工具再多也白搭3.1 中间人解密的工作原理用生活化方式讲清楚很多人在抓包工具上栽跟头不是因为工具不会用而是不理解HTTPS解密这件事的本质。HTTPS流量在网络上是一堆加密数据如果直接抓只能看到密文。抓包工具能解密靠的不是破解加密算法而是“中间人”机制。打个比方你让快递代收点帮你转交一个密封包裹给收件人代收点把包裹拆开检查再重新封好交给收件人收件人回信也先到代收点代收点拆开记下内容再封好送给你。前提是双方都信任这个代收点。抓包工具就是那个代收点它和你的浏览器之间建立一条HTTPS连接和服务器之间建立另一条HTTPS连接两条连接都是正规加密的只是“拆封查看”的钥匙掌握在工具手里。这个信任凭证就是根证书。所以抓包工具能解密HTTPS本质是设备被引导后把解密钥匙交了出来而不是工具能强行破解AES。理解了这一点后面所有的证书配置问题都会变得顺理成章证书装不上代收点就得不到信任流量自然不会让你看。3.2 电脑端证书信任的隐蔽坑点电脑端装证书最容易翻车的地方不是“没装”而是“装了但没被信任”。比如Chrome一般使用系统证书库证书导入系统后大部分情况下就生效了但Firefox默认使用自己的证书库不读系统证书。很多人用Chrome抓包正常换Firefox就疯狂报TLS错误原因就在这。解决办法是打开Firefox的设置-隐私与安全-证书-查看证书-导入把抓包工具的根证书加进去。Windows上还有一个常见遗漏Fiddler虽然是图形化工具也必须确认主界面里Decrypt HTTPS traffic这个选项是勾选状态否则它只代理明文HTTPHTTPS请求照样显示成CONNECT隧道。macOS上导入证书后还得到钥匙串访问里找到该证书手动把信任级别改成“始终信任”少这一步Safari和Chrome一样会不认账。排查顺序建议固定为证书是否导入是否被目标浏览器信任解密选项是否开启这样能把八成问题挡在第一轮。3.3 Android 7.0与iOS的证书信任差异抓手机App比抓网页麻烦的原因主要是系统对用户证书的信任策略发生了变化。Android 7.0之后App默认只信任系统证书不信任用户安装的证书。这就导致你在设置里装了抓包工具的证书但绝大多数App依然报错或者直接不走代理流量。如果你调试的是自己开发的App正确做法是在工程里配置networkSecurityConfig在debug模式下允许信任用户证书这样测试包能正常抓包release包不会受影响。如果抓的是第三方App并且设备可以root需要把代理根证书复制到/system/etc/security/cacerts/目录并设置权限。如果不想动系统可以换用系统证书目录可以直接写入的模拟器镜像很多Android模拟器对这个问题有专门优化。iOS的方向类似但流程不同用Safari打开代理工具提供的证书下载页比如mitmproxy的http://mitm.it安装描述文件再到“设置-通用-关于本机-证书信任设置”里把对应证书的开关打开。很多人只装了描述文件忘了最后一步开关结果抓包一直失败。另外iOS和Android上不少App使用了证书固定或私有网络框架普通抓包确实看不到内容那是安全机制在生效不代表工具坏了。3.4 用MuMu模拟器跑通一次小程序抓包的完整过程“windows mumu 抓包工具”这个搜索词背后本质上是一个“安卓模拟器加代理抓包”的组合问题。我在MuMu上跑通微信小程序抓包的流程是这样的可以直接复现先在Windows主机上启动Fiddler Classic或mitmproxy并开启远程设备连接选项命令行执行ipconfig拿到宿主机局域网IP比如192.168.x.x进入MuMu的系统设置-网络-WLAN长按已连接的网络修改代理把代理设为手动填宿主机IP和代理端口Fiddler默认8888mitmweb默认8080打开模拟器自带浏览器访问http://代理IP:端口/证书下载页面下载并安装根证书打开微信进入目标小程序正常操作一遍回到抓包工具面板过滤域名或请求关键词就能看到小程序发出的请求实际操作中最容易卡住的一步仍然是证书信任。MuMu不同版本自带Android版本不一样Android 7以上会遇到用户证书默认不受信任的问题。这时候优先看模拟器镜像本身是否支持直接向系统证书目录写证书或者考虑换一个系统证书目录可写的镜像。如果代理面板里只看到TLS握手记录但没有任何数据字段大概率就是证书信任没配置到位先照3.3的规则重新放一遍证书别急着怀疑App有问题。4. 热搜背后的实际需求视频、小程序、USB、蓝牙怎么抓4.1 网课/在线视频定位媒体流并合并文件限合法个人备份“网课视频抓包工具”不是某个专门的软件而是一套组合思路代理抓包定位媒体地址再用下载工具合并分片。我在只对自己有权离线缓存的视频做个人备份时流程是这样先在电脑上开好Fiddler或mitmproxy浏览器打开课程页面并正常播放视频。这个时候代理面板里会出现很多请求关键在于按Content-Type筛选出媒体相关类型video/mp4代表直链MP4application/vnd.apple.mpegurl代表HLS流的m3u8索引文件application/dashxml代表DASH流的mpd文件。找到m3u8或mpd地址后用ffmpeg或者开源工具N_m3u8DL-RE就能把一段段切片拉下来合并成完整文件。这个用法有一条非常明确的边界只适用于你已购买、服务条款允许个人离线缓存的内容也只能用于个人备份不能二次传播。如果你发现抓包面板里什么媒体地址都没看到但视频能正常播放那么多半是视频走了Widevine等DRM加密这种抓出来的切片也是密文技术上就不存在“直接下载”的路径这种时候换任何抓包工具都一样别再折腾了。4.2 微信小程序抓包的思路与调试边界小程序的网络请求从协议角度看依然是HTTP/HTTPS差异主要在入口跑在微信客户端里。所以抓包方式与抓安卓App完全一致用模拟器或真机配好代理和根证书打开微信进入小程序代理面板里就会看到来自微信进程的请求列表。我遇到最多的搜索词是“微信小程序抓包工具”“小程序抓包工具”其实工具还是前面那几个不存在什么“小程序专用抓包器”。如果小程序是你自己开发的更建议直接用微信开发者工具自带的Network面板省去代理配置。想排查线上正式版小程序的接口请求按3.4的模拟器流程就能跑通。但要注意部分线上小程序做了防抓包或证书固定技术手段绕开属于突破他人应用的安全机制这个红线不要碰。遇到这种场景正确做法是找服务端日志或者联系小程序提供方确认接口行为而不是想方设法绕过限制。抓包是调试手段不是打探别人系统的后门。4.3 USB抓包USBPcap 配合 Wireshark 的经典方案USB抓包是一个经常被单独搜索的需求“usb抓包工具哪个最好用”这个问题的答案不是某个独立软件而是Wireshark加对应接口驱动。Windows上安装USBPcap装完重新打开Wireshark接口列表里会出现USBPcap1、USBPcap2之类的条目选中就能抓USB总线上的原始流量。通过分析URB结构可以看到某个U盘设备为什么不被识别、某个USB转串口为什么收发异常、自定义HID设备到底有没有上报数据。Linux下思路差不多先加载usbmon模块modprobe usbmon然后Wireshark里选择usbmon0或对应的usbmonN接口。USB流量非常凶猛强烈建议先确认目标设备的设备地址再用捕获过滤器只保留该设备比如usb.device_address 2。如果不开过滤器直接抓整条总线的流量几十秒就能产生上百MB文件界面卡到几乎没法操作。4.4 蓝牙抓包nRF Sniffer 的免费入门路径蓝牙抓包和Wi-Fi、以太网抓包不太一样它走的是2.4GHz空中接口普通网卡听不到所以不存在“装个软件就能抓”这种好事必须依赖硬件。免费入门方案首推nRF Sniffer买一个Nordic nRF52840 Dongle刷上Sniffer固件在Wireshark里选择对应的nRF Sniffer接口就能抓周围BLE设备的广播包和连接交互数据。成本几十块对物联网开发和自有BLE外设调试非常够用。这个方案我看过不少团队在做智能手环、蓝牙传感器调试时都在用。更专业的还有Frontline、Ellisys的硬件抓包器能稳定分析多设备、多连接复杂场景但价格高得离谱个人开发者基本不需要。抓BLE之前记得把电脑自带的蓝牙关掉让Sniffer Dongle独占资源不然Wireshark的界面会收到大量混合数据解析结果非常混乱。5. 按工作台场景选一套顺手组合别囤一堆工具5.1 五套实测顺手的组合方案与对应人群抓包工具不用贪多很多同事桌面上装了好几个到头来每天打开的也就一两个。我自己长期用下来按工作台和需求分成了五套组合可以按需取用工作台/需求推荐组合替代方案Windows桌面抓网页、接口联调Fiddler ClassicmitmwebmacOS/Linux抓网页与接口mitmproxy 或 Fiddler EverywhereWireshark安卓App/小程序抓包模拟器 mitmproxy 根证书PCAPdroid Wireshark服务器排障无GUI抓包tcpdump Wireshark离线分析TShark命令行协议学习/底层分析Wireshark SSLKEYLOGFILEtcpdump tshark选型理由不是拍脑袋而是看场景。Windows上Fiddler Classic安装轻、断点修改请求方便前端联调效率很高。跨平台开发我倾向mitmproxy因为可以脚本化一套流程在CI里也能复用。服务器场景铁律是tcpdump不管什么发行版几乎都能装上不依赖图形库也不吃太多内存。如果主要目的是学习网络协议Wireshark加环境变量解TLS是最好的教材你能亲眼看到三次握手、TLS握手和HTTP请求在时间轴上的顺序。5.2 为什么我不建议用破解版商业工具网上搜“抓包工具”经常会出现某商业工具破解版的下载帖。我的建议是不要碰。免费开源替代品从功能和稳定性上已经能覆盖绝大多数场景Wireshark解析协议的能力比不少商业软件还强mitmproxy的自动化能力更是商业工具比不了的。商业工具的试用版本身就能完成基础调试真到了需要完整功能时按需购买授权是正当边界。抓包工具这个品类的特殊性在于它接触的是真实业务流量。在一个可能被篡改的破解版软件里输入自己的请求、让流量从它手里过等于把钥匙交给了陌生人。我相信大多数程序员装破解版只是图方便但抓包工具这个场景恰好把风险放到了最大为省一年授权费去冒这个险太不值。6. 抓包过程中反复踩到的坑和我的绕坑姿势6.1 连接被重置或握手失败先查证书信任再怀疑工具我收到最多的求助是“明明配置好了App还是报网络错误”。这种问题万变不离其宗第一步永远是判断范围打开浏览器访问一个普通HTTPS网站如果浏览器也报证书错误那就是抓包工具根证书没装好或者没被信任如果浏览器正常、只有目标App失败大概率是App做了证书固定或者没有走系统证书链如果所有流量都正常只有一个请求失败再看是不是HTTP/2或QUIC协议被代理工具搞得不兼容。把排查顺序固定下来能省下大量无意义的抓包重试。这里还有一个反直觉的点Wireshark这类被动抓包工具本身不会破坏连接它只是看着哪怕能看到一堆TLS错误那些错误也是原本就发生的。但Fiddler、mitmproxy这类代理工具不同流量真的从它手里过配置错了它真的会让连接失败。理解了被动和主动的区别很多“抓完包网站就打不开”的诡异现象就有了合理解释。6.2 过滤器写法影响效率捕获过滤器与显示过滤器要分清Wireshark里有两套过滤器很多人混用结果在几个GB的文件里反复刷界面卡到怀疑人生。捕获过滤器是在抓包之前设定的语法简单性能高真正的“少抓点东西”显示过滤器是抓完之后对已经保存的数据流做筛选语法强大适合“抓全了再筛”。两者的适用范围完全不同。常用过滤语法可以直接抄# 捕获过滤器只看目标IP和443端口 host 10.0.0.2 or tcp port 443 # 显示过滤器筛选域名包含指定关键字的HTTP请求 http.host contains example.com # 显示过滤器只看TLS握手包 tls.handshake.type 1 # 显示过滤器看某个IP的所有双向流量 ip.addr 10.0.0.2如果目标是少抓点东西用捕获过滤器如果目标是抓全再筛就老老实实用显示过滤器。我自己的习惯是能在抓包前限定的就限定毕竟流量越小后续分析越轻松。6.3 大流量卡死先缩小范围再保存别在界面上硬扛移动网络环境或者跑大文件下载的时候Wireshark界面很容易直接卡死尤其还在同时抓多个网卡的时候。我现在养成的习惯是先在新环境里抓一分钟看看流量水位然后立刻暂停用捕获过滤器把范围缩到目标IP和端口重新开始抓抓到够用就保存绝不让它一直跑着。服务器上用tcpdump抓包时也一样配个定时脚本按时间切片每个pcap文件不超过指定大小免得后面打不开。抓包是为了定位问题不是把流量原封不动搬回家。6.4 IPv6绕过代理一个容易被忽略的低级问题代理类工具默认只监听IPv4端口但新系统和新版本App经常优先尝试IPv6连接结果就是“代理开了手机也配了但流量就是进不来”。排查思路很简单在代理工具里确认是否监听了IPv6地址mitmproxy默认监听双栈Fiddler Classic默认只监听IPv4临时把设备上该网络的IPv6关掉让流量强制走IPv4代理问题消失就能确认是IPv6绕过服务器抓包也一样tcpdump抓any接口时如果不加限定会同时吞IPv4和IPv6流量分析时注意区分这类问题实际比证书问题更隐蔽因为界面看起来一切正常请求也在跑就是抓不到。每次遇到“抓不到”都先问流量到底走哪张网卡、走哪个协议栈再问过滤器怎么写排查效率会高很多。6.5 隐私与合规红线最后提醒一件比技术更重要的事抓包工具能看到真实流量所以工作中只要涉及他人数据边界就格外重要。我自己的规矩是本地调试完立刻删除pcap文件做技术笔记和截图时把所有请求参数、令牌、手机号、邮箱一律打码绝不把线上环境抓到的流量带到客户环境之外分析。技术本身是中性的但顺手抓包可能变成数据风险这个底线守住工具才能长期用得安心。如果让我给新人一条最快的上手路径我会说先用Wireshark抓本机浏览器一次普通的HTTPS访问看明白TCP三次握手和几条关键报文再换上Fiddler或mitmproxy解开HTTPS看看请求头、响应体到底长什么样最后按自己的业务场景去配证书、写过滤器。把这三步走完抓包工具在你手里才算真正顺手。
返回列表