fiddle学习笔录
本文主要记录fiddle常用操作
如何知道HTTP请求是POST方法还是GET方法
双击HTTP请求,在右侧切换到Inspectors->Raw,如下图所示:


移动端抓包
- android 手机进行wifi连接,确保手机和PC在一个网络中(手机连接PC发射出去的wifi热点)。
- 之后修改该手机wifi网络设置,在代理区域IP设置成PC端的IP地址,端口输入如下框中的port,即可进行拦截抓包

Fiddler抓取HTTPS
首先对Fiddler进行设置:打开工具栏->Tools->Fiddler Options->HTTPS,安装相应的证书DO_NOT_TRUST_FiddlerRoot

然后就是手机上安装证书。打开手机浏览器,在浏览器地址输入代理服务器IP和端口,会看到一个Fiddler提供的页面。接着点击最下方的FiddlerRoot certificate,这时候点击确定安装就可以下载Fiddler的证书了。

过滤抓包
- 打开fiddler,找到Filters选项并点击打开。
- 打开后,我们选择启用。Use Filters 在这个选项上打勾。
- 打开后我们可以看到下面的Host模式,下拉框按如图选择。表示我们只在Fiddler上显示以下域名的数据请求。
- 然后我们再Hosts文本区域,输入我们需要显示的域名,用英文分号分割多个域名。
- 填好我们的域名后,我们点击Actions选项并选择Run Filterset Now。现在就已经设置好了。
- 以后抓包的时候,就之后显示自己所关心的接口了。

ps:
通过host来进行过滤。以下是几个选项的解释:
No Zone Filter :不通过空间进行过滤,这个是分内网跟外网的
show only Intranet Hosts: 内网
show only internet Hosts:外网
No Host Filter :不通过主机名进行过滤
Hide the following Hosts:隐藏下边输入的主机名的会话
show only the following Hosts:显示下边输入的主机名的会话
flag the following Hosts:标志下边输入的要过来的主机名的会话;
抓包断点(个人觉得在做接口测试的时候用比较合适)
-
打断点修改Requests
打开Fiddler,Rules->Automatic Breakpoints ->点击 Before Requests ,这样所有的请求在发送请求之前就被阻止了

接着我们的打断点修改Requests,修改请求体当然也就是修改Raw的内容了,切换到Raw,就可以修改内容了:

-
打断点修改response
若是修改响应的数据,应该在after response 打断点,故打断点的步骤是,Rules->Automatic Breakpoints -> After Responses,这样响应结果就被阻止

右下角的页签,切换到Transformer
做如下的操作:
- 取消 Chunked Transfer-Encoding 的选择,该项默认是被选中的。
- HTTP Compression 选择 None
怎么解释这些操作的意思呢?
- 官方是这样解释的:
为了提高性能,响应体是有被压缩或者采用chunked(块)的方式传输,但是如果你要修改响应体,则希望是不压缩不编码.
接着我们的打断点修改Response,修改响应体当然也就是修改Raw的内容了,切换到Raw,就可以修改内容了:
-
通过命令对特定的请求设置断点
首先我们需要命令行,命令行位于状态栏的上方,如下图所示:

我们先来了解一些简单的命令:
- help:会带你到命令行的帮助页,
- ?sometext:高亮包含匹配文字的会话。比如 ?/sdk 就可以把url中所有包含 /sdk 的请求都找出来。
- = 匹配请求方法或状态码 =302 高亮302跳转
- @ 匹配host
- go:放行所有的断点
有关断点的命令:
断点即 breakpoint,所有跟断点相关的都是以 bp 为前缀。
- bpu:请求时断点,比如 bpu /sdk
- bpafter:响应时断点,比如 bpafter /sdk
- bps:拦截状态码,比如 bps 404
- bpm:拦截方法,比如 bpm post
用不带参数的命令可以清除断点,比如 bpafter 可以清除所有的响应断点。
模拟弱网测试
打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds,之后,你会发现网络变得超级慢。

我们还需要搞明白,Fiddler模拟网路速度的原理。
- Rules—>Cutomize Rules
- 打开CustomRules.js 文档
-
在文件中搜索关键字,m_SimulateModem
if (m_SimulateModem) { // Delay sends by 300ms per KB uploaded. oSession["request-trickle-delay"] = "300"; // Delay receives by 150ms per KB downloaded. oSession["response-trickle-delay"] = "150"; }
- 首先来判断m_SimulateModem是否为true,也就是是否设置了弱网模式。
- 如果为弱网模式。则分析代码
- oSession[“request-trickle-delay”] = “300”; 注释的也很明白,Delay sends by 300ms per KB uploaded.上传1KB需要300ms,转化一下上传速度:1Kb/0.3s = 10/3(KB/s)
- 如果你想设置上传的速度为50KB/s,你则需要设置Delay 时间为 20ms
- 同样的方法,也可以限制下载的速度,调整oSession[“response-trickle-delay”]="150"即可
本地文件替换服务器文件(其实我看了之后觉得这节没什么实际意义)
需求:用一个本地的文件替换一个接口的返回数据。
步骤:
选择接口,右键,save -> response -> response Body ,保存(例如:A.txt)响应体。

选择接口,在右上角选择AutoResponder页签,勾选Enable rules、Unmatched requests passthrough 两个选项,点击Add rule 按钮,在下方填写替换的规则。
第一行填写要替换的接口地址,可以写正则表达式进行模糊匹配,也可直接写接口的地址进行完全匹配。
第二行填写要替换的本地文件的地址(A.txt),当然点击下拉框,也有其他的选项供我们选择, 比如404,502等等status code。
编辑好之后,点击保存即可。这样下次再捕捉到该接口时,请求回来的数据就是本地文件中的内容了。

AutoResponder功能使用的小技巧(和上节功能一样)
- 选中想要拦截的请求
- 然后在 Request 面板选择 AutoResponder
- 再选择 “Add Rule”
- 在最下面的下拉框选择 “Create New Response…”
- 然后 “Save”
-
会弹出一个对话框,跟 Response 面板的布局一样,在上面可以填写编辑返回的数据内容。


深入研究AutoResponder
Enable rules:控制是否激活AutoResponder选项卡,如果没有选中该选项,选项卡上的其他选项就不可选。也就是说,不勾选此项,AutoResponder是不起作用的。
Unmatched requests passthrough:如果选中该选项,不匹配的请求会正常发送到服务器,如果没有选中该选项,Fiddler会为所有和该规则完全不匹配的HTTP请求生成HTTP/404 Not Found响应。
Enable Latency:控制匹配某个规则的请求时立即执行,还是延迟Latency字段中所指定的毫秒数。如果没有选中该选项,Latency字段就不会显示,使用这个选项可以更准确地模拟现实中的服务器响应,取消该选项可以提升性能。

点击右键选择set latency…… 设置响应的延迟时间。如下图所示,延迟设置1000ms = 1s。

Fiddler中提供的编码小工具TextWizard
点击TextWizard,当鼠标放上去时,有解释:launch the textwizard to encode/decode text ,顾名思义:编码/解码文本的

弹出TextWizard窗体,在1区域填写要加码或者解码的文本,在Transform选中选择要转换的方式,就会在区域2中显示结果,本图的例子是对 https://www.baidu.com 进行urlencode 加密

修改host地址(我觉得这个可以和过滤一起用)
首先来打开编辑CustomRules.js文档,在OnBeforeRequest函数中添加如下代码,保存文件,重启Fiddler。
if (oSession.host.toLowerCase()== 'dispatcher.360in.com') { oSession.host='dispatchertest.camera360.com'; oSession["ui-color"] = "orange"; }
fiddle模拟post请求(其实就是接口测试)
打开Fiddler工具,在右侧点击“composer”的选项,在parsed中进行根据http发送的请求进行选择,我们是模拟post请求,故选择post,添加post的url地址,以及选择http协议的版本,填写post请求的header和body,最后点击 Execute,就可以发送post请求,在左侧可以查看到发送的请求记录。双击该请求,既可以查看详细的请求数据和返回结果。

需要根据实际情况选择不同的Content-Type。

post请求的header是这样的:
User-Agent: Fiddler Content-Type: application/x-www-form-urlencoded Host: localhost Content-Length: 34
那么在body里这样写:
city=“ZhengZhou”& name=”zwf”
如果要发送json格式的数据,则header这样写:
User-Agent: Fiddler Content-Type: application/json Host: localhost Content-Length: 34
body中这样写:
{ "city": "ZhengZhou", "name": "zwf" }
fiddle模拟get请求(其实就是接口测试)
打开Fiddler工具,在右侧点击“composer”的选项,在parsed中选择get请求,之后填写get的url地址及相关的参数,再选择http协议的版本,最后点击execute按钮。

Composer功能使用的小技巧(通过该方法可以简化接口测试)
- 打开Composer
-
从左侧会话列表拖一个会话过来,这样就有该会话的详细信息了,在此基础上进行调整修改


深入研究Composer

浙公网安备 33010602011771号