• 抓包工具Fiddler(1)- 基本介绍


    摘取自:https://www.52pojie.cn/thread-854434-1-1.html

    阅读目录

    1、概述

    2、Fiddler作者

    3、Fiddler介绍

    4、脚本Fiddler Script

    5、场景1:一个付费验证,是否付费会返回一个json。里面有一个时间戳和一个false。如果时间戳和客户端不一致,则为破解失败。

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

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

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

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

    概述

    说起抓包,很多人以为就是用个工具,简简单单地抓一下就可以了。昨天在面试一个安卓逆向,直接告诉我【抓包没有技术含量】。在这里,我必须发一个教程,解析一下抓包神器——Fiddler。Fiddler仅仅是一个抓包工具?不好意思,Fiddler用得好,真的可以为所欲为。


    Fiddler作者

    Fiddler 的作者是 Eric Lawrence 是个大师级的人物, 目前在微软总部西雅图工作。 他的博客是: http://www.ericlawrence.com/Eric/博客中能看到他的简历,以及一些生活照.。


    Fiddler介绍

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

    脚本Fiddler Script

    接下来给大家介绍Fiddler的强大脚本功能Fiddler Script,官方帮助文档地址是http://www.fiddler2.com/Fiddler/dev/ScriptSamples.aspFiddler Script 是用JScript.NET语言写的,那么Fiddler Script到底有什么用?我这里来列举一些大家肯定遇到过的问题:

    场景1:一个付费验证,是否付费会返回一个json。里面有一个时间戳和一个false。如果时间戳和客户端不一致,则为破解失败。

    那么你一定会这么想,有没有一个功能,可以只替换json里面部分参数,然后返回给客户端,而不是全部写死呢?于是,我们需要使用到script了!代码如下:

    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);
                 }
             }
    }
    View Code

    通过以上代码,即可每次在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中
        }
    View Code

    场景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;
    }
    View Code

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

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

    场景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("
    ");
                            file.close();
                    }
    View Code

    以上就是Fiddler script经常使用到的功能,免费奉献给大家。直接复制即可使用。

  • 相关阅读:
    冬至——汤圆
    偷偷的高兴!
    sql 70229 考试样题(2)
    SQL Server开发人员应聘常被问的问题妙解汇总
    GOOLE Picasa Web License
    辞旧迎新!
    VC98\mfc\lib' specified in 'LIB environment variable' 系统找不到指定路径
    ASP 入门
    OpenCV类型转换
    坐标旋转变换公式的推导
  • 原文地址:https://www.cnblogs.com/bigbox777/p/12710558.html
Copyright © 2020-2023  润新知