ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

十款免费抓包工具详解:从Fiddler到Wireshark的入门选型指南

十款免费抓包工具详解:从Fiddler到Wireshark的入门选型指南 经常有刚入行、或者准备转行做网络安全的朋友问我同一个问题“抓包工具到底该用哪个”我理解这种迷茫因为市面上的工具太多了Wireshark、Fiddler、Burp Suite、Charles、mitmproxy……名字都听过就是不知道从哪下手。本篇就按我自己的使用经验把真正免费、好用、值得花时间去学的十款抓包工具挨个讲清楚包括它们各自擅长的场景、核心功能、上手难度以及我在实际使用中踩过的坑。内容主要围绕网络安全入门经验展开会结合“抓包工具Fiddler”这类高频词汇和日常安全测试、接口调试的真实场景帮你少走弯路。先说一个容易被忽略的事实抓包不是一个“高深莫测”的黑客技能而是排查网络问题、理解协议栈、调试接口、做安全测试的基本功。掌握了抓包你就相当于能“看见”计算机之间传输的每一个字节很多从前想不明白的诡异问题在数据包面前都会原形毕露。这篇文章不是工具字典而是一份结合实操经验的选型指南和入门教程。无论你是前端、后端、运维还是立志做网络安全工程师的初学者都能从里面找到属于自己的切入点。1. 先搞清楚抓包到底在抓什么1.1 数据包是网络世界的基本单元我们平时上网不管是打开网页、刷视频还是发消息本质都是把数据切成一小块一小块通过网线、WiFi、基站进行传输。这些小块在专业上叫“数据包”。抓包工具做的事情就是在这些数据流经你的网卡或者代理服务器时把它们截获、解码并且以人类能看懂的方式展示出来。比如你访问一个网站抓包工具能告诉你这个请求发给了哪个服务器、带了什么参数、服务器响应的状态码是多少、加载了多长时间。这个能力在平时可能没什么感觉一旦遇到“接口返回500”“页面白屏”“数据莫名其妙丢失”这类问题抓包几乎是最直接的排查手段。1.2 三种抓包形式和它们的使用场景虽然市面上抓包工具非常多但底层原理基本只有三类。第一种是网卡抓包直接监听网卡上的原始数据帧典型代表是Wireshark和tcpdump。这种方式的优点是覆盖全面能看到TCP握手、DNS查询、TLS加密流量等所有网络行为缺点是需要处理的数据量很大而且遇到HTTPS加密流量时解不开就是一堆乱码。第二种是HTTP代理抓包工具在本地启动一个代理服务让浏览器或手机把流量指到这个代理上然后在中间做转发和记录。Fiddler、Charles、Burp Suite、mitmproxy都属于这一类。代理方式的好处是天然能接触应用层数据配合证书安装后可以直观看到明文HTTP请求和响应是Web开发和安全测试的主力。第三种是浏览器内置抓包比如Chrome DevTools的Network面板不需要装任何软件打开开发者工具就能用而且能跟页面元素、控制台日志联动适合前端调试。1.3 判断一款抓包工具好不好用的三个标准我自己在给新人推荐工具时通常只看三点能不能轻松解密HTTPS、过滤规则是否好用、操作界面是否直观。HTTPS解密是最容易劝退新手的地方因为现代互联网上绝大多数流量都是加密的如果工具不支持解密你能看到的就是一堆二进制乱码或“CONNECT隧道”根本没法分析。过滤规则决定了效率抓包工具一分钟能抓到几千个请求没有过滤能力等于大海捞针。界面直观度也很重要命令行工具虽然强大但对新手来说图形界面能少死很多脑细胞。后面的工具介绍也都是围绕这三个维度展开的。2. 十款免费抓包工具逐个拆解2.1 Wireshark协议分析的天花板Wireshark是业界老牌工具地位相当于文本编辑器界的Vim功能强大到你几乎可以分析任何已知的网络协议。安装它的时候有个细节Windows上会询问是否安装Npcap驱动这个一定要装否则那个抓包核心组件用的是旧方案兼容性不好。打开Wireshark选择要监听的网卡就能开始抓包。实际用起来最需要注意的不是“能不能抓到”而是“怎么从海量数据中找到想要的”。我习惯先用显示过滤器输入“tcp.port 80”这类条件再配合“Follow TCP Stream”查看整条HTTP数据内容。Wireshark对HTTPS的处理比较弱虽然它也有TLS解密功能但需要手动配置SSLKEYLOGFILE环境变量比较麻烦。所以我的建议是分析底层协议、排查网络连通性问题用Wireshark分析应用层HTTP接口用Fiddler这类代理工具。2.2 Fiddler ClassicWindows平台HTTP调试神器Fiddler是抓包工具里“出镜率”最高的名字之一也是很多人入门抓包的第一选择。需要提醒的是你现在下载Fiddler时会发现有两个版本Fiddler Classic和Fiddler Everywhere。Classic版本是老的Windows专用版目前依然免费Everywhere是新版跨平台产品支持Win/Mac/Linux但对非商业使用有免费额度限制所以本文主力推荐Classic。Fiddler本质是一个本地HTTP代理默认监听127.0.0.1:8888端口启动后自动配置系统代理浏览器里的HTTP请求会先经过Fiddler再发到服务器所以你能在列表里看到每个请求的URL、状态码、耗时、大小、Content-Type等信息。右侧的Inspectors面板分上下两部分上面是请求的Headers、Cookies、Body下面是服务器返回的Headers和Body非常直观。Fiddler另一大杀手锏是断点调试和AutoResponder前者可以拦截请求并修改后再提交后者可以直接用本地文件替换服务器响应这在mock接口数据时特别好用。等到了第3章我还会带你完整走一遍用Fiddler抓HTTPS的实操流程。2.3 Burp Suite Community EditionWeb安全测试的标配如果说Fiddler是开发者的得力助手那Burp Suite就是安全测试领域的“标配武器”。Burp Suite有Community、Professional、Enterprise三个版本社区版免费但功能阉割了一部分比如主动扫描和保存项目功能受限。可对于网络安全入门来说社区版完全够用。Burp的工作模式也是代理抓包启动后默认监听127.0.0.1:8080你需要在浏览器里配置走这个代理。它和Fiddler最大的区别在于它不只是“看流量”而是强调“改流量重放”。Burp的Repeater模块可以反复发送修改过的请求Intruder模块可以做批量参数枚举。很多做SRC漏洞挖掘的新人日常就是在Burp里分析目标网站的请求再手动修改参数去尝试越权、注入、目录穿越等漏洞——注意一定要在授权的范围内去测比如你自己搭建的靶场、有授权的众测项目千万别拿网站练手。安装Burp前需要先装Java环境社区版自带免费启动器这一层不少新人会卡住参考官方文档把Java版本对好就行。2.4 mitmproxy可以写代码的代理工具mitmproxy是一款开源免费的交互式HTTPS代理工具最大的特色是“可编程”。它本身是Python写的所以你可以通过Python脚本对流量做自动化处理。使用它要记住三个命令mitmproxy交互式命令行界面、mitmdump非交互式适合脚本处理、mitmweb通过浏览器界面查看抓包结果。我之所以把它列入免费工具清单是因为它解决了Fiddler和Charles“平台绑定”的问题装一个Python包就能在Windows、macOS、Linux上跑起来。而且mitmproxy支持SSL/TLS解码安装证书后能看到明文HTTP流量。缺点是入门门槛偏高习惯图形界面的新手第一次看到纯命令行交互界面会有点懵。我的建议是如果你打算走自动化测试或接口爬虫方向mitmproxy值得花时间研究如果只是临时抓个包直接用图形界面工具更省事。2.5 tcpdump终端下最轻量的抓包利器tcpdump是Linux系统下经典到不能再经典的命令行抓包工具没有图形界面不依赖任何繁重组件几乎每个服务器发行版都预装或可以通过包管理器一键安装。它的定位是“藏在服务器角落里随时准备抓包”。为什么需要这种工具因为生产环境的服务器往往没有图形界面你又不能为了偶发故障把Wireshark装上去这时tcpdump就是最可靠的方案。常用命令是“tcpdump -i eth0 -w /tmp/xxx.pcap”把抓到的包保存成pcap文件之后下载到本地用Wireshark打开分析。如果想在命令行直接看内容可以加“-A”显示ASCII文本或加“-X”看十六进制和ASCII对照。我在排查服务器连不上数据库的问题时就经常用“tcpdump -i any port 3306”这个命令快速定位是否发出了TCP连接请求。它不能直接对HTTPS解密但分析TCP层连通性绰绰有余。2.6 tsharkWireshark的命令行兄弟很多装完Wireshark的人没注意安装目录里还藏着一个叫tshark的命令行工具。它是Wireshark的控制台版本可以执行和Wireshark类似的抓包、分析与过滤操作但不需要打开图形界面因此在自动化脚本和远程运维中特别吃香。比如循环抓包、按文件大小自动切割、定时抓包这些在GUI里操作繁琐的任务用tshark几行命令就能搞定。具体用法上抓包用“tshark -i eth0 -f port 80”读取pcap文件用“tshark -r dump.pcap”显示过滤条件和Wireshark一致会写Wireshark过滤表达式的人几乎零成本上手。我经常拿它做批量分析比如从100MB的包文件里提取所有访问过/login路径的客户端IP一条命令的事。跟tcpdump比tshark支持更丰富的协议解码层所以如果你做Web安全又不方便开GUI在服务器上装tshark会比tcpdump更好用。2.7 Chrome DevTools Network零安装的入门首选我甚至觉得Chrome DevTools的Network面板才是大多数人应该最先接触的“抓包工具”。原因很简单你不需要安装任何软件打开Chrome按F12切到Network标签页刷新页面就能看到所有网络请求。作为浏览器自带的功能它能展示请求URL、请求方法、状态码、耗时、资源大小点击任意请求还能看到详细的Headers、Preview、Response和Cookies。跟独立抓包工具比Network面板的优势不仅是免安装还能直接“跳转到发起这个请求的代码位置”点一下就跳到Sources面板里的对应JavaScript位置这对前端排查问题简直不要太爽。它的局限也很明显只能看到浏览器发出的请求抓不到其他软件或手机的流量也不能修改请求内容后重放。所以我的定位是想快速搞懂“网页请求是怎么发生”的人先用它练手等有复杂需求了再上Fiddler或Burp。2.8 Reqable跨平台的新一代抓包与调试工具Reqable是近两三年新起来的工具界面像我早期用过的Postman但内置了解密HTTPS和抓包功能支持Windows、macOS、Linux甚至Android基础免费版够日常用。它的核心卖点是把“接口调试”和“抓包”合并到一个流程里一边抓包一边对整个请求做代码生成、发送重放、断言校验、环境管理。对做前后端联调的人来说这个体验非常顺滑。我个人比较喜欢它的列表聚焦功能比如你只想看某个域名的流量点一下域名列表就自动过滤。比起Fiddler Classic那种老Windows界面Reqable颜值高、操作更现代适合喜欢新工具的新人。当然劣势也很明显用户量还小遇到问题搜索到的社区资料相对少。如果公司允许你装第三方工具进行接口调试建议试试这款。2.9 HTTP Toolkit专注拦截与隔离测试的开源选择HTTP Toolkit是一款开源免费的HTTP抓包调试工具界面简洁支持Windows、macOS、Linux也支持在手机端配合ADB调试安卓应用。它的最大特点是“一键拦截”点一个按钮它就会打开一个专用浏览器窗口这个窗口的流量全部被Toolkit接管不会干扰其他程序。想模拟不同的网络环境也很方便比如把网速限制成“地铁里的弱网状态”直接选预设方案。它的脚本功能也很不错基于TypeScript写一小段逻辑就能自动处理请求和响应比如给所有请求头加一个token。对于前端开发、移动端联调来说HTTP Toolkit是我见过的对新手最友好的开源选择之一。缺点是不如Wireshark底层也不如Burp适合安全测试专注在“开发调试”场景。2.10 Whistle移动端调试与多平台协作的老兵Whistle是国内开发者圈子里很流行的开源跨平台抓包调试工具基于Node.js编写用npm或yarn即装即用名字常被简写为“w2”。它在Web开发、小程序调试、移动端Hybrid App联调上表现很好支持在同一个局域网里让多台手机同时连入代理大家共用一套规则。Whistle最值得提的是“规则配置”设计它的拦截转发逻辑不是靠GUI一个个点而是用一个类似Nginx的规则文件来表达。举个例子你写“www.example.com file:///C:/mock/index.html”访问这个域名时就直接返回本地文件调试环境不依赖后端联调。它的HTTPS解密需要先下载并信任根证书手机端安装证书后扫个码就能配置代理整个过程在同类工具里算顺畅的。如果你要做小程序里看不到的请求调试或者日常需要mock接口数据Whistle会非常好用。3. Fiddler抓HTTPS的完整实操流程3.1 第一次打开Fiddler要做的三件事很多新手下载Fiddler Classic后双击运行发现确实能看到一堆HTTP请求但一访问HTTPS网站就“抓瞎”了列表里全是“Tunnel To”加一个域名根本看不到具体的URL和响应内容。这是因为Fiddler默认只解密HTTP流量。第一次打开Fiddler我建议你依次做三件事第一打开“Tools”菜单下的“Options”在“HTTPS”标签页勾选“Capture HTTPS CONNECTs”和“Decrypt HTTPS traffic”弹出证书安装提示时一路确认第二在“Connections”标签页确认“Allow remote computers to connect”是关闭的如果你只在本机抓包不要开放这个选项避免局域网设备连到你的代理端口第三在“General”标签页把“UI Language”改成中文如果习惯英文界面可以忽略。做完这三件事刷新页面就能看到明文甚至带彩色图标区分的HTTPS请求了。3.2 解决HTTPS解密证书这一步躲不开我在这里多说一句原理你就不容易卡壳。HTTPS之所以叫HTTPS是因为数据经过了TLS加密。Fiddler要看到明文就必须在中间“冒充”服务器。它的做法是生成一个根证书浏览器如果信任这个根证书就信任了Fiddler生成的每一个服务器证书数据就被Fiddler解密了。所以你在勾选“Decrypt HTTPS traffic”时Fiddler会提示你安装它生成的DO_NOT_TRUST_FiddlerRoot证书。安装后你可以打开Chrome的“设置-隐私和安全-安全-管理证书”检查一下是否存在Fiddler相关证书避免浏览器提示“您的连接不是私密连接”。证书安装后如果Fiddler没抓到东西大概率是浏览器缓存了SSL状态重启浏览器或电脑即可。这个“证书信任”逻辑在后面用Burp、Charles时也是一模一样的只是不同工具生成的证书名称不同。3.3 过滤、断点和请求篡改入门最常用的三个功能Fiddler界面左侧是一个请求列表。抓包数据一多你需要在左下角的“QuickExec”输入命令进行过滤最常见的写法是“hostbaidu.com”这样列表里就只显示这个域名下的请求。如果你想按HTTP状态码过滤可以先选中一个请求右键“Save”成saz文件之后在右侧Filters标签下做更细致的条件组合。第二个功能是断点调试这是Fiddler的精髓。按F11可以设置全局断点之后发出的请求会先停住你可以在Inspectors里修改请求头、Cookie或Body再点“Breakpoint Response”或“Run to Completion”放行。第三个功能是AutoResponder在列表里右键一个请求选择“Save Response”保存返回数据再切到AutoResponder标签页勾选“Enable rules”就建立了一条规则。以后前端访问那个接口时Fiddler会用你保存的响应直接返回这在打断后端依赖时太有用了。3.4 手机WiFi代理抓包把Fiddler搬到移动端Fiddler不仅能抓电脑浏览器的流量也能抓手机的流量。操作步骤是首先保证电脑和手机连在同一个局域网内查看电脑的IP地址命令行运行ipconfig找IPv4地址然后在Fiddler的Connections设置里勾选“Allow remote computers to connect”在手机设置中找到WiFi连接的代理配置选择“手动”填上电脑IP和8888端口。手机浏览器访问“电脑IP:8888”下载并安装Fiddler的证书之后手机App发起的HTTP请求就会出现在Fiddler列表里。这个功能对调试移动端接口和App安全测试都非常重要。这里是坑最多的地方手机装完证书后访问HTTPS网站却提示“证书错误”多半是Android 7以上的系统默认不信任用户级证书或者iOS要求必须先安装描述文件再信任证书。具体做法通常需要你把App调成“允许HTTP明文流量”或给App的networkSecurityConfig里追加信任配置这一步已经涉及App改造层面不做展开但你至少要意识到“手机抓包比电脑麻烦是正常的”。4. 常见问题汇总与排查思路4.1 装完证书还是抓不到HTTPS这种问题在Fiddler和Burp上都很常见我在指导新人时遇到最多。按经验原因通常是“证书装错了位置”或“浏览器没走系统代理”。Fiddler是自动配置系统代理的但某些浏览器尤其是Firefox默认不读系统代理需要在浏览器设置里单独把代理指向127.0.0.1:8888。另一个隐蔽原因是部分安全软件或浏览器插件会拦截系统代理修改你可以在Fiddler的“Log”标签页看有没有代理相关日志。如果你确认设置都没问题还可以试着把Fiddler的“WinINET / LAN proxy”配置临时关掉再打开一次这相当于手动刷新系统代理状态。4.2 为什么只能看到CONNECT请求抓包列表里大量出现“CONNECT”开头的请求这说明客户端正在尝试建立HTTPS隧道但Fiddler没有解密这些流量。这种情况通常是“Decrypt HTTPS traffic”没有勾选或者证书链在客户端不受信任。还有一种容易被忽略的场景有些应用为了绕过代理会直接用HTTP协议不走系统代理而CONNECT隧道本身只是握手里面真正的数据没被解密。解决方法是先确认解密开关已开再检查证书是否安装成功。性能问题如此反复我就建议你直接重启Fiddler并重装证书这一步能治好80%的疑难杂症。4.3 抓包列表全是乱码抓包工具里看到中文乱码通常是字符编码问题。HTTP请求头一般不会乱码乱码多出现在响应Body里。用Fiddler查看Inspectors时如果服务端返回的是UTF-8编码但工具按GBK解析中文就会变成“锟斤拷”这类经典乱码。解决方法是检查响应头中是否有“Content-Type: text/html; charsetutf-8”的声明。实在不行可以直接在Inspectors最下方的“Hex”视图里看原始十六进制数据然后手工用Python的bytes.decode()做转换。这个问题跟工具关系不大更多是对编码的理解。熟悉这个点之后你会少很多莫名其妙的烦恼。4.4 手机代理设置后无法上网手机设置代理后经常出现“微信能发消息但网页打不开”的情况。这往往是因为微信等App做了网络安全配置不允许明文代理流量通过。最简单的排查步骤是先换成HTTP网站试试如果HTTP正常而HTTPS异常走证书信任方向排查如果HTTP也异常检查代理IP和端口是否正确以及电脑防火墙是否放行了8888端口。Windows电脑首次开启Fiddler时防火墙弹窗一定要选“允许访问”不然局域网手机根本连不上。很多新人死在防火墙这一步哭都来不及。4.5 十款工具的选型速查表工具免费程度主要平台核心场景上手难度Wireshark完全免费开源Windows/macOS/Linux底层协议分析、网络排障中高Fiddler Classic完全免费WindowsHTTP/HTTPS调试、移动端抓包低Burp Suite Community社区版免费Windows/macOS/LinuxWeb安全测试、漏洞挖掘高mitmproxy完全免费开源跨平台自动化抓包、Python脚本高tcpdump完全免费开源Linux/Unix服务器抓包、命令行分析高tshark完全免费开源跨平台批量抓包、脚本化处理中高Chrome DevTools Network完全免费浏览器内置前端调试、快速查看请求极低Reqable免费版功能完善跨平台接口调试抓包二合一低HTTP Toolkit完全免费开源Windows/macOS/Linux一键拦截、弱网模拟低Whistle完全免费开源跨平台移动端调试、mock规则中5. 从“会用工具”到“会抓包”给入门者的建议5.1 一条靠谱的学习路线我不建议一上来就钻研Wireshark的四层报头也不建议拿Burp Suite直接对着网上某个网站开扫。更合理的路线是先用Chrome DevTools的Network面板把HTTP请求的字段、状态码、响应格式看熟这个过程大概一两个星期就能建立直觉然后换成Fiddler重点练HTTPS解密、过滤、断点、AutoResponder这四个功能配上手机抓包练习主打“能解决实际问题”之后学Wireshark用“ping一下抓包看看ICMP”“访问一下域名抓DNS”这类小实验理解TCP三次握手、HTTP请求在底层如何传输最后根据你的方向选择想做安全的进Burp Suite想搞自动化的学mitmproxy。每个阶段都要手写笔记这个习惯会让你在面试时底气特别足。5.2 三个值得反复练习的实战方向第一用Fiddler或Chrome DevTools分析一个完整的登录流程找出登录接口的请求参数和加密逻辑。第二用Burp Suite在本地搭建的靶场环境比如DVWA、Pikachu里做参数篡改练习尝试修改前端传过来的价格或用户ID感受一下“请求内容可以被任意修改”带来的安全风险。第三用tcpdump在服务器上抓一个Nginx访问日志之外的“隐藏请求”比如直接访问IP、访问不存在的Server头时有没有异常流量。这三个练习从简单到复杂能帮你把工具从“看个热闹”变成“用起来解决问题”。做安全测试时永远记得你只能测试自己有权测试的目标。5.3 最后一个容易忽略的好习惯抓包这件事看起来是工具操作实际上拼的是分析和沉淀能力。我见过太多人抓完包发现接口确实返回了错误然后就不知道下一步该怎么办了。我建议你在抓每一类问题的时候顺手整理一个“抓包分析模板”问题现象是什么、抓包条件是什么、关键请求是哪几个、响应里过滤了哪些关键字段、最终定位到哪个环节。这个模板积累到几十条之后你会发现自己排查问题的速度明显变快因为这些套路是有规律可循的。以后不管是做开发联调、运维排查还是做渗透测试这些经验都会成为你自己的核心竞争力。十款免费工具说多不多说少不少真正吃透其中两三款就足以应付日常工作中九成以上的抓包需求。我个人在实际操作中的体会是工具可以换来换去但“理解流量、分析流量”的底层能力不管换到哪个公司都永远值钱。最后再分享一个小技巧遇到棘手的抓包问题时先把工具还原到最简配置再一步步加功能八成以上的疑难杂症都是配置叠加出来的——少即是多这句话在抓包领域特别灵。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进