- Published on
Using Fiddler to Capture HTTP(S) Requests
Fiddler是一款适用于Windows 和 Linux的web调试代理软件。一般用来调试分析App/Browser应用内的HTTP(S)请求。
从这开始
打开Fiddler软件,将会自动设置你系统的代理为localhost:8888,这是Fiddler的默认端口。然后点击File --> Capture traffic 开始进行抓包。

查看request 和 response
点击左侧session列表中的某个请求,然后在右侧的操作区中点击Inspectors。上面为request的信息,下面为response的信息。

查看gzip的内容
对于响应头设置了gzip的请求,可以在response区域的Transformer 中切换HTTP compression 为none

捕获HTTPS的内容
在顶部菜单栏的Tool --> options 中,选择HTTPS,勾选以下两个选项

然后Fiddler会在你的机器上安装CA证书,系统会弹出一个确认框,同意安装就可以了。然后重启Fiddler, 就可以抓包HTTPS的内容了。
使用Fiddler做代理转发
在右侧的菜单区域,有一个AutoResponser, 我们可以针对特定的请求配置特定的响应规则。

路径规则有三种写法:
string literals
http://www.**example**.com/Path1/ match http://www.something.com/Path1/query=Example
EXACT
EXACT:http://www.example.com/path matche http://www.example.com/path
REGEX
regex:.+.jpg.matche http://www.example.com/Path1/query=foo.jpg http://www.example.com/Path1/query=example.jpg
session 图标

手机端抓包
- 确保手机端和PC在同一个局域网内。
- 手机端访问PC 局域网ip的8888端口,下载证书。
- 在手机上安装证书后,设置你的wifi 代理。服务器主机名为PC 端的局域网ip,端口号为Fiddler软件的监听端口,一般默认是8888。
- 勾选Fiddler Connections中的 允许远程连接
- 重启Fiddler, 就可以抓包手机端的请求了。
session请求中的Tunnel to
在session列表中,经常有一些请求的host 为 Tunnel to。

首先需要明确的是为什么会有看起来这么奇怪的请求。 当系统或者浏览器使用了代理的时候,对于HTTPS请求,将会使用Connect方法连接代理服务器,告知该请求的目标机器和端口。一般来说,这个端口都是目标服务器的SSL端口,即443。 当代理服务器在指定的目标主机地址和端口之间建立了TCP连接的时候,就会响应200给Connect方法。之后,代理服务器只是在转发往来于浏览器和目标服务器之间的数据。 之所以需要这样做,是因为HTTPS将目标主机等头部信息都进行了加密,代理服务器无法知道请求的目标地址,所以浏览器在发送HTTPS之前,需要用Conenct方法通知代理服务器应该连接的地址。
一般来说Connect 方法只是确保代理服务器和目标服务器已经建立了TCP连接, 而不包含请求的具体信息。因此我们可以将其在session列表中隐藏掉,保证清爽。
Rules --> Hide Connects