你有没有遇到过这种场面前后端联调前端指着浏览器说请求发出去了后端说日志里根本没有这条记录两个人对着屏幕谁都不服谁一查就是一两个小时。这时候如果有一面能照见请求全貌的“镜子”问题往往几秒钟就暴露了——是URL写错了是参数没拼对还是请求压根没到服务器。这面镜子就是抓包工具而我最近用得最多的是Fiddler Everywhere。它是经典Fiddler的跨平台升级版Windows、macOS、Linux都能跑界面比老版现代很多抓包、HTTPS解密、断点改包、接口Mock这些核心能力都保留了下来。这篇文章我从安装开始写一直写到移动端抓包、日常调试功能和那些网上很少提的坑。不管你是刚接触抓包的新手还是做前后端联调的老手应该都能找到可以直接用的内容。1. 先搞清楚Fiddler Everywhere是干什么的再决定怎么用它1.1 它本质是一个调试代理不要和普通工具混为一谈Fiddler Everywhere的工作原理一句话就能说清楚启动一个本地监听端口让系统所有HTTP/HTTPS流量先经过它再转发出去。默认端口是8866启动后它会自动接管系统代理于是浏览器、客户端程序发出去的每一个请求都会从你眼前经过。打个比方它像一个开在寄件人和收件人之间的收发室。快递不直接送到收件人手里而是先到这个收发室。你可以拆开包裹看看里面装了什么、面单上写了什么甚至可以把包裹换掉再继续送。对开发者来说这就等于给自己装了一双透视眼。这也是我建议你先理解的一点它不是一个网络加速工具也不是浏览器插件而是一个独立的调试代理Debugging Proxy。你所有流量的“观看权”“修改权”都在它手里所以用完一定要正常退出否则系统代理可能会一直指在8866端口上导致电脑上不了网。1.2 为什么选Everywhere而不是经典Fiddler很多老开发者都用过经典版Fiddler功能扎实但有个硬伤只支持Windows。而且界面停留在上个时代高分屏下缩放都别扭。Everywhere把同样的抓包内核搬上了三大平台界面左中右三栏非常清晰会话列表、Inspectors面板、Composer、AutoResponder都在一眼能看到的位置对新手的友好度明显高出一截。另外Everywhere引入了账号体系许可证跟着账号走。换电脑之后登录同一个账号就能继续用不用像以前那样到处找授权文件、配置环境变量。对团队内协作来说这个变化其实很实际。1.3 免费版到底够不够用Everywhere提供免费版下载安装不花钱。不过免费版和付费版之间确实存在功能差异部分高级功能是Pro专属。我的建议是先用免费版把日常的抓包、解密、断点流程跑通确认它能否覆盖你的需求再考虑要不要升级别上来就买单很多人的核心诉求免费版已经能满足。但也别默认免费版什么都有装完之后发现某个你想要的功能被锁了再折腾体验就很差了。安装前花两分钟去官网看一版对比表比事后后悔划算得多。1.4 下载渠道和安装包校验下载一定要认准官网不要去第三方下载站拿安装包。这类工具被二次打包加料的风险是真实存在的我见过有人从下载站装了个“破解版”抓包工具结果抓包没成功电脑倒先中了招。装完顺手看一眼数字签名Windows下右键安装包属性里能看到签名信息macOS下系统Gatekeeper本身也会做校验。2. 安装全流程三个平台分别怎么装细节在哪里2.1 安装前先确认系统要求Everywhere基于Electron对系统版本有一定门槛。Windows建议10及以上macOS建议主流的较新版本Linux对主流发行版支持都不错。老系统不是完全不能装但很可能出现界面渲染异常、功能缺失这类问题。开始之前去官网扫一眼系统要求省得装到一半发现平台不支持。2.2 Windows安装常规操作里藏着一个端口差异Windows安装包是exe双击按提示下一步就行。安装时建议选择“为当前用户安装”后面涉及证书操作会弹UAC这样权限处理更省心。装完启动首次打开会要求登录账号浏览器会弹一个授权页登录完回到应用它就开始监听了。这里有个非常容易踩的坑Everywhere默认监听端口是8866不是经典版的8888。很多老用户按习惯填了8888发现网络直接不可用一脸懵。端口在Settings→Proxy里可以看到也可以改但默认就是8866这点一定记牢。2.3 macOS安装dmg拖入ApplicationGatekeeper卡一下macOS下是dmg镜像打开后把Fiddler Everywhere拖进Applications目录。首次双击如果提示“无法验证开发者”去“系统设置→隐私与安全性”在安全性区域选择“仍要打开”或者直接在应用程序文件夹里右键图标选“打开”。这是从网络下载的App最常见的Gatekeeper拦截逻辑和“破解版需要特殊操作”完全是两码事。另外macOS装证书时应用内点了Trust之后还需要去钥匙串手动信任一次。这个细节我在下一章细讲别以为应用内提示成功就万事大吉。2.4 Linux安装AppImage最省事依赖问题最多Linux版提供AppImage、deb、rpm等多种格式。AppImage最省事下载后给执行权限直接运行chmod x Fiddler.AppImage ./Fiddler.AppImage如果提示缺FUSE依赖导致打不开安装一下FUSE再重试。偏好传统安装方式就用deb或rpm包。Linux发行版太多桌面环境差异大遇到界面按钮错位、渲染奇怪的不算少见但不影响核心抓包功能不用太纠结。2.5 首次登录账号打开就是监听状态无论哪个平台首次启动都会要求登录Fiddler账号没有账号先去官网注册一个。登录成功后你会看到主界面左侧是实时刷新的会话列表右侧是Inspectors面板底部状态栏显示当前监听端口。此时应用已经自动设置了系统代理你打开浏览器随便访问一个网站流量应该已经出现在列表里。如果这里就能看到请求说明安装环节已经通了。接下来的HTTPS解密才是抓包工具真正开始发挥威力的地方。3. HTTPS解密与证书信任这个环节决定了你九成的抓包体验3.1 为什么HTTPS流量默认是乱码普通HTTP是明文传输Fiddler可以直接读懂。但今天绝大多数接口都是HTTPS数据在TLS层做了加密。如果不做任何处理抓到的就只是一条CONNECT请求和一个加密隧道URL之外的内容什么都看不到。要让Fiddler能“看穿”加密层核心动作就是安装并信任它生成的根证书。它的原理是标准中间人解密你的客户端信任了Fiddler的根证书之后Fiddler针对每个访问的域名动态签发一张临时证书。当客户端访问目标服务器时会遇到这张由Fiddler签发的证书系统判断它由已被信任的根证书签发就建立了完整的加密链路。而这条链路里的每一个包都要经过Fiddler中转所以它能读到明文。说得再直白一点你信任了这个中间人中间人才能帮你拆开加密包裹看内容看完再重新封好转交出去。如果你不信任它它就只能站在门外什么都看不到。3.2 在Everywhere里开启HTTPS解密的具体路径按顺序操作打开Settings找到HTTPS页签确认“Capture HTTPS traffic”已勾选然后点击“Trust certificate”安装根证书。Windows下会弹UAC确认macOS和Linux会调用系统弹窗。装完证书后建议顺手重启一次Fiddler让根证书加载真正生效。如果版本提示你到浏览器访问证书下载页地址通常是http://localhost:8866打不开的话注意试一下带端点的写法http://localhost.:8866这个地址里local后面有个点别漏掉。再不行就换http://127.0.0.1:8866总有一个能打开。3.3 各个系统“信任”证书的细节差异Windows证书会导入当前用户的根证书存储一般不需要额外操作。如果后续解密失败可以打开证书管理器运行certmgr.msc在“受信任的根证书颁发机构→证书”里确认存在以Fiddler开头的证书。macOS应用内点了Trust之后还要去钥匙串访问找到“登录”钥匙串下的Fiddler证书双击打开在“信任”选项卡里把“使用此证书时”改成“始终信任”。这一步不做HTTPS解密大概率不生效。Linux不同桌面环境差异比较大。Chromium系浏览器一般跟随系统证书库问题不大Firefox默认有独立证书库如果发现浏览器流量解不了密去Firefox设置里打开“使用系统根证书”选项或者手动导入Fiddler提供的证书文件。3.4 验证解密是否真正生效做完以上操作打开任意HTTPS网站回到Fiddler列表看结果。如果会话里出现了完整的域名、URL、状态码右侧Inspectors能看到请求头和响应体那就说明解密成功了。如果还是只能看到CONNECT第一个排查方向就是证书信任第二个方向是是否重启了Fiddler。这里也提醒一下HTTPS解密是费CPU的而且对所有走系统代理的流量都生效。如果你只是临时想看个普通HTTP接口或者只关心请求头状态码完全可以把“Capture HTTPS traffic”临时关掉跑起来会轻快很多。4. 移动端抓包手机、小程序、模拟器的流量怎么进来4.1 第一步永远是把手机和电脑放进同一个局域网手机和电脑连同一个Wi-Fi电脑上查一下局域网IP。Windows用ipconfigmacOS/Linux用ifconfig或ip addr。记下这个IP然后在手机Wi-Fi设置里把代理方式改为“手动”服务器填电脑IP端口填8866保存。这之后用手机浏览器访问http://电脑IP:8866如果能看到Fiddler的证书下载页面说明TCP链路已经通了。看到“证书下载”四个字就说明离成功只差安装证书这一步。如果这个页面打不开九成是防火墙拦截了8866端口。Windows首次启动Fiddler时弹了防火墙提示要点允许没弹的话去防火墙高级设置里手动添加入站规则放行TCP 8866。4.2 iOS抓包下载证书只是前半步完全信任才是关键手机打开了代理再用Safari访问上面的证书下载地址下载描述文件。然后去“设置→已下载描述文件”里安装。安装完成之后一定记得再做一步打开“设置→通用→关于本机→证书信任设置”把Fiddler的根证书开关打开设为“完全信任”。这一步是iOS抓包的分水岭。证书装上但没开完全信任系统会拿着这个证书跟你较劲HTTPS照样解不开。做完这个动作手机访问任意HTTPS页面电脑上的Fiddler列表就会开始刷新手机流量。抓完测试记得把手机代理关掉不然手机会一直把流量绕经电脑一离开这个Wi-Fi网络立刻变“无互联网连接”。4.3 Android抓包证书能装上但App未必认Android浏览器下载证书后在系统设置里安装成CA证书就行。但这里有一个很多人没意识到的安全机制Android 7.0以上用户安装的CA证书默认不被普通App信任只有系统预装CA证书才受信任。所以结果是——浏览器里能看到解密后的流量但大多数正经App的HTTPS请求你照样抓不到。这不是Fiddler的问题而是系统的安全策略属于合理且正常的行为。如果你确实需要抓某个App的流量常规手段包括App在AndroidManifest里配置networkSecurityConfig并显式允许用户证书在root设备或模拟器里把Fiddler证书安装到系统证书目录或者调试版本打开可抓包的开关。这些都需要App侧的配合普通抓包场景下不用强求。4.4 模拟器抓包比真机省事Android模拟器进入Wi-Fi设置长按当前网络修改代理为电脑IP:8866装好证书就能抓。iOS模拟器更省事它直接继承macOS的系统代理只要电脑上Fiddler开着模拟器里的流量就自动能抓到连代理配置都省了。我平时调接口、验证Mock数据都是优先用模拟器搞定真机才去处理证书信任那套流程。4.5 时间不对证书校验必失败手机、电脑系统时间差异过大时TLS校验证书有效期会失败明明装了证书、开了代理还是报证书错误。这个方法问题最容易忽略先同步时间再回来看抓包结果。遇到过几次这个问题之后我现在每次给新设备配抓包都顺手看一眼两边时间。5. 日常调试三大件断点改包、Mock接口、重放请求5.1 先学会用Inspectors看懂一次完整请求左侧会话列表任意选中一条请求右侧Inspectors就能分段展示请求和响应。以POST接口为例Request的Headers里能看到Content-Type、Cookie、RefererBody里是真实的JSON参数Response里能看到后端返回的状态码、响应体、耗时。前后端联调时吵架扯皮的那些“参数到底传没传”在这里一秒定位。流量一多记得用Filters过滤。我只想关注某个域名时会在过滤框里填HOST只显示这个域名下的请求避免被图片、CSS、字体这些静态资源刷屏。5.2 断点让请求停在半路想改什么改什么这是抓包工具最实用的一招没有之一。在会话列表选中某条请求右键选择Request断点意思就是这个请求在发往服务器之前先在Fiddler停住。停住之后右侧的Headers和Body会变成可编辑状态你可以临时改参数、改Header、改URL甚至把整个请求体换掉然后点“Continue”放行。响应同样可以断点。选中请求后设置Response断点等响应返回时在到达浏览器或App之前停住改完再放行。我在实际工作中常用它来验证给后端塞一个畸形参数看它会不会报错把接口响应改成异常格式看前端弹窗和错误提示处理得对不对。这种玩法是纯前端在开发者工具里做不到的。提醒一句断点触发后一定记得点Continue不然请求会一直挂在那页面一直转圈而且你会以为接口出了问题。5.3 AutoResponder把接口“假装”成假数据源Mock接口是联调阶段的大救星。后端接口还没就绪前端想把页面跑起来就可以用AutoResponder。在AutoResponder里添加一条规则当请求URL匹配你指定的Pattern时直接返回你准备好的本地文件或指定URL不把请求发往真实服务器。比如我想把用户信息接口Mock掉规则匹配https://example.com/api/user/info 返回内容file:///home/me/mock/user.json启用规则后刷新页面前端拿到的就是这个JSON文件的内容。这样的好处是前端可以完全脱离后端环境独立开发接口数据结构自己定联调前就能自测个七七八八。需要注意两点本地文件路径要写对文件内容要是合法的JSON或者你模拟的响应体匹配规则尽量精确别用一个特别宽泛的通配符把同域名下的一堆接口全Mock了那样你会浪费很多时间排查“为什么这个接口返回不对”。5.4 Composer离开页面也能直接发请求Composer面板就是一个轻量接口调试工具选方法、填URL、写Headers和Body点Send就能发请求。适用场景很多后端说改了参数格式你想快速验证某个接口只能在特定操作下触发你想单独复现或者你怀疑接口跟页面逻辑耦合想隔离测试。有个小技巧从会话列表里拖一条真实请求到Composer它会自动带上原来的Headers和Cookie你只要改一下参数就能发送比从零开始填方便几个量级。这个操作在调鉴权接口时尤其好用。5.5 会话保存与导出HAR调完一天接口会话不能白抓。你可以把整个会话列表保存成.saz文件这是Fiddler专用格式下次启动直接打开接着分析。也可以导出成HAR文件HAR是通用格式不需要安装Fiddler也能看我经常把一段请求的HAR发给同事让他自己打开分析比在聊天窗口里来回贴截图高效得多。6. 高频踩坑记录这些坑我基本都踩过一遍6.1 启动后完全抓不到流量这是被问得最多的一个问题。排查有固定顺序先看Fiddler底部状态栏的监听端口是不是你设置的那个再看系统代理有没有被正确设置——Windows去“设置→网络和Internet→代理”看macOS去“系统设置→网络→代理”看如果浏览器装了代理切换类扩展并且扩展里指定了独立端口那流量不会进Fiddler把扩展恢复成“使用系统代理”就行。还有一种很隐蔽的情况Fiddler是被强制杀掉的比如断电、崩溃导致系统代理没有恢复。此时手动去系统代理设置里关掉或者重新启动Fiddler让它接管一次就能解决。6.2 抓到的全是CONNECT没有应用层内容出现这种情况九成是HTTPS证书没配好。认真核对三件事根证书是否真的安装了系统是否真的信任了它尤其macOS的“始终信任”开关安装后是否重启Fiddler。还有一个低频但真实的原因系统时间不对TLS证书有效期校验失败。6.3 端口被占用启动失败或者列表不刷新8866端口被别的本地服务占用时Fiddler会启动异常或者抓不到包。换个端口就能解决但别忘了一个细节手机上、浏览器里的代理端口要一起改成新端口。我吃过这个亏电脑换了端口手机代理还指着8866结果抓了半天什么都看不到。6.4 升级版本之后HTTPS突然解不了密Everywhere每次大版本升级根证书可能被替换或者旧证书失效原本正常的HTTPS解密会突然开始报证书错误。解决方式很简单回到Settings→HTTPS重新点一次Trust certificate必要时重启应用。这个坑出现的频率不低每次升级完留个心眼就行。6.5 本机回环地址、localhost抓不到默认情况下Fiddler会对本机地址放行不走进代理所以抓http://localhost:3000这类请求时常常空手而归。如果你确实要抓本机服务的流量去Settings→Proxy里的Bypass Rules把localhost、127.0.0.1之类的条目移除再重新开启代理。浏览器访问时也可以输入带端点的http://localhost.:8866让本机流量走一遍Fiddler。6.6 老机器特别卡Everywhere毕竟是Electron应用内存占用比经典版大不少。抓大量会话时内存会持续上涨页面卡顿属于正常现象。老机器上建议打开Filters减小捕获范围长时间抓包时定期清空会话列表这个体验会好很多。最后聊一点个人体会。我见过不少新手上来就直接开HTTPS解密、同时把手机电脑全部接进来结果一屏乱码、什么都抓不到很容易被劝退。我的建议是先抓一条HTTP流量跑通链路再开HTTPS解密最后才上移动端。每加一个环节就验证一次问题出在哪一步立刻就能暴露。Fiddler Everywhere的上手门槛其实不高但真正用得顺不顺取决于你对代理、证书和系统信任机制的理解。把这篇文章里的证书逻辑和排查顺序搞清楚再遇到抓包问题你大概率能比之前镇定很多。
阅读完成 · 觉得有帮助?