Fiddler备用信息

Fiddler 的作者是 Eric Lawrence 是个大师级的人物, 目前在微软总部西雅图工作。 他的博客是: http://www.ericlawrence.com/Eric/

Fiddler的介绍

•Fiddler是强大的抓包工具,它的原理是以web代{过}{滤}理服务器的形式进行工作的,使用的代{过}{滤}理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改。
•代{过}{滤}理就是在客户端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代{过}{滤}理服务器会将数据包进行拦截,代{过}{滤}理服务器再冒充客户端发送数据到服务器;同理,服务器将响应数据返回,代{过}{滤}理服务器也会将数据拦截,再返回给客户端。
•Fiddler可以抓取支持http代{过}{滤}理的任意程序的数据包,如果要抓取https会话,要先安装证书。

Fiddler 包含了一个脚本文件可以自动修改Http Request 和Response.这样我们就不需要手动地下"断点"去修改了,实际上它是一个脚本文件CustomRules.js 位于: C:\Documents and Settings\[your user]\My Documents\Fiddler2\Scripts\CustomRules.js 下,你也可以在Fiddler 中打开CustomRules.js 文件,  启动Fiddler, 点击菜单Rules->Customize Rules...
 Fiddler Script(用JScript.NET写的) 的官方帮助文档必须认真阅读, 地址是:http://www.fiddler2.com/Fiddler/dev/ScriptSamples.asp

 

Fiddler Script应用场景(来自https://www.52pojie.cn/thread-854434-1-1.html):

场景1:一个付费验证,是否付费会返回一个json。里面有一个时间戳和一个false。如果时间戳和客户端不一致,则为破解失败。
 那么你一定会这么想,有没有一个功能,可以只替换json里面部分参数,然后返回给客户端,而不是全部写死呢?于是,我们需要使用到script了!代码如下:如一个json是这个内容,baidu.com,返回了一个【name:吾爱破解,付费:false】

if (oSession.fullUrl.Contains("http://www.baidu.com"))
          {

              // 获取Response Body、Request Body中JSON字符串,转换为可编辑的JSONObject变量
             var responseStringOriginal =  oSession.GetResponseBodyAsString();
              var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(responseStringOriginal);
              var requestStringOriginal=oSession.GetRequestBodyAsString();
              var requestJSON = Fiddler.WebFormats.JSON.JsonDecode(requestStringOriginal);
              ){ //请求参数中,若type为1,对返回值做如下修改

                 responseJSON.JSONObject['付费'] = "true";
                  // 重新设置Response Body
                  var responseStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);
                  oSession.utilSetResponseBody(responseStringDestinal);
              }
          }
}

通过以上代码,即可每次在baidu返回数据时,自动将付费改为true,从而达到了破解的效果。


场景2:我想要修改request的Body里面的部分参数,每次下完断点,修改完再提交,总会网络超时或者APP超时。这该怎么办?难道只能靠手速?

    if(oSession.uriContains("http://www.baidu.com"))
     {
         var strBody=oSession.GetRequestBodyAsString();// 获取Request 中的body字符串
        strBody=strBody.replace("false","true");// 用正则表达式或者replace方法去修改string,将false改为true
         FiddlerObject.alert(strBody);// 弹个对话框检查下修改后的body 
         oSession.utilSetRequestBody(strBody);// 将修改后的body,重新写回Request中
    }

场景3:我想要修改cookie,改成一个付费过的cookie,但是需要实时生成,不能靠手速。这该怎么办?


  if (oSession.HostnameIs('www.baidu.com') && oSession.uriContains('pagewithCookie') && oSession.oRequest.headers.Contains("Cookie")) 
      { 
 var sCookie = oSession.oRequest["Cookie"]; 
      //  用replace方法或者正则表达式的方法去操作cookie的string
      sCookie = sCookie.Replace("付费=false", "付费=true"); 
      oSession.oRequest["Cookie"] = sCookie; 

场景4:我想要知道他到底有没有请求具体哪个网址,用查找速度太慢了。过滤也很慢。


if (oSession.HostnameIs("www.baidu.com")) {
             oSession["ui-color"] = "red";
         }

场景5:我想要自动保存某个接口的数据到本地,怎么才能实现?


if (oSession.fullUrl.Contains("www.baidu.com/playurl/v1/") ){  
                         oSession.utilDecodeResponse();//消除保存的请求可能存在乱码的情况
                        var fso;
                         var file;
                         fso = new ActiveXObject("Scripting.FileSystemObject");
                         //文件保存路径,可自定义
                        file = fso.OpenTextFile("D:\\Sessions.txt",8 ,true, true);
                         //file.writeLine("Response code: " + oSession.responseCode);
                         file.writeLine("Response body: " + oSession.GetResponseBodyAsString());
                         file.writeLine("\n");
                         file.close();
                 } 

绕过了APP证书验证,为什么还是抓不到包!—原因在于代{过}{滤}理!

目前有非常多的APP,都为了防止被抓包,不仅仅是只用了https这么简单。而使用fiddler抓不到包,本质原因在于wifi代{过}{滤}理!很多APP会检测你是否用了wifi代{过}{滤}理,如果设置了,则APP无法正常使用。这样就会从根本上杜绝被抓包

 那么,我们要怎么做才能防止这种情况的发生呢?
 比较笨的一种办法依旧是使用xposed上的just trust me,依旧hook相关函数,即可破解该策略。

—————————————————————————————————————————————————————————
用了trust me过后,还是抓不到包,这到底是怎么回事!!!
利用了本地服务器中转,这样的话Fiddler是抓不了包的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值