Fiddler Everywhere 实战:HTTPS解密、过滤与手机抓包全指南
2026/9/16 5:56:17 网站建设 项目流程

说到抓包工具,很多人的第一反应是浏览器开发者工具里的 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 安装和第一次启动要注意的两件事

安装没什么特殊要求,从官网下载对应系统的安装包,一路下一步就行。但第一次启动有两个地方值得留意:

  1. 登录账号:首次启动会要求注册/登录 Progress 账号。这一步别跳过,否则后续保存 Collection、同步规则等功能都用不了。如果网络环境访问官网注册页面比较慢,耐心等一会儿,不要重复点击。
  2. 默认代理端口: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 上都装过,流程基本一致,下面是我实测过的步骤:

  1. 打开 Fiddler Everywhere,进入 Settings(设置)面板。
  2. 切到 HTTPS 分类,勾选Enable HTTPS Decryption(启用 HTTPS 解密)。
  3. 点击Trust Certificate(信任证书)按钮,系统会弹出证书安装窗口。
  4. Windows 系统:证书存储位置选“本地计算机”,然后点击“浏览”选择“受信任的根证书颁发机构”,确认完成。
  5. macOS 系统:钥匙串访问里找到 Fiddler 的根证书,双击打开,把“信任”选项改为“始终信任”。
  6. 操作完成后建议完全退出浏览器再重新打开,旧的连接缓存不会立即释放。

做完这些步骤,再访问任意 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 中包含该路径的请求,适合在同一个域名下区分多个模块。
  • 按状态码过滤:输入400500,专门看异常请求,排查线上故障时非常有用。
  • 排除静态资源:输入-//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 请求,然后发送给服务端,观察响应。

我的用法通常是这样的:

  1. 在会话列表中找到目标接口,右键 →Copy as cURL,或者直接把会话拖拽到左侧的 Composer 区域。
  2. 在 Composer 里修改请求参数:改 URL、改 Header、改 Body。比如后端说“用户 ID 传错了”,我直接把参数从 1001 改成 1002 再发一次,看响应是不是如预期变化。
  3. 点击发送(Send),响应会实时展示在右侧,不需要经过浏览器页面。

这个功能在前后端联调时特别好用。比如前端页面有个表单,你不想一次次手动填表单触发请求,直接在 Composer 里改参数 + 重放,一秒验证不同数据。比打开页面填写、点击提交快得多。

有一点要注意:Composer 发出的请求会再次出现在会话列表里。别奇怪,这是正常行为,因为你确实又“抓”到了一次请求。

4.2 AutoResponder 模拟接口返回,后端挂了一样能测前端

AutoResponder(自动响应器)是我最常用的高级功能之一。简单说,它可以让你“拦截”某个请求,不访问真实服务器,直接返回你设定的响应。这样即使后端接口挂掉了、还没写好,前端也能继续开发联调。

实际配置步骤:

  1. 在会话列表找到目标请求,右键 →Save Response,把真实响应保存成本地文件。
  2. 打开左侧 AutoResponder 面板,点击Add Rule(添加规则)。
  3. 规则匹配条件默认会填好这条请求的 URL,你可以改成更宽泛或更精确的匹配规则。
  4. 在响应动作里选择你保存好的文件,也可以选择返回一个固定字符串(比如一个假的 JSON 数据)。
  5. 开启 AutoResponder 开关,再重新触发这个请求,Fiddler Everywhere 会把本地内容当作响应返回。

这个功能特别适合模拟异常数据。比如你要测前端“接口返回 500 时页面怎么展示”,真实环境不好造 500,那就建一条 AutoResponder 规则固定返回 500 状态码和一个错误 JSON,前端马上就能验证异常分支。改造响应体同理,你可以把返回的code从 200 改成 500、把data字段改成空数组,观察前端是否兼容。

4.3 断点中断,关键时刻手动改数据

如果说 AutoResponder 是“直接替换响应”,断点功能就是“经过红绿灯时手动干预”。你可以让某个请求在到达服务器之前停下来(请求断点),或者让响应在返回客户端之前停下来(响应断点),在停住的瞬间修改数据,然后放行。

配置断点的方式:在 Rules 面板新建规则,指定匹配的 URL 和方向(请求/响应),也可以右键某个会话 →Add RuleBreakpoint

遇到断点命中时,会话列表里那条请求会变成挂起状态。此时在 Inspector 里编辑请求参数或响应内容,改完后点击继续(Resume)按钮,请求/响应才会被放行。

我最常拿断点来做的实验是:把登录接口的响应里nickname改成一个超长字符串,看前端页面对异常展示会不会崩。这种“临时改一下”的场景用断点最合适,因为断点只影响当前这一次请求,不用像 AutoResponder 那样去配置规则和文件名。

5. 手机抓包:把移动端联调从“盲猜”变成“可观察”

5.1 手机怎么走 Fiddler Everywhere 的代理

移动端抓包是联调场景里绕不开的需求。App 里的网络请求肉眼看不到,出了问题只能靠日志,但如果能通过 Fiddler Everywhere 抓到完整请求,整个排障过程就透明多了。

手机和电脑连接同一个局域网之后,需要做两步:

  1. 在电脑上找到本机 IP(macOS 在“系统设置 → 网络”里看;Windows 在命令行输入ipconfig查看 IPv4 地址)。以192.168.1.100为例。
  2. 在手机的 WLAN 设置里,找到当前连接的 WiFi,修改代理为“手动”,服务器填电脑 IP(例如192.168.1.100),端口填8866

配置好后,手机上打开任意 App 或浏览器发起请求,Fiddler Everywhere 的会话列表里就会开始出现手机流量。前提是手机和电脑在同一局域网,且电脑防火墙没有拦截 8866 端口。如果第一步操作后手机网页完全打不开,优先检查电脑防火墙是否放行了 Fiddler Everywhere。

常见的一个坑是:公司 WiFi 开启了“AP 隔离”功能,设备之间互相不能访问,这种网络环境下手机代理大概率连不通。遇到这种情况不要纠结,换个热点或者用手机 USB 共享网络来调试。

5.2 手机证书安装的差异

手机通过代理接入后,会面临和一个关键问题:HTTPS 流量依然解不开,因为手机还没信任 Fiddler Everywhere 的根证书。证书下载地址和电脑一样:手机浏览器访问http://电脑IP:8866http://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 的基础操作理顺,快速上手这个调试利器。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询