ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Fiddler Everywhere 实战:HTTPS解密、过滤与手机抓包全指南

Fiddler Everywhere 实战:HTTPS解密、过滤与手机抓包全指南 说到抓包工具很多人的第一反应是浏览器开发者工具里的 Network 面板。但真到了前后端联调、App 接口排查、线上问题复现这些场景独立抓包工具的价值立刻就体现出来了。我过去几年在 Windows 上一直用 Fiddler Classic后来换了 Mac 办公才发现 Fiddler Everywhere 这个跨平台版本才是更适合日常使用的选择——它保留了经典版抓包、断点、重写响应这些核心能力又把界面和交互做了现代化重构Windows、macOS、Linux 一套操作逻辑。这篇文章写给刚接触 Fiddler Everywhere 的同学也写给从 Classic 迁移过来的人。我会按照自己实际使用频率最高的几条主线来写HTTPS 解密、过滤定位、改包重放、手机抓包每一步都附上操作过程和踩坑经验。Fiddler Everywhere 不是个多难的工具但卡在第一关的人确实不少大部分问题都出在没理解它的代理和证书机制。1. 装之前先搞清楚Fiddler Everywhere 和 Classic 到底差在哪1.1 为什么我从 Classic 换到了 EverywhereFiddler 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 下用 CtrlShiftDelete 清一下缓存或者干脆用无痕窗口测试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 抓到完整请求整个排障过程就透明多了。手机和电脑连接同一个局域网之后需要做两步在电脑上找到本机 IPmacOS 在“系统设置 → 网络”里看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 的基础操作理顺快速上手这个调试利器。
返回列表