说到抓包工具,很多人的第一反应是浏览器开发者工具里的 Network 面板。但真到了前后端联调、App 接口排查、线上问题复现这些场景,独立抓包工具的价值立刻就体现出来了。我过去几年在 Windows 上一直用 Fiddler Classic,后来换了 Mac 办公才发现 Fiddler Everywhere 这个跨平台版本才是更适合日常使用的选择——它保留了经典版抓包、断点、重写响应这些核心能力,又把界面和交互做了现代化重构,Windows、macOS、Linux 一套操作逻辑。
这篇文章写给刚接触 Fiddler Everywhere 的同学,也写给从 Classic 迁移过来的人。我会按照自己实际使用频率最高的几条主线来写:HTTPS 解密、过滤定位、改包重放、手机抓包,每一步都附上操作过程和踩坑经验。Fiddler Everywhere 不是个多难的工具,但卡在第一关的人确实不少,大部分问题都出在没理解它的代理和证书机制。
1. 装之前先搞清楚:Fiddler Everywhere 和 Classic 到底差在哪
1.1 为什么我从 Classic 换到了 Everywhere
Fiddler Classic 是老牌工具,功能没得说,但有个硬伤:它只支持 Windows。我换到 Mac 办公之后,虚拟机里跑 Classic 始终不顺手,后来就把主力换成了 Fiddler Everywhere。这个版本和 Classic 最核心的区别有几点:
- 底层是 Electron 跨平台框架,Windows、macOS、Linux 三个系统界面几乎一致,团队成员之间不会因为系统不同而沟通困难。
- 界面完全现代化,顶部工具栏、左侧会话列表、右侧 Inspectors 面板划分清楚,第一次打开不用像 Classic 那样在密密麻麻的菜单里找功能。
- 每个会话支持高亮、搜索、另存为,还能把请求保存成 Collection 做后续复用,这也是从“单纯抓包”走向“接口调试”的关键一步。
- 需要登录账号才能使用完整能力,但有免费版,个人日常调试完全够用,不用一上来就付费。
我看过一些同学装完 Fiddler Everywhere,打开后随手抓包发现啥都没有,就以为工具坏了。其实不是工具坏了,而是它默认情况下不会去解密 HTTPS,你要做的第一件事是理解它的代理机制,再做证书信任。
1.2 安装和第一次启动要注意的两件事
安装没什么特殊要求,从官网下载对应系统的安装包,一路下一步就行。但第一次启动有两个地方值得留意:
- 登录账号:首次启动会要求注册/登录 Progress 账号。这一步别跳过,否则后续保存 Collection、同步规则等功能都用不了。如果网络环境访问官网注册页面比较慢,耐心等一会儿,不要重复点击。
- 默认代理端口:Fiddler Everywhere 默认监听 8866 端口。这个端口决定了所有流量怎么进来,后面手机抓包、浏览器配置代理都会用到。建议没特殊理由就保持默认,不要随意改,否则各种客户端配置都要跟着动。
启动后你会看到一个 Capture 开关,默认是开启状态。这时打开浏览器随便访问一个网站,左侧会话列表里会开始出现一条条请求。但你会发现:很多请求是CONNECT开头,点进去看不到完整的 URL 参数和响应体。别急,这就是 HTTPS 加密导致的,下一节专门说。
1.3 界面四块区域,五分钟记熟
Fiddler Everywhere 的界面比 Classic 清爽很多,核心区域就是这四块:
| 区域 | 位置 | 作用 |
|---|---|---|
| 会话列表 | 左侧主区域 | 显示所有捕获到的请求,包含方法、URL、状态码、耗时 |
| Inspectors | 右侧面板 | 查看某一个请求的详细请求头、请求体、响应头、响应体 |
| 工具栏 | 顶部 | Capture 开关、清空会话、保存、导入导出等高频操作 |
| Composer / Rules | 左侧菜单栏 | 手动构造请求、配置重定向和断点规则 |
把这几块位置记熟,后面所有操作都不会迷路。很多人一上来就直接盯会话列表,忽略了右上角那排小图标,其实不少“卡住”的情况都是因为误触了 Capture 开关导致抓不到新请求。
2. 抓不到 HTTPS 内容?先解决证书信任这个核心问题
2.1 HTTPS 解密到底是怎么工作的
很多初学者最大的困惑就是:为什么抓包工具能看到 HTTPS 请求的内容?这里面的机制其实不复杂,用大白话讲就是“中间人代理”。
正常访问一个 HTTPS 网站时,你的浏览器和服务器之间建立一条加密通道,内容是加密的,第三方看不到。Fiddler Everywhere 做的事情,是在中间插了一脚:它把自己伪装成服务器和你浏览器通信,同时再作为客户端去和真正的服务器通信。为了让这个过程不被浏览器拒绝,它需要你信任它自己生成的“根证书”。
所以核心动作就两个:开启 HTTPS 解密开关、安装并信任根证书。如果没有信任根证书,浏览器会认为证书无效,请求直接失败,这也是很多人开关解密后“网页打不开”的原因。
2.2 从安装证书到正常解密的完整流程
我在 Windows 和 macOS 上都装过,流程基本一致,下面是我实测过的步骤:
- 打开 Fiddler Everywhere,进入 Settings(设置)面板。
- 切到 HTTPS 分类,勾选
Enable HTTPS Decryption(启用 HTTPS 解密)。 - 点击
Trust Certificate(信任证书)按钮,系统会弹出证书安装窗口。 - Windows 系统:证书存储位置选“本地计算机”,然后点击“浏览”选择“受信任的根证书颁发机构”,确认完成。
- macOS 系统:钥匙串访问里找到 Fiddler 的根证书,双击打开,把“信任”选项改为“始终信任”。
- 操作完成后建议完全退出浏览器再重新打开,旧的连接缓存不会立即释放。
做完这些步骤,再访问任意 HTTPS 网站,你会在会话列表里看到一条条完整的 https:// 请求,点击任意一条,右侧 Inspectors 里能看到完整的 URL、请求头、请求体和响应内容。
2.3 三个最常见的证书问题
- 证书安装后还是看不到内容:最常见原因是浏览器缓存了旧的连接状态。Windows 下用 Ctrl+Shift+Delete 清一下缓存,或者干脆用无痕窗口测试;macOS 下如果用了 Safari,也要注意检查证书是否在“系统”钥匙串里被信任,而不只是“登录”钥匙串。
- 证书误删想重装:不要在系统设置里只删一半。正确做法是:先把 Fiddler Everywhere 里 HTTPS 解密勾选取消,再在系统证书管理里彻底删除 Fiddler 根证书,最后重新勾选并点击 Trust Certificate,生成全新的根证书。
- 端口被占用导致抓不到数据:如果启动 Fiddler Everywhere 后浏览器访问网页全部超时,大概率是 8866 端口已被其他程序占用。可以在 Settings 里修改端口,改完重启工具,浏览器代理也会自动跟随。
关于证书,我自己的建议是:不要在生产环境、公司内网环境随意开启 HTTPS 解密,尤其涉及银行、支付类站点,证书信任操作一定确认是自己可控的设备,避免敏感信息经手不明代理。个人开发机、测试环境随便玩,但保持这个意识没有坏处。
3. 过滤请求:别让无关流量淹没真正的接口
3.1 为什么全量抓包会让你抓狂
很多人第一次打开 HTTPS 解密后,会看到网页请求哗哗往下刷,一个页面可能有几十甚至上百个请求,除了真正想看的接口,还有一堆埋点、统计、CDN 资源、图片字体请求。在这种流量洪流里找目标接口,跟大海捞针一样。
用过一段时间的同学都会意识到:Fiddler Everywhere 真正提升效率的地方不是“能抓到包”,而是“能快速过滤出你想要的包”。所以抓包前先想清楚一个问题——你这次要看哪个域名的请求?接口路径特征是什么?带着目标去过滤,比抓完再翻高效十倍。
3.2 快速过滤栏的几组实用写法
Fiddler Everywhere 顶部有一个 Quick Filter(快速过滤栏),支持直接输入域名关键词、URL 片段、状态码等条件。根据我平时的使用习惯,最常用的几类写法如下:
- 按接口域名过滤:在过滤栏输入
api.example.com,列表就只会显示该域名下的请求,适合前后端联调时只关注后端接口的情况。 - 按路径关键词过滤:输入
/api/user,会匹配 URL 中包含该路径的请求,适合在同一个域名下区分多个模块。 - 按状态码过滤:输入
400或500,专门看异常请求,排查线上故障时非常有用。 - 排除静态资源:输入
-//cdn.example.com -//fonts.example.com这类排除语法,把图片、字体、公共 CDN 的流量挡在外面,会话列表瞬间清爽。
有些版本的过滤栏也支持host:这种键值语法,具体以你当前版本里的提示为准。我的建议是:不要试图背语法,打开过滤栏旁边的小问号或文档看两眼,把域名和路径这两种最常用的记熟就够了。
3.3 在 Inspectors 里高效查看请求内容
过滤到目标会话后,点击该会话,右侧 Inspectors 面板会展示详细信息。这里我强烈建议大家养成两个习惯:
第一,先看“请求行 + Host + 路径”,确认这个会话正是自己要找的接口,再往下看参数字段。很多同学点开一个会话就开始翻 Body,结果看了半天发现是另一个接口,白费功夫。
第二,善用“复制为 cURL”。在会话上右键选择Copy as cURL,可以让 Postman、curl 命令行直接复现这个请求。这个功能在排查问题时特别实用——你不用手动去拼接 URL、Headers、Body,一键还原,拿来就能在终端里跑,快速判断“是不是后端接口本身就有问题”。
另外,Fiddler Everywhere 的响应体查看支持 JSON 格式化,遇到返回乱码或一大串压缩内容时,可以在 Inspector 里切换视图,或者配合设置里的“自动解压”选项,看到格式化后的 JSON。
4. 改包和重放:Composer、AutoResponder、断点各有用武之地
4.1 Composer 重放请求,最直接的接口调试方式
Composer 是 Fiddler Everywhere 中非常顺手的一个功能,它的最大价值在于:不用写代码,就能手动构造一个 HTTP 请求,然后发送给服务端,观察响应。
我的用法通常是这样的:
- 在会话列表中找到目标接口,右键 →
Copy as cURL,或者直接把会话拖拽到左侧的 Composer 区域。 - 在 Composer 里修改请求参数:改 URL、改 Header、改 Body。比如后端说“用户 ID 传错了”,我直接把参数从 1001 改成 1002 再发一次,看响应是不是如预期变化。
- 点击发送(Send),响应会实时展示在右侧,不需要经过浏览器页面。
这个功能在前后端联调时特别好用。比如前端页面有个表单,你不想一次次手动填表单触发请求,直接在 Composer 里改参数 + 重放,一秒验证不同数据。比打开页面填写、点击提交快得多。
有一点要注意:Composer 发出的请求会再次出现在会话列表里。别奇怪,这是正常行为,因为你确实又“抓”到了一次请求。
4.2 AutoResponder 模拟接口返回,后端挂了一样能测前端
AutoResponder(自动响应器)是我最常用的高级功能之一。简单说,它可以让你“拦截”某个请求,不访问真实服务器,直接返回你设定的响应。这样即使后端接口挂掉了、还没写好,前端也能继续开发联调。
实际配置步骤:
- 在会话列表找到目标请求,右键 →
Save Response,把真实响应保存成本地文件。 - 打开左侧 AutoResponder 面板,点击
Add Rule(添加规则)。 - 规则匹配条件默认会填好这条请求的 URL,你可以改成更宽泛或更精确的匹配规则。
- 在响应动作里选择你保存好的文件,也可以选择返回一个固定字符串(比如一个假的 JSON 数据)。
- 开启 AutoResponder 开关,再重新触发这个请求,Fiddler Everywhere 会把本地内容当作响应返回。
这个功能特别适合模拟异常数据。比如你要测前端“接口返回 500 时页面怎么展示”,真实环境不好造 500,那就建一条 AutoResponder 规则固定返回 500 状态码和一个错误 JSON,前端马上就能验证异常分支。改造响应体同理,你可以把返回的code从 200 改成 500、把data字段改成空数组,观察前端是否兼容。
4.3 断点中断,关键时刻手动改数据
如果说 AutoResponder 是“直接替换响应”,断点功能就是“经过红绿灯时手动干预”。你可以让某个请求在到达服务器之前停下来(请求断点),或者让响应在返回客户端之前停下来(响应断点),在停住的瞬间修改数据,然后放行。
配置断点的方式:在 Rules 面板新建规则,指定匹配的 URL 和方向(请求/响应),也可以右键某个会话 →Add Rule→Breakpoint。
遇到断点命中时,会话列表里那条请求会变成挂起状态。此时在 Inspector 里编辑请求参数或响应内容,改完后点击继续(Resume)按钮,请求/响应才会被放行。
我最常拿断点来做的实验是:把登录接口的响应里nickname改成一个超长字符串,看前端页面对异常展示会不会崩。这种“临时改一下”的场景用断点最合适,因为断点只影响当前这一次请求,不用像 AutoResponder 那样去配置规则和文件名。
5. 手机抓包:把移动端联调从“盲猜”变成“可观察”
5.1 手机怎么走 Fiddler Everywhere 的代理
移动端抓包是联调场景里绕不开的需求。App 里的网络请求肉眼看不到,出了问题只能靠日志,但如果能通过 Fiddler Everywhere 抓到完整请求,整个排障过程就透明多了。
手机和电脑连接同一个局域网之后,需要做两步:
- 在电脑上找到本机 IP(macOS 在“系统设置 → 网络”里看;Windows 在命令行输入
ipconfig查看 IPv4 地址)。以192.168.1.100为例。 - 在手机的 WLAN 设置里,找到当前连接的 WiFi,修改代理为“手动”,服务器填电脑 IP(例如
192.168.1.100),端口填8866。
配置好后,手机上打开任意 App 或浏览器发起请求,Fiddler Everywhere 的会话列表里就会开始出现手机流量。前提是手机和电脑在同一局域网,且电脑防火墙没有拦截 8866 端口。如果第一步操作后手机网页完全打不开,优先检查电脑防火墙是否放行了 Fiddler Everywhere。
常见的一个坑是:公司 WiFi 开启了“AP 隔离”功能,设备之间互相不能访问,这种网络环境下手机代理大概率连不通。遇到这种情况不要纠结,换个热点或者用手机 USB 共享网络来调试。
5.2 手机证书安装的差异
手机通过代理接入后,会面临和一个关键问题:HTTPS 流量依然解不开,因为手机还没信任 Fiddler Everywhere 的根证书。证书下载地址和电脑一样:手机浏览器访问http://电脑IP:8866或http://localhost:8866,页面会提供证书下载入口,下载并安装即可。
但 iOS 和 Android 在“信任”这一步上有明显差异:
- iOS:安装证书后,还要去“设置 → 通用 → 关于本机 → 证书信任设置”里,把 Fiddler 的根证书开关打开,否则系统会默认不信任用户安装的证书。
- Android 7.0 以上:很多 App 默认不信任用户 CA 证书,即使你安装了根证书,App 里的 HTTPS 请求依然抓不到。这是因为高版本 Android 出于安全策略,应用默认只信任系统证书。想抓系统级流量需要额外处理,比如把证书安装到系统证书目录(部分设备需要 Root),或者在开发版 App 里配置网络安全策略。
我的建议是:如果只是做自己负责的 App 和接口调试,优先找开发同事确认 App 是否配置了用户证书信任,或者在测试包中开启对应配置。如果只是调试微信、支付宝这类第三方 App,不要试图去抓它们的加密流量,这既涉及用户隐私,也涉及敏感数据,完全没必要。
5.3 一个登录问题的定位案例
讲一个我自己遇到过的真实排障过程,这个案例足够说明移动端抓包能节省多少时间。
当时 App 上线前测试反馈“登录一直提示密码错误”,但后端信誓旦旦说接口没问题。前端也排查了,说请求发出去就返回 401。三方僵持不下,我直接打开 Fiddler Everywhere,让测试手机走代理抓包。
抓下来之后发现:登录请求发出时,URL、请求体、密码参数都正常,但 Header 里少了一个自定义字段X-Client-Version。后端新版本接口要求这个字段必须带上,否则直接拒绝。前端代码用的是旧版本接口文档,根本没传这个 Header。
如果没有抓包工具,这个问题的排查可能要来回扯皮很久,前后端互相对自己的代码打保票。抓包一眼看出请求实际长什么样,责任和修复点马上就清楚了。无论是 App 请求、小程序请求还是 H5 请求,这个方法都适用——先看数据实际是什么,再讨论谁对谁错。
6. 用久了才体会到的几个习惯
6.1 动手前先想好过滤条件
抓包这事,看似打开开关就行,但效率高低全看习惯。我现在每次开 Fiddler Everywhere 之前,都会先想好“我要看哪个域名的请求”,然后直接设置好过滤条件再开始操作。而不是先抓一堆包再慢慢翻。这就像去图书馆找书,先查好书架编号直接走过去,比在书库里乱逛高效得多。
碰到抓不到目标请求的情况,也别急着怀疑工具坏了,先问自己四个问题:Capture 开关开了吗?HTTPS 解密开了吗?过滤条件是不是把目标请求挡住了?目标请求是不是走了代理?
6.2 把关键请求存成 Collection
你可能会遇到这种情况:一个接口今天调通了,过两周又要联调,但参数怎么传、Header 带什么早就忘了。这时候如果你之前顺手把请求保存到了 Collection,直接打开 Fiddler Everywhere 左侧的 Collection 列表,找到那条请求重新发送即可,所有细节都原样保留。
操作方式:在会话列表里选中目标请求,右键 → 添加到 Collection,也可以直接拖拽。遇到复杂的排障记录,我会创建一个专属集合,把关键的请求、响应示例都放进去,方便后续回溯。这个习惯能让你从“每次靠记忆重试”变成“有记录地复现”。
Fiddler Everywhere 还支持环境变量(Environment),可以给同一个接口配置开发、测试、生产不同的 Base URL,切换环境时不用手动改 URL。这与 Postman 的 Environment 思路一致,基础功能免费版里也能用,值得体验。
6.3 升级与清理的日常维护
Fiddler Everywhere 的版本更新频率不算低,新版本通常会修复证书兼容性问题、界面卡顿问题,建议有条件就保持更新。但升级后如果遇到抓不到包、网页全部打不开,优先检查证书是否还在,因为个别版本升级会触发证书信任状态变化。
日常使用中,会话列表里堆积过多请求会让界面越来越卡。定期点击工具栏的 Clear Session(清空会话)按钮是个好习惯,尤其是抓完一个问题的包之后,清空列表再开始下一个问题,避免新旧请求混在一起看花眼。
另外一个容易被忽略的点:如果你长时间不使用 Fiddler Everywhere,记得关闭 Capture 开关或退出工具,否则电脑上所有 HTTP/HTTPS 流量都会经过它的代理,对上网速度和稳定性会有一定影响。我第一次用的时候挂着抓包软件过夜,第二天打开浏览器明显感觉慢了,后来才反应过来是代理一直开着。
用 Fiddler Everywhere 这几年,我最深的体会是:抓包工具本身不难,难的是养成“先明确目标再动手”的排障思路。每次打开工具前想清楚我要看什么、预期看到什么、如果不是预期结果该怎么缩小范围,这套方法比单纯记住某个按钮的位置更加受用。希望这篇文章能帮你把 Fiddler Everywhere 的基础操作理顺,快速上手这个调试利器。