fiddler的使用记录
fiddler了解
-
上官网下载工具,然后安装使用,https://www.telerik.com/fiddler,如果对该工具不熟悉,还有直白的教程,看过比较多,这个人讲的还可以:https://blog.csdn.net/pengjiangchun/article/details/106841499
-
暂时该工具对我而言,仅仅是作为mock数据而使用到,最常见的一个场景即,产品后端代码还未更新的情况下,前端代码已经编写完成,此时若需要自测,就可以通过多种手段进行构造后台返回的假数据,验证前端的UI与性能等是否符合预期。
-
fiddler简单原理可以诠释为:在客户端与服务器之间新增一个代理服务器-fiddler,即通常客户端与服务器之间相互发送数据,现在都会先经过fiddler,由fiddler转发出去或者拦截、修改数据信息再转发,我们通常就是用该工具来实现mock(篡改)数据,以实现部分情况下不依赖后端而验证前端等功能,大概如下代理结构:
实例使用
-
断点:理解了该工具所处的位置之后,首先理解代理首先是断点,依据我们的需要,是在客户端的请求发到服务端之前断点拦截,还是在服务端回复信息之后拦截,或者是暂时不用该工具,就选择如图的disabled,理解这一点之后,该我选择在客户端请求发到服务端之前拦截,选择改变包的内容,使得服务端收到的是我所期望他收到的内容。
-
bpu:拦截的URL信息,格式如下,输入后回车键后生效
bpu url url //中间空格不可省略,之所以空格,是后面我定制的可以连续拦截两个以上URL时候定制的内容,因为该工具默认只能拦截单个请求
-
通过上面两个步骤执行之后,然后就可以在对应的URL中看到自己编排的内容返回到页面上了,当然比如在choose response这里选择一些早就定制好的内容返回给客户端,比如给个HTTP/404 Not Found之类的。总而言之,常用的即如此过程。
fiddler二次开发应用
- 简单介绍对该工具的一个二次开发过程,需求如下:改变该工具一次只能拦截单个断点的限制,实现一次设置多个断点,需要修改的地方如下,其他的功能也可以用java语言进行修改。
//第一处:找到开头的代码注释后新增后面代码:
/*
BindPref("fiddlerscript.ephemeral.bpRequestURI")
public static var bpRequestURI:String = null; # zch改过第1处
*/
// 设置数组的长度为10 10个阻塞的命令,内容为空格,和bpu命令用空格分割保持一致
BindPref("fiddlerscript.ephemeral.bpRequestURI")
//数组的长度10,10个阻塞的命令,内容为空格,和bpu命令用空格分割保持一致
public static var bpRequestURIs:String[] = [" "," "," "," "," "," "," "," "," "," "];
//第二处:找到开头的代码注释后新增后面代码:
/*
case "bpu":
if (sParams.Length<2) {bpRequestURI=null; FiddlerObject.StatusText="RequestURI breakpoint cleared"; return false;}
bpRequestURI = sParams[1];
FiddlerObject.StatusText="RequestURI breakpoint for "+sParams[1];
return true;
zch改过这里 第2处 */
case "bpu":
var len1 = sParams.Length ;
var len2 = bpRequestURIs.Length;
//每次赋值之前先恢复原始值
for(var i = 0; i< len2; i++){
bpRequestURIs[i]=" ";
}
if (len1 < 2) {FiddlerObject.StatusText="RequestURI breakpoint cleared"; return false;}
var text = "";
for(var i = 1; i < len1; i++){
bpRequestURIs[i-1] = sParams[i];
text += sParams[i] +" ";
}
FiddlerObject.StatusText="RequestURI breakpoint for " + text;
return true;
//第三处:找到开头的代码注释后新增后面代码:
/*if ((null!=bpRequestURI) && oSession.uriContains(bpRequestURI)) {
oSession["x-breakrequest"]="uri";
}
zch改过这里(第三处)*/
var len = bpRequestURIs.Length;
for(var i = 0; i< len; i++){
if(bpRequestURIs[i]!=null && bpRequestURIs[i]!= " "&& oSession.uriContains(bpRequestURIs[i]) ){
oSession["x-breakrequest"]="uri";
}
}