一、内置命令
1、Fiddler 将每个 HTTP 请求都作为一个会话(session)保留,你可以在黑框中输入 Fiddler 的内置命令来轻松地管理这些会话。
a、通过快捷键alt+q可以快速定位到内置命令输入框。b、当焦点在命令输入框中时,快捷键Ctrl + i 可以快速插入当前选中会话的 URL
2、内置命令介绍
a、? :问号(?)后边跟一个字符串,Fiddler 将所有会话中存在该字符串匹配的全部高亮显示
b、>和< :大于号(>)和小于号(<)后边跟一个数值,表示高亮所有尺寸大于或小于该数值的会话。
c、= :等于号(=)后边可以接 HTTP 状态码或 HTTP 方法,比如 =200 表示高亮所有正常响应的会话。=post表示所有post请求
d、@ :@ 后边跟的是 Host,比如 @www.baidu.com
3、设置断点相关命令(bpafter、bps、bpv、bpm 和 bpu)
a、bpafter: bpafter 后边跟一个字符串,表示中断所有包含该字符串的会话。
b、bps : bps 后边跟的是 HTTP 状态码,表示中断所有为该状态码的会话。
c、bpv 或 bpm : bpv 或 bpm 后边跟的是 HTTP 方法,表示中断所有为该方法的会话。
d、bpu : 跟bpafter 类似,区别:bpu 是在发起请求时中断,而 bpafter 是在收到响应后中断。
4、其他命令
a、cls或clear :清楚当前所有会话
b、dump: 将所有的会话打包成.zip 压缩包的形式保存到 C 盘根目录下。
c、g或go :放行所有中断下来的会话。
d、hide :将fiddler隐藏;show:将fiddler恢复
e、urlreplace 后边跟两个字符串,表示替换 URL 中的字符串。比如 urlreplace baidu fishc 表示将所有 URL 的 baidu 替换成 fishc。
f、start:fiddler开始工作;stop:fiddler停止工作;quit:关闭fiddler
g、select 后边跟响应的类型(Content-Type),表示选中所有匹配的会话。比如希望Fiddler 选中所有的图片,可以使用 select image;
h、跟select 类似,不过 allbut 和 keeponly 会将所有无关的会话删除。
i、!dns:后边跟一个域名,执行DNS 查找并在右边的 LOG 栏打印结果
j、!listen: 设置其他监听的端口,默认是8888
二、断点
1、为什么要打断点
比如一个输入框,输入框前端做了限制100-1000,那么我们测试的时候,需要测试小于100的情况下。很显然前端只能输入大于100的。这是我们可以先抓到接口,修改请求参数,绕过前端,传一个小于100的数,检查服务端的功能是否OK。也就是说接口测试其实是不需要管前端的,主要测后端的功能。
2、打断点可篡改的请求类型
1)、--Fiddler设置断点,可以修改HTTP请求头信息,如修改Cookie,User-Agent等
2)、--可以修改请求数据,突破表单限制,检查接口的处理情况,这种适用于不方便直接调接口,其不关心页面,只看接口处理是否正常,返回的数据对不对。(绕过前端)
比如:注册页面 用户名限制的字符长度是2-20 ,把字符加到21以上,看效果,根据前端页面的预期结果是提示用户名超长了,而实际结果是注册成功了。于是去数据库查了下表结构,发现用户名字段的长度是50,所以重新注册下,字符超过50,看接口返回的信息,提示“信息输入有误”,OK,测试通过,说明接口在这块做了保护。
3)、--拦截响应数据,修改响应体,如修改服务端返回的页面数据(关心页面处理情况)
比如:页面显示一个数字,我们想要测试数字的长度,此时可以通过篡改数据使服务端返回不同的结果来看页面显示是否正常,修改页面响应结果(拦截响应数据,修改响应实体)
3、断点的两种方式(图示)
1)、before response:这个是打在request请求的时候,未到达服务器之前
2)、after response:也就是服务器响应之后,在Fiddler将响应传回给客户端之前。
4、全局断点与单个断点
1)、全局断点:中断fiddler捕获的所有请求,a、先设置下,点击rules-> automatic breakpoint ->before requests
b、选中before requests选项后,打开页面:https://www.cnblogs.com/wuhuacong/,看到如下T的标识,说明断点成功
c、打断点后,请求都发不出去,点击run to completion 就可以继续请求了
d、找到需要修改的接口,在webforms中就可以修改请求参数,修改之后点Run to Completion就能提交了,于是就成功修改了请求参数了
e、全局断点后,需要清除断点:rules-> automatic breakpoint ->disabled
2)、单个断点
已经知道了某个接口的地址,只需要针对这一条请求打断点就可以
a、请求前断点(before response): bpu
命令行输入:bpu https://www.cnblogs.com/wuhuacong/ 回车
取消断点,在命令行输入: bpu 回车就可以了
b、响应后断点(after requests): bpafter
在命令行输入:bpafter https://passport.cnblogs.com/user/signin 回车
取消断点,在命令行输入: bpafter 回车就可以了
5、实例
实例一:淘宝搜索,修改请求参数,着重服务器的处理(转载https://www.cnblogs.com/hushaojun/p/5644645.html)
a、在Fiddler命令行输入区输入“bpu”回车执行清掉原有的断点,然后输入“bpu m.taobao.com”回车执行,接下来就会中断URL中包含此地址的请求。
b、在浏览器淘宝首页顶端搜索框输入“娃娃”后点击搜索,此时请求被中断,在Fiddler会话列表面板看到以红色T图标开头被中断的会话
c、点击会话列表中被中断的会话,依次进入Inspectors-->WebForms。此时请求并未发出,q参数即为查询关键字,我们修改为“nike”,然后点击“Break on Response”按钮。注:在这里实现修改了请求数据,其它的post数据,甚至是headers里的cookie、referer、user-agent等都可以修改。
d、修改完成后将请求继续发送,搜索内容已被更改
注:更多内容可参考上文链接
实例二:修改返回值数据,着重关心的是页面的处理
a、设置:Rules->Automatic Breakpoints->选择After Responses
b、请求需要修改的接口
c、在textview中修改返回值中的数据
d、点击run to completion 按钮,继续请求接口,查看返回值数据已修改