fiddler的mock数据与二次开发示例

fiddler的使用记录

fiddler了解

  • 上官网下载工具,然后安装使用,https://www.telerik.com/fiddler,如果对该工具不熟悉,还有直白的教程,看过比较多,这个人讲的还可以:https://blog.csdn.net/pengjiangchun/article/details/106841499

  • 暂时该工具对我而言,仅仅是作为mock数据而使用到,最常见的一个场景即,产品后端代码还未更新的情况下,前端代码已经编写完成,此时若需要自测,就可以通过多种手段进行构造后台返回的假数据,验证前端的UI与性能等是否符合预期。

  • fiddler简单原理可以诠释为:在客户端与服务器之间新增一个代理服务器-fiddler,即通常客户端与服务器之间相互发送数据,现在都会先经过fiddler,由fiddler转发出去或者拦截、修改数据信息再转发,我们通常就是用该工具来实现mock(篡改)数据,以实现部分情况下不依赖后端而验证前端等功能,大概如下代理结构:

    fiddler的mock数据与二次开发示例

实例使用

  • 断点:理解了该工具所处的位置之后,首先理解代理首先是断点,依据我们的需要,是在客户端的请求发到服务端之前断点拦截,还是在服务端回复信息之后拦截,或者是暂时不用该工具,就选择如图的disabled,理解这一点之后,该我选择在客户端请求发到服务端之前拦截,选择改变包的内容,使得服务端收到的是我所期望他收到的内容。

  • bpu:拦截的URL信息,格式如下,输入后回车键后生效

    bpu url url //中间空格不可省略,之所以空格,是后面我定制的可以连续拦截两个以上URL时候定制的内容,因为该工具默认只能拦截单个请求
    
  • fiddler的mock数据与二次开发示例

  • fiddler的mock数据与二次开发示例

  • 通过上面两个步骤执行之后,然后就可以在对应的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";
            }
        }
上一篇:Fiddler


下一篇:好好学习