Fiddler大解析!抱歉,抓包抓得好真的可以爲所欲爲。

來自吾愛破解論壇https://www.52pojie.cn/thread-854434-1-1.html

Fiddler的作者

  • Fiddler 的作者是 Eric Lawrence 是個大師級的人物, 目前在微軟總部西雅圖工作。 他的博客是: http://www.ericlawrence.com/Eric/
  • 博客中能看到他的簡歷,以及一些生活照.

Fiddler的介紹

  • Fiddler是強大的抓包工具,它的原理是以web代{過}{濾}理服務器的形式進行工作的,使用的代{過}{濾}理地址是:127.0.0.1,端口默認爲8888,我們也可以通過設置進行修改。
  • 代{過}{濾}理就是在客戶端和服務器之間設置一道關卡,客戶端先將請求數據發送出去後,代{過}{濾}理服務器會將數據包進行攔截,代{過}{濾}理服務器再冒充客戶端發送數據到服務器;同理,服務器將響應數據返回,代{過}{濾}理服務器也會將數據攔截,再返回給客戶端。
  • Fiddler可以抓取支持http代{過}{濾}理的任意程序的數據包,如果要抓取https會話,要先安裝證書。


這兩點,希望大家牢記。接下來,給大家介紹Fiddler超級強大的地方之一——Fiddler Script.

論壇有很多Fiddler的使用教程,這裏就不多說了。但是,卻沒有一個人說到最強大的腳本功能!

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 的官方幫助文檔必須認真閱讀, 地址是:http://www.fiddler2.com/Fiddler/dev/ScriptSamples.asp

小常識:Fiddler Script 是用JScript.NET語言寫的

那麼Fiddler Script到底有什麼用?我這裏來列舉一些大家肯定遇到過的問題:

場景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();
                }


——————————————————————————————————————————————————————————————————————
以上就是Fiddler script經常使用到的功能,免費奉獻給大家。直接複製即可使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章