Fiddler (二) Script 用法

來源:互聯網
上載者:User

通過前一篇部落格 【小坦克: 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方法或者Regex的方法去操作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方法或者Regex的方法去操作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();        // 用Regex或者replace方法去修改string        strBody=strBody.replace("1111","2222");        // 彈個對話方塊檢查下修改後的body               
FiddlerObject.alert(strBody); // 將修改後的body,重新寫回Request中 oSession.utilSetRequestBody(strBody); }}

 

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

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

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.