Fiddler (二) Script 用法


Fiddler (二) Script 用法

通過前一篇博客 【小坦克: Fiddler教程】,我們了解了Fiddler的基本用法,  現在我們來看看Fiddler的高級用法. Fiddler Script。   Fiddler中的script 可以讓我們自動修改Http request和Response 的內容。  而不用手動地去下"斷點"來修改http Request或Response中的值。

 

閱讀目錄

  1. Fiddler的作者
  2. 如何向Fiddler的作者請教
  3. 關於Fiddler Script 和Jscript.NET
  4. Fiddler Script 是用JScript.NET語言寫的
  5. 安裝Fiddler Script Editor
  6. 給Fiddler添加菜單
  7. 修改Session在Fiddler的顯示樣式
  8. 如何在Fiddler Script中修改Cookie
  9. 如何在Fiddler Script中修改Request 中的body

 

Fiddler的作者

Fiddler 的作者是 Eric Lawrence 是個大師級的人物, 目前在微軟總部西雅圖工作。 他的博客是: http://www.ericlawrence.com/Eric/

博客中能看到他的簡歷,以及一些生活照.

 

遇到問題如何向Fiddler的作者請教

Eric Lawrence 在Google 論壇中建了一個Fiddler 的討論組, 地址是:https://groups.google.com/forum/?fromgroups#!forum/httpfiddler

在這里Fiddler的使用者如果遇到任何問題,都可以這論壇里直接問Eric Law. Eric Law一般都會很快答復你。  在問問題之前,請搜索下。因為你的問題很可能別人早就問過了。

 

關於Fiddler Script

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語言寫的

我從來沒聽說過JScript.NET語言,可能是JScript的升級版吧。  寫起來有點類似C#

 

安裝Fiddler Script Editor

你可以直接用notepadCustomRules.js文件,

強烈推薦下載 Fiddler Script Editor 地址是: http://www.fiddler2.com/fiddler/fse.asp

Fiddler Script Editor 提供了語法高亮,以及智能提示的功能, 如下圖:

 

CustomRules.js中的主要方法

// 在這個方法中修改Request的內容, 我們用得最多,

static function OnBeforeRequest(oSession: Session)

 

// 在這個方法中修改Response的內容,

static function OnBeforeResponse(oSession: Session)

 

// 在個方法中包含Fiddler 命令。  在Fiddler界面中左下方的QuickExec Box

static function OnExecAction(sParams: String[])

 

給Fiddler添加菜單

Fiddler可以模擬各種瀏覽器,你可以通過點擊菜單 Rules->User-Agents

不過好像沒有Iphone 4S safari 的, 我們現在添加一個。  先查詢在網上Iphone 4S safari 的user-Agents, 然后添加如下代碼代碼就可以了

RulesStringValue(23, "Iphone 4S safari", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7")

 保存腳本, 重啟Fiddler就可以看到菜單中多了個Iphone 4s

 

你可以把你常用的操作,都定義成一個menu,

 

修改Session在Fiddler的顯示樣式

我們可以控制Session在Fiddler中顯示的樣式, 具體文檔是: http://www.fiddler2.com/Fiddler/dev/SessionFlags.asp

 

把這段腳本放在OnBeforeRequest(oSession: Session) 方法下,並且點擊"Save script", 這樣所有的cnblogs的會話都會顯示紅色.

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

運行效果如

 

 

如何在Fiddler Script中修改Cookie

cookie其實就是request 中的一個header.

// 刪除所有的cookie

oSession.oRequest.headers.Remove("Cookie");

 

// 新建cookie

oSession.oRequest.headers.Add("Cookie", "username=testname;testpassword=P@ssword1");


注意: Fiddler script不能直接刪除或者編輯單獨的一個cookie, 你需要用replace方法或者正則表達式的方法去操作cookie的string

復制代碼
static function OnBeforeRequest(oSession: Session) 
{ 
     if (oSession.HostnameIs('www.example.com') && 
          oSession.uriContains('pagewithCookie') && 
oSession.oRequest.headers.Contains("Cookie")) 
     { 

     var sCookie = oSession.oRequest["Cookie"]; 

     //  用replace方法或者正則表達式的方法去操作cookie的string
     sCookie = sCookie.Replace("cookieName=", "ignoreme="); 

     oSession.oRequest["Cookie"] = sCookie; 
    } 
復制代碼

 

如何在Fiddler Script中修改Request 中的body

方法一:

復制代碼
static function OnBeforeRequest(oSession: Session) 
{ 
    if(oSession.uriContains("http://www.cnblogs.com/TankXiao/"))
    {
        // 獲取Request 中的body字符串
        var strBody=oSession.GetRequestBodyAsString();
        // 用正則表達式或者replace方法去修改string
        strBody=strBody.replace("1111","2222");
        // 彈個對話框檢查下修改后的body               
FiddlerObject.alert(strBody); // 將修改后的body,重新寫回Request中 oSession.utilSetRequestBody(strBody); } }
復制代碼

 

方法二:  提供了一個非常簡單的方法,可以直接替換body中的數據

 oSession.utilReplaceInRequest("1111", "2222");


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM