Fiddler教程--常用功能介绍--抓包,弱网,断点,mock等
--------------建议收藏,多去实践一下。。。
我把文章分两部分简单来讲,第一部分讲常用的设置和使用,第二部分对常用按钮进行介绍,总要认识,不能总糊里糊涂。
第一部分: 常用设置和使用
1.1 HTTPS抓包设置。
下载安装fiddler后,首次使用,默认只抓HTTP协议; 抓https协议,需要在tools > fiddler options > HTTPS 勾选capture https connect ,decrypt https traffic,然后按照指示安装信任证书;
1.2 过滤或标记自己的请求。
Filters 、或者选中请求右键mark 、或者左下角点出capturing 输入栏输入host; 过滤或标记自己想看的请求,排除干扰;
Filters的用法,勾选use filters, hosts下方选择显示模式,文本框内输入host, 多的话’;’分隔,下面其他选项根据需求勾选,最后actions > run filters now, 来使规则生效。
1.3 手机抓包
1.3.1. 打开允许远程连接,设置端口 tools options connections;
1.3.2. 手机没配置要先配置,首先是修改网络,设置代理手动,输入电脑的IP和端口,保存;首次连接一般需要下载证书,浏览器输入chls.pro/ssl,下载并安装证书。尽量让我们的手机和电脑处在同一个WiFi下(同一个网段), 证书装好,一部分手机需手动去添加信任,别忘了。
1.3.3. 证书装好,等待电脑弹出弹框,allow连接。然后就好了。不行的话手机wifi重新开关设置一下。
1.4 弱网测试,先勾选rules 》 performance 》 simulate modem speed
然后CTRL+R ; fiddlerscript里搜300或m_SimulateModem,在m_SimulateModem里更改上传和下载速度,单位毫秒/kb.
上面的方式只是模拟一种稳定的网速,但实际情况中,网速是不稳定的,如果需要模拟这种情况,只需要修改代码如下:
static function randInt(min, max)
{
return Math.round(Math.random()*(max-min)+min);
}
if (m_SimulateModem)
{
// Delay sends by 300ms per KB uploaded.oSession["request-trickle-delay"] = ""+randInt(1,2000);
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = ""+randInt(1,2000);}
1.5 断点。
1.5.1 rules > aotomatic breakpoints > before requests or after response; 根据需要选择,这种情况是对所有请求打断点,请求中断后,如果不是自己想要的,可以点击go放行;找到自己想要的请求断点,点击,右侧详情页中可对请求或者响应进行修改,比如在inspectors>webform里对参数和值进行修改;修改后点击run to complete跑完请求。
1.5.2 在左下角的命令行里,可以通过bpu+单一host的方式对单个url进行断点。
1.5.3 简单说下,fiddler作为一个代理,位于服务器和前端之间,可以抓服务器和前端之间的请求和响应。before requests 就是在请求发送到服务器之前,对请求断点和修改,然后将修改后的请求发送到服务器;after response,就是将服务器返回给前端的响应拦截,然后修改后, run to complete将你修改后的响应返回给前端。
1.6 autoresponder,就是你常听到的mock返回。
可以设定简单的规则,比如抓到某个固定请求时,返回我们设置mock的数据。
1.6.1 你想mock的请求,你把他的响应copy到txt/.json文件里,对响应进行更改后保存。如果不是json文件,或不确定,可以尝试把请求头和格式一起考进去。
1.6.2 设定规则,比如你想mock的特定请求
1.6.3 设置返回,在最下面的输入框中选择自己的mock文件。Save,理论上下次请求就会返回你想要的mock数据了。
1.7 composer ,你可以简单理解成,篡改数据重新发送请求,或者用fiddler的composer进行简单的接口测试。
直接拖拽,修改后,excute执行。
第二部分:Fiddler中常用按钮标签及意义
——————————————————————————————————————
1. 主界面包括几大块:菜单栏、session栏、右上的request栏和右下的response栏。
1.1 左上的session栏,就是会话栏,左上url上面的列标签。
有11列。每一列的意思都比较好懂。
http request的顺序,从1开始。
result:http响应状态码
protocol:请求使用的协议(如HTTP/HTTPS/FTP)
host:请求地址的域名
url:请求服务器的路径和文件名,包括GET参数
body:请求的大小,以byte为单位
caching:请求的缓存过期时间或缓存控制header等值
content-type:请求响应的类型
process:发出此请求的windows进程及进程ID
comments:用户通过脚本或者右键菜单给此session增加的备注
custom:用户通过脚本设置的自定义值
——————————————————————————————————————
1.2 右上的request栏这一栏包括statistics,inspector,autoresponder,composer,log,filters;
1.2.1 statistics
这一栏主要是耗时和流量大小统计
统计选项卡的一些信息含义如下解释:
Request Count: 选中的session数;
Unique Hosts: 流量流向的独立目标主机数。如果所有选中的流量都发送到相同的服务器上,则不会显示该字段。
Bytes sent: HTTP请求头和请求体中向外发送的字节总数。后面括号中分别给出了头和body各自的字节数。
Bytes received: HTTP请求头和请求体中接收到的所有字节数。在全部计数后面的括号中给出了请求头和请求体各自的字节数。
Requests started at: Fiddler接收到的第一个请求的第一个字节的时间点。
Responses completed at: Fiddler发送到客户端的最后一个响应的最后一个字节的时间点。
Sequence(clock) duration: 第一个请求开始到最后一个响应结束之间的 “时钟时间”。
Aggregate session duration: 所有选中的session从请求到响应之间的时间的和。
DNS Lookup time: 所有选中的session解析DNS所花费的时间的总和。
TCP/IP Connect duration: 所有选中session建立TCP/IP连接所花费的时间总和。
HTTPS Handshake duration: 所有选中session在HTTPS握手上所花费的时间总和。
Response Codes: 选中session中各个HTTP响应码的计数。
Response Bytes by content-type: 选中session中响应的各个Content-Type的字节数。
Estimated Performance: 选中的流量在不同语种(local)地区和连接方式下所需时间的初步估计。
1.2.2 inspector
可以详细查看请求的 Headers、Cookies,并且可以对请求体格式化,以 WebForms、JSON、Raw 等方式查看。具体每种方式的区别可以自己感受一下。一般来说,想要查看请求的参数的话,WebForms 的方式就挺直观的。点击Raw就能看到原始的请求头部信息。
1.2.3 autoresponder
这个地方可以模拟服务端返回值。顾名思义,当浏览器发出的请求满足你设置的匹配条件的话,Fiddler 就自动响应了,并不需要走网络。
1.2.4 composer
模拟向服务端发送请求,用于测试服务端接口是否正确。
——————————————————————————————————————
1.3
response栏
1.3.1 Headers:响应头。比如 Content-Type、Access-Control-Allow-Origin 等这些属性都在这个 tab 展示。
1.3.2 Cookies:查看由服务端带回来的 cookie。
1.3.3 JSON:将返回的内容以 JSON 格式显示。这个很有用,特别是当服务端返回的内容本身就是 JSON 的时候。
1.3.4 RAW:查看返回的原始数据
---------------------------------------------------------------------------------------------------------
1.4 QuickExec
1.4.1 它位于Fiddler左下角,有个 QuickExec 的提示,命令行模式。
1.4.2 输入help会带你到命令行的帮助页,上面列举了所有可用的命令。
下面列举一些常用的吧:
?sometext:高亮包含匹配文字的会话。比如 ?/foo 就可以把所有包含 /foo 的请求都找出来。
其他的高亮功能还有:=(匹配请求方法或状态码)、@(匹配host)、select(匹配MIME)。
clear:清空会话面板。
keeponly:清空会话面板,仅保留指定的MIME类型。比如 keeponly json 就能筛选出所有返回 json 的会话。
go:放行所有的断点。
1.4.3 特意说下设置断点
bpu:请求时断点,比如 bpu /foo
bpafter:响应时断点,比如 bpafter /foo
bps:拦截状态码,比如 bps 404
bpm:拦截方法,比如 bpm post
用不带参数的命令可以清除断点,比如 bpafter 可以清除所有的响应断点。
url 的匹配方式是判断“字符串是否包含”,比如 bpu /foo 会拦截所有包含 /foo 的请求。
以上命令不带参数时,相当于去掉断点。