3、Fiddler入门:安装、HTTPS解密与断点调试

Fiddler 是我日常抓包用得最多的工具,没有之一。它轻量、免费,而且能干的活特别多。今天我就带你把它装好、配好,再解锁几个核心技能——HTTPS 解密和断点修改请求。这些搞定了,后面排错才能顺手。

本章核心脉络:安装配置 → HTTPS 证书信任 → 断点拦截 → 请求修改。每一步都是实战基础,别跳。

Fiddler 入门核心知识体系 Fiddler 抓包引擎 安装与代理配置 HTTPS 证书解密 断点拦截规则 请求/响应修改 系统代理 端口 8888 根证书安装 bpu / bpafter Inspectors 编辑 AutoResponder 掌握这四块,Fiddler 基本就入门了

3.1 安装与基础配置

去 telerik.com/fiddler 下载 Fiddler Classic,免费版就够用。安装过程一路 Next 就行,没什么坑。装完后第一次启动,它会自动注册系统代理——你打开浏览器随便访问一个网站,Fiddler 里应该立刻出现流量。

我个人习惯先把端口确认一下。点 Tools → Options → Connections,默认端口是 8888。如果你本地有其他服务占用了这个端口,改成 8889 或 9090 都行。改完记得重启 Fiddler。

小技巧:Fiddler 启动后,右下角会有一个「Capturing」开关。平时不用抓包时可以关掉,避免流量干扰。我经常开着抓一整天,结果发现全是后台心跳包……

还有一个容易被忽略的设置:Tools → Options → HTTPS 里,勾选「Capture HTTPS CONNECTs」和「Decrypt HTTPS traffic」。这是解密 HTTPS 的前提,后面细说。

3.2 HTTPS 解密设置

现在大部分网站都强制 HTTPS 了。如果你不配解密,Fiddler 里看到的全是加密乱码,根本没法排错。说白了,Fiddler 做的是中间人代理——它生成一个根证书,你的浏览器信任它,Fiddler 就能解密流量。

操作步骤很简单:

  1. 打开 Tools → Options → HTTPS
  2. 勾选「Decrypt HTTPS traffic」
  3. 弹窗问你是否信任 Fiddler 根证书,点「Yes」
  4. 如果弹窗问是否允许修改受保护存储,也点「Yes」

证书装好后,你可以在 Fiddler 右上角看到一个小锁图标,点进去可以查看证书详情。我曾经遇到过一个坑:公司电脑有 IT 策略锁死了证书信任,Fiddler 的根证书装不进去。解决办法是手动导出证书,通过组策略或双击安装到「受信任的根证书颁发机构」。

注意:解密 HTTPS 只用于你自己的调试环境。生产环境或他人设备上不要随意开启,这是安全红线。调试完建议关闭解密,或者退出 Fiddler 后代理自动恢复。

解密后,Fiddler 会显示每个请求的「隧道」和实际内容。你会看到类似这样的结构:

CONNECT www.baidu.com:443  →  隧道建立
GET /index.html             →  解密后的实际请求
HTTP/1.1 200 OK             →  解密后的响应

如果解密后某些请求还是显示「Tunnel To」,说明 Fiddler 没解密它。检查一下是不是漏了勾选「Decrypt HTTPS traffic」,或者那个请求走了非标准端口。

3.3 断点调试:拦截请求与响应

断点调试是 Fiddler 最爽的功能之一。你可以让请求停在半路,手动修改它,再放行。这在模拟异常场景、测试边界条件时特别好用。

Fiddler 提供了两种断点方式:

命令 作用 示例
bpu 拦截匹配的请求(Before Request) bpu /api/ 拦截所有包含 /api/ 的请求
bpafter 拦截匹配的响应(After Response) bpafter .jpg 拦截所有图片响应
bpu(空) 清除所有请求断点 直接输入 bpu 回车
bpafter(空) 清除所有响应断点 直接输入 bpafter 回车

怎么用?在 Fiddler 左下角的黑色命令行区域输入命令就行。比如我想拦截所有发往 /login 的请求:

bpu /login

然后刷新页面,Fiddler 会把这个请求标红,并且停在「请求已拦截」状态。这时候你可以双击它,在右侧 Inspectors 面板里修改请求头、请求体,甚至 URL。改完后点「Run to Completion」放行。

实战场景:测试登录接口时,我想看看如果密码字段传空字符串会怎样。用 bpu /login 拦截请求,手动把 password 参数改成空,再放行。后端返回了什么错误码,一目了然。

响应拦截同理。用 bpafter /api/ 可以拦截所有 API 的响应,在返回给浏览器之前修改状态码、响应体。比如把 200 改成 500,看看前端会不会优雅降级。

3.4 请求修改:不止断点

断点适合临时改一次。如果你需要反复修改同一个请求,用 AutoResponder 更高效。它允许你设置规则,让 Fiddler 自动返回你指定的响应内容,而不需要每次都手动拦截。

操作路径:右侧面板切换到 AutoResponder 标签,勾选「Enable rules」和「Unmatched requests passthrough」。然后添加规则:

  1. 在左侧会话列表里拖一个请求到 AutoResponder 面板
  2. Fiddler 会自动生成匹配规则(比如 regex:(?ins).*login.*)
  3. 在下方选择「Create New Response」或「Find a file...」
  4. 编辑响应内容,点 Save

举个例子:我在调试一个支付页面,每次下单都要真的扣钱。用 AutoResponder 把下单接口的响应改成「支付成功」的 JSON,前端就能正常走完流程,而实际没扣钱。嗯,这个技巧我用了好多次。

另一个常用功能:Composer 面板。你可以手动构造一个 HTTP 请求,指定方法、URL、头、体,然后直接发送。适合测试接口或者重放某个请求。我经常用它来复现线上问题——把出错的请求复制到 Composer,改几个参数再发一次,看是不是必现。

最后提一句 Filters。当你抓包流量特别多时,可以在左侧 Filters 标签里设置只显示特定域名、特定状态码、特定类型的请求。比如我只想看 api.example.com 的 4xx 错误,勾选对应条件就行。这能帮你从几百条请求里快速定位目标。

避坑提醒:修改请求或响应后,记得及时清除断点规则(输入空的 bpu 和 bpafter)。不然你可能会发现所有请求都被拦截了,还以为网络坏了。我曾经有一次忘了关 bpu,排查了半小时才发现……

好了,Fiddler 的安装、HTTPS 解密、断点和修改就这些。这些操作你多练几次,形成肌肉记忆,后面抓包排错才能快起来。