Fiddler - 使用技巧(转)
转载:http://handyxuefeng.blog.163.com/blog/static/454521722016129613442
1 工作原理
Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据。Fiddler包含了一个强大的基于事件脚本的子系统,并且能使用.net语言进行扩展。
Fiddler 是以代理web服务器的形式工作的,它默认使用代理地址:127.0.0.1, 端口:8888。
2 使用技巧
2.1 显示IP的设置方法
方法:1.点击—Rules—Customize Rules …
2.在CustomRules.js文件中查找字符串“static function Main()”
3.在此函数末尾增加这行代码
1 FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP");
4.重启Fiddler后,寻找到ServerIP这项,表示增加成功
2.2 增加中间层接口显示列
在fiddler_script中的class Handlers域下增加以下代码:
1 public static BindUIColumn("VIP_Interface", 250) 2 function FillMethodColumn(oSession: Session): String { 3 var pathAndQuery: String = oSession.PathAndQuery 4 if(pathAndQuery.Contains("/vips-mobile/rest/")){ 5 var start: int = pathAndQuery.IndexOf("/rest"); 6 var end: int = pathAndQuery.IndexOf("?"); 7 return pathAndQuery.Substring(start,end-start); 8 }else if(pathAndQuery.Contains("service=")){ 9 return new System.Text.RegularExpressions.Regex("(?<=service=).*?(?=&)").Match(pathAndQuery).Value; 10 } 11 return null; 12 }
点击save script,无需重启,就可以在当前窗口看到对应的VIP_Interface列:
2.3 Mock接口Response数据
前端测试还在为“中间层没返回数据”,“中间层返回数据不正确” 烦恼吗?Fiddler让你不再依赖,还等什么呢?
现在教你如何使用Fiddler-breakpoints,Mock接口response数据,进行前端测试。
1、对fiddler进行设置,打开breakpoints:Rules-Automatic Breakpoints-After Response
2、请求数据,如获取商品列表
3、将response视图切换到textview,修改相关字段的值,如“stock”,点击Run to Completion,最后释放breakpoint
此时,可以看到前端商品列表是仅剩数据终于显示了,哈!完全不依赖接口后端数据的,前端UI测试走起。。。
mock前:
mock后:
2.4 抓取HTTPS数据包
1、在Fiddler选项中勾上捕获HTTPS连接
2、 安装CertMaker for iOS and Android插件
下载地址:http://www.telerik.com/docs/default-source/fiddler/addons/fiddlercertmaker.exe?sfvrsn=2
3、PC安装HTTPS证书
4、手机设置代理到Fiddler,手机浏览器访问:http://ipv4.fiddler:yourport/
点击 FiddlerRoot Certificate 链接,手机安装HTTPS证书
参考地址:
http://docs.telerik.com/fiddler/configure-fiddler/tasks/configureforandroid
http://docs.telerik.com/fiddler/configure-fiddler/tasks/configureforios
2.5 通过Fiddler-Script模拟限速
Fiddler-Script是Fiddler的提供的一个强大的子脚本系统,这个系统可以调用fiddler的接口来完成开发者自定义的功能。
我们可以在fiddler-script提供的OnBeforeRequest方法里增加以下两句代码:
1 // Delay sends by 300ms per KB uploaded. 2 oSession["request-trickle-delay"] = "300"; 3 // Delay receives by 150ms per KB downloaded. 4 oSession["response-trickle-delay"] = "150";
每一次我们针对自己写的网站测试限速时,可以根据自己的需要更改以上效果的值,比如延迟的时间越长,限速就越明显。
2.6 其他使用技巧
1、AutoResponder 文件代理
把请求的文件替换为本地的文件,点击save,重新发送请求(快捷键:R)
2、Composer 请求模拟、前后端接口联调
将请求拖入composer,可以根据需要选择get、post等发送方式,并修改参数,点击execute就可模拟发送请求,然后可用inspector查看模拟请求的响应
3、编码解码 TextWizard
4、js格式化
下载安装插件JavaScript Formatter 下载url:http://www.telerik.com/fiddler/add-ons 重启fiddler
选择一个返回js的请求,在inspector->response区域的textview框会显示压缩的js代码,选中该请求,右键点击Make
JavaScript Pretty,再点击TextView框即可显示格式化的js代码,SyntaxView框还可高亮显示
5、请求对比
下载安装插件Traffic Differ 下载url:http://www.telerik.com/fiddler/add-ons 重启fiddler,新增了Differ选项卡
将两条不同的请求拖入differ面板即可进行对比
2.7 高亮显示缺省字段请求
Fiddler–> Rules --> CustomRules
在static function OnDone(oSession: Session)函数增加:
1 if (oSession.utilFindInResponse("must be provided", false)>-1 || oSession.utilFindInResponse("illegal arguments", false)>-1 || oSession.utilFindInResponse("invalid", false)>-1 || oSession.utilFindInResponse("error msg", false)>-1 || oSession.utilFindInResponse("must not be empty", false)>-1 || oSession.utilFindInResponse("is empty ", false)>-1 || oSession.utilFindInResponse("Parameter is missing", false)>-1 || oSession.utilFindInResponse("参数错误", false)>-1|| oSession.utilFindInResponse("参数格式不正确", false)>-1 || oSession.utilFindInResponse("格式错误", false)>-1 || oSession.utilFindInResponse("missing parameter", false)>-1 || oSession.utilFindInResponse("参数异常", false)>-1 || oSession.utilFindInResponse("to required type", false)>-1){ 2 oSession["ui-backcolor"] = "orange"; 3 }
原理是判断返回是否包含中间层常用的参数错误返回码。在fiddler上为橙色的请求,即为缺省参数的请求。