1. Fiddler工作原理
![](https://img.haomeiwen.com/i19560005/1556e980787a89d7.png)
首先fiddler截获客户端浏览器发送给服务器的https请求, 此时还未建立握手。
第一步, fiddler向服务器发送请求进行握手, 获取到服务器的CA证书, 用根证书公钥进行解密, 验证服务器数据签名, 获取到服务器CA证书公钥。
第二步, fiddler伪造自己的CA证书, 冒充服务器证书传递给客户端浏览器, 客户端浏览器做跟fiddler一样的事。
第三步, 客户端浏览器生成https通信用的对称密钥, 用fiddler伪造的证书公钥加密后传递给服务器, 被fiddler截获。
第四步, fiddler将截获的密文用自己伪造证书的私钥解开, 获得https通信用的对称密钥。
第五步, fiddler将对称密钥用服务器证书公钥加密传递给服务器, 服务器用私钥解开后建立信任, 握手完成, 用对称密钥加密消息, 开始通信。
第六步, fiddler接收到服务器发送的密文, 用对称密钥解开, 获得服务器发送的明文。再次加密, 发送给客户端浏览器。
第七步, 客户端向服务器发送消息, 用对称密钥加密, 被fidller截获后, 解密获得明文。
2. Fiddler安装证书
![](https://img.haomeiwen.com/i19560005/c783a6780dbcbb24.png)
![](https://img.haomeiwen.com/i19560005/9e867cc31d2061d0.png)
![](https://img.haomeiwen.com/i19560005/a78334a793b6cf41.png)
Fiddler抓取到的每条http请求(每一条称为一个session),主要包含了请求的url,协议,状态码,body等信息,详细的字段含义如下图所示:
![](https://img.haomeiwen.com/i19560005/a7f8c4dcad53188f.png)
![](https://img.haomeiwen.com/i19560005/83700f0e5fae18b0.png)
![](https://img.haomeiwen.com/i19560005/80987b0772c60d27.png)
针对每条http请求的具体统计(例如发送/接受字节数,发送/接收时间,还有粗略统计世界各地访问该服务器所花费的时间)和数据包分析。
![](https://img.haomeiwen.com/i19560005/9d2741ecabfe281c.png)
inspector面板下,提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息:
![](https://img.haomeiwen.com/i19560005/2e291edc0d673efb.png)
composer面板下,则可以模拟向相应的服务器发送数据的过程
![](https://img.haomeiwen.com/i19560005/1517f7af213d8616.png)
Filter标签则可以设置Fiddler的过滤规则,来达到过滤http请求的目的。最简单如:过滤内网http请求而只抓取internet的http请求,或则过滤相应域名的http请求。Fiddler的过滤器非常强大,可以过滤特定http状态码的请求,可以过滤特定请求类型的http请求(如css请求,image请求,js请求等),可以过滤请求报文大于或则小于指定大小(byte)的请求
![](https://img.haomeiwen.com/i19560005/970d35f0811c0a3e.png)
![](https://img.haomeiwen.com/i19560005/8dbb4d76c714687f.png)
3. Fiddler设置断点并修改请求
1.为什么要打断点呢?
比如一个购买的金额输入框,输入框前端做了限制100-1000,那么我们测试的时候,需要测试小于100的情况下。很显然前端只能输入大于100的。这是我们可以先抓到接口,修改请求参数,绕过前端,传一个小于100的数,检查服务端的功能是否OK。
2.Fiddler可以修改以下请求
--Fiddler设置断点,可以修改HTTP请求头信息,如修改Cookie,User-Agent等
--可以修改请求数据,突破表单限制,提交任意数字,如充值最大100,可以修改成10000
--拦截响应数据,修改响应体,如修改服务端返回的页面数据
3.断点的两种方式
before response:这个是打在request请求的时候,未到达服务器之前
![](https://img.haomeiwen.com/i19560005/64bc3b8f27d35b3f.png)
after response:也就是服务器响应之后,在Fiddler将响应传回给客户端之前
![](https://img.haomeiwen.com/i19560005/18bcd2d48f4e5e67.png)
在菜单栏Rules-》Automatic BreakPoints的下拉菜单里选择设置断点的方式(Before Requests,After Responses),取消断点选择Disabled。这种设断点的方式是对所有url生效。
![](https://img.haomeiwen.com/i19560005/cc351fe9014f6aed.png)
用bpu命令对特定url设置断点,这种方式断点设在Before Requests。取消断点时只需要再执行bpu命令即可。
执行如下命令(如下图):
![](https://img.haomeiwen.com/i19560005/14ad5ab6b2f423cd.png)
4.以百度首页为例修改Requests之前的数据
在Fiddler命令行输入区输入“bpu”回车执行清掉原有的断点。
输入“bpu https://www.baidu.com/”回车执行,接下来就会中断URL中包含此地址的请求。
在浏览器打开https://www.baidu.com/首页,输入”fiddler”。
![](https://img.haomeiwen.com/i19560005/f985032e32790f9b.png)
点击会话列表中被中断的会话,依次进入Inspectors–>WebForms。此时请求并未发出,wd参数即为查询关键字,我们修改为“ttttt”,然后点击“Break on Response”按钮(这里请求只是达到了fidder,并没有到达浏览器),最后点击run to completion(请求到达浏览器)。
![](https://img.haomeiwen.com/i19560005/291c14688fb0e620.png)
![](https://img.haomeiwen.com/i19560005/c07814218bb644a3.png)
网友评论