Fiddler 安装并抓取HTTPS请求
众所周知 Fiddler 是一个非常实用的抓包工具(主要是对于Http请求)而且有很多的扩展功能可以去官网下载,我们在开发中,难免需要抓包工具来查看接口数据 或者 测试接口的安全性, 如未签名而进行值的修改,下面将介绍它的安装以及配置 证书 来抓取Https加密信息。
做接口开发时,最常见的诉求就是"请求到底发出去没有、参数对不对、服务端返回了什么"。前端 F12 只能看浏览器自己发的请求,App、桌面程序、后台服务之间的调用它看不到;而日志又往往只记了业务字段,漏掉了真正想核对的原始报文。抓包工具正好补上这一段:它以代理的身份坐在客户端和服务器中间,把每一次请求、响应完整地摊在你面前。Fiddler 就是这类工具里配置成本最低、对 HTTP 支持最顺手的一个。
麻烦的地方在于 HTTPS。现在的接口基本都走 HTTPS,报文全程加密,代理即便截到了流量也只是一堆密文。想看到明文,就得让 Fiddler 用"中间人"的方式介入 TLS 握手——这也是本文要展开讲清楚的部分。
下载与安装
Fiddler 官方网址:
Fiddler | Web Debugging Proxy and Troubleshooting Solutions
选择对应版本进行下载。个人调试选免费的 Fiddler Classic 就够用,无需注册企业版。

安装完成后运行:

此时我们不做任何配置的情况下,已经可以直接抓包 Http 请求,(因为Http都是明文传输,当然也需要请求走系统代理火狐游览器需要设置"手工配置代理"),但是我们如果项目中使用了 Https 请求,由于Https 请求的安全性,所有数据都是加密的,那么我们怎么抓取其中的信息呢?
这里补充一句代理的机制:Fiddler 启动时会把自己注册成系统代理,默认监听在 127.0.0.1:8888。走系统代理的程序(大多数 Windows 应用、Chrome、Edge)会自动把流量转给它。而 Firefox 有自己独立的代理设置,不吃系统代理,所以需要在其网络设置里"手工配置代理",指向同一个地址端口:
HTTP 代理: 127.0.0.1
端口: 8888
抓取 HTTPS 的原理
首先我们要配置一下 Fiddler 的证书,为什么要配置这个玩意呢? 有人会问, 那么我们先来简单看一下原理:
1、Fiddler 拦截到我们自己客户端的 Https 请求。
2、把拦截到的请求转发给请求服务器。
3、请求服务器响应,并生成证书文件发送给我们客户端,Fiddler 拦截,获取到请求服务器响应的证书文件,并把我们配置的伪造证书发送给我们自己的客户端。
4、客户端接受到伪造证书,再次请求数据。数据已经根据伪造证书加密。
5、Fiddler 拦截获取其中所有请求信息,再根据3,步骤中拦截到的正真证书文件 进行信息加密,发送给请求服务器。
总的来说, Fiddler 起到了中间转发数据的角色。所以可以获取到我们客户端发送以及服务器响应的数据信息。
说白了,这就是一次"善意的中间人攻击"。HTTPS 的安全依赖于证书信任链:客户端拿到服务器证书后,会去校验它是不是由自己信任的根证书机构签发的。Fiddler 之所以能替换证书还不被客户端拒绝,前提是你把它的根证书装进了系统的"受信任的根证书颁发机构"里——一旦装了,Fiddler 现签的伪造证书就通过了校验,客户端才肯用它加密后续数据,明文也就落到了 Fiddler 手里。这也解释了下面第 2 步"信任根证书"为什么不可省略。
证书的配置
Fiddler 证书的配置:
1、Tools -> Options -> HTTPS
点击 Decrypt HTTPS traffic 选中 from all processes
这一步是打开 HTTPS 解密的总开关。from all processes 表示解密所有进程的 HTTPS 流量;如果只想抓某个程序,可以改成 from browsers only 或用后面的进程过滤,避免无关流量把列表刷满。

2、Actions -> Trust Root Certificate
这一步就是前面原理里说的关键动作:把 Fiddler 的根证书安装到系统信任库。


3、点击yes后证书配置成功,开启抓包即可查看到Https请求内容信息
弹窗点 Yes 确认信任,证书即安装完成。此时回到主界面,之前显示为加密乱码的 HTTPS 会话就能看到明文的请求头、请求体和响应体了。

踩坑与注意
- 抓不到某个 App 的包:多半是它没走系统代理,或者做了证书校验绕过。Android 7 以后应用默认不信任用户安装的证书,需要 App 本身配置或用其它手段,Fiddler 单靠装证书抓不到。
- 客户端做了 SSL Pinning(证书固定):这类应用把服务器证书指纹写死在代码里,看到 Fiddler 换的证书会直接拒绝连接,普通配置无解。
- Firefox 抓不到:确认它的独立代理指向了
127.0.0.1:8888,别忘了这一步。
Fiddler 的根证书装进系统后,等于给这台机器开了一个可解密所有 HTTPS 的口子。调试结束记得在 Tools -> Options -> HTTPS 里点 Remove Interception Certificates,或到系统证书管理里删掉 DO_NOT_TRUST_FiddlerRoot,别把它长期留在开发机上。
小结
抓 HTTP 明文几乎零配置,抓 HTTPS 的核心只有两件事:打开 Decrypt HTTPS traffic,以及信任 Fiddler 的根证书。理解了"中间人 + 伪造证书"这条主线,遇到抓不到包时也能大致判断卡在了哪一环——是没走代理、证书没信任,还是对方做了 Pinning。
评论 / COMMENTS