Fiddler 教程(一)

原文地址:http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html

Fiddler是最強大最好用的Web調試工具之一,它能記錄所有客戶端和服務器的http和https請求,允許你監視,設置斷點,甚至修改輸入輸出數據. 使用Fiddler無論對開發還是測試來說,都有很大的幫助。

閱讀目錄

  1. Fiddler的基本介紹
  2. Fiddler的工作原理
  3. 同類的其它工具
  4. Fiddler如何捕獲Firefox的會話
  5. Firefox 中使用Fiddler插件
  6. Fiddler如何捕獲HTTPS會話
  7. Fiddler的基本界面
  8. Fiddler的統計視圖
  9. QuickExec命令行的使用
  10. Fiddler中設置斷點修改Request
  11. Fiddler中設置斷點修改Response
  12. Fiddler中創建AutoResponder規則
  13. Fiddler中如何過濾會話
  14. Fiddler中會話比較功能
  15. Fiddler中提供的編碼小工具
  16. Fiddler中查詢會話
  17. Fiddler中保存會話
  18. Fiddler的script系統
  19. 如何在VS調試網站的時候使用Fiddler
  20. Response 是亂碼的

Fiddler的基本介紹

Fiddler的官方網站:  www.fiddler2.com

Fiddler官方網站提供了大量的幫助文檔和視頻教程, 這是學習Fiddler的最好資料。

Fiddler是最強大最好用的Web調試工具之一,它能記錄所有客戶端和服務器的http和https請求,允許你監視,設置斷點,甚至修改輸入輸出數據,Fiddler包含了一個強大的基於事件腳本的子系統,並且能使用.net語言進行擴展

你對HTTP 協議越瞭解, 你就能越掌握Fiddler的使用方法. 你越使用Fiddler,就越能幫助你瞭解HTTP協議.

Fiddler無論對開發人員或者測試人員來說,都是非常有用的工具

Fiddler的工作原理

Fiddler 是以代理web服務器的形式工作的,它使用代理地址:127.0.0.1, 端口:8888. 當Fiddler會自動設置代理, 退出的時候它會自動註銷代理,這樣就不會影響別的程序。不過如果Fiddler非正常退出,這時候因爲Fiddler沒有自動註銷,會造成網頁無法訪問。解決的辦法是重新啓動下Fiddler.

 

同類的其它工具

同類的工具有: httpwatch, firebug, wireshark

 

Fiddler 如何捕獲Firefox的會話

能支持HTTP代理的任意程序的數據包都能被Fiddler嗅探到,Fiddler的運行機制其實就是本機上監聽8888端口的HTTP代理。 Fiddler2啓動的時候默認IE的代理設爲了127.0.0.1:8888,而其他瀏覽器是需要手動設置的,所以將Firefox的代理改爲127.0.0.1:8888就可以監聽數據了。

Firefox 上通過如下步驟設置代理

點擊: Tools -> Options,  在Options 對話框上點擊Advanced tab - > network tab -> setting.

 

Firefox 中安裝Fiddler插件

修改Firefox 中的代理比較麻煩, 不用fiddler的時候還要去掉代理。 麻煩

推薦你在firefox中使用fiddler hook 插件, 這樣你非常方便的使用Fiddler獲取firefox中的request 和response

當你安裝fiddler後, 就已經裝好了Fiddler hook插件, 你需要到firefox中去啓用這個插件
打開firefox   tools->Add ons -> Extensions 啓動 FiddlerHook

 

 

Fiddler如何捕獲HTTPS會話

默認下,Fiddler不會捕獲HTTPS會話,需要你設置下, 打開Fiddler  Tool->Fiddler Options->HTTPS tab

 選中checkbox, 彈出如下的對話框,點擊"YES"

點擊"Yes" 後,就設置好了

Fiddler的基本界面

 看看Fiddler的基本界面

 

Inspectors tab下有很多查看Request或者Response的消息。 其中Raw Tab可以查看完整的消息,Headers tab 只查看消息中的header. 如下圖

 

Fiddler的HTTP統計視圖

通過陳列出所有的HTTP通信量,Fiddler可以很容易的向您展示哪些文件生成了您當前請求的頁面。使用Statistics頁籤,用戶可以通過選擇多個會話來得來這幾個會話的總的信息統計,比如多個請求和傳輸的字節數。

選擇第一個請求和最後一個請求,可獲得整個頁面加載所消耗的總體時間。從條形圖表中還可以分別出哪些請求耗時最多,從而對頁面的訪問進行訪問速度優化

QuickExec命令行的使用

Fiddler的左下角有一個命令行工具叫做QuickExec,允許你直接輸入命令。

常見得命令有

help  打開官方的使用頁面介紹,所有的命令都會列出來

cls    清屏  (Ctrl+x 也可以清屏)

select  選擇會話的命令

?.png  用來選擇png後綴的圖片

bpu  截獲request

 

Fiddler中設置斷點修改Request

[作者:小坦克]  Fiddler最強大的功能莫過於設置斷點了,設置好斷點後,你可以修改httpRequest 的任何信息包括host, cookie或者表單中的數據。設置斷點有兩種方法

第一種:打開Fiddler 點擊Rules-> Automatic Breakpoint  ->Before Requests(這種方法會中斷所有的會話)

如何消除命令呢?  點擊Rules-> Automatic Breakpoint  ->Disabled

第二種:  在命令行中輸入命令:  bpu www.baidu.com   (這種方法只會中斷www.baidu.com)

如何消除命令呢?  在命令行中輸入命令 bpu

 

看個實例,模擬博客園的登錄, 在IE中打開博客園的登錄頁面,輸入錯誤的用戶名和密碼,用Fiddler中斷會話,修改成正確的用戶名密碼。這樣就能成功登錄

1. 用IE 打開博客園的登錄界面  http://passport.cnblogs.com/login.aspx
2. 打開Fiddler,  在命令行中輸入bpu http://passport.cnblogs.com/login.aspx
3. 輸入錯誤的用戶名和密碼 點擊登錄
4. Fiddler 能中斷這次會話,選擇被中斷的會話,點擊Inspectors tab下的WebForms tab 修改用戶名密碼,然後點擊Run to Completion 如下圖所示。
5. 結果是正確地登錄了博客園

 

 

Fiddler中設置斷點修改Response

當然Fiddler中也能修改Response

第一種:打開Fiddler 點擊Rules-> Automatic Breakpoint  ->After Response  (這種方法會中斷所有的會話)

如何消除命令呢?  點擊Rules-> Automatic Breakpoint  ->Disabled

第二種:  在命令行中輸入命令:  bpafter www.baidu.com   (這種方法只會中斷www.baidu.com)

如何消除命令呢?  在命令行中輸入命令 bpafter,

具體用法和上節差不多,就不多說了。

Fiddler中創建AutoResponder規則

Fiddler 的AutoResponder tab允許你從本地返回文件,而不用將http request 發送到服務器上。

看個實例. 1. 打開博客園首頁,把博客園的logo圖片保存到本地,並且對圖片做些修改。

2. 打開Fiddler 找到logo圖片的會話, http://static.cnblogs.com/images/logo_2012_lantern_festival.gif,  把這個會話拖到AutoResponer Tab下

3. 選擇Enable automatic reaponses 和Unmatched requests passthrough

4. 在下面的Rule Editor 下面選擇 Find a file... 選擇本地保存的圖片.  最後點擊Save 保存下。

5.  再用IE博客園首頁, 你會看到首頁的圖片用的是本地的。

 



Fiddler中如何過濾會話

每次使用Fiddler, 打開一個網站,都能在Fiddler中看到幾十個會話,看得眼花繚亂。最好的辦法是過濾掉一些會話,比如過濾掉圖片的會話. Fiddler中有過濾的功能, 在右邊的Filters tab中,裏面有很多選項, 稍微研究下,就知道怎麼用。

 

Fiddler中會話比較功能

選中2個會話,右鍵然後點擊Compare,就可以用WinDiff來比較兩個會話的不同了 (當然需要你安裝WinDiff)

 

Fiddler中提供的編碼小工具

點擊Fiddler 工具欄上的TextWizard,  這個工具可以Encode和Decode string.

Fiddler中查詢會話

用快捷鍵Ctrl+F 打開 Find Sessions的對話框,輸入關鍵字查詢你要的會話。 查詢到的會話會用黃色顯示

Fiddler中保存會話

有些時候我們需要把會話保存下來,以便發給別人或者以後去分析。  保存會話的步驟如下:

選擇你想保存的會話,然後點擊File->Save->Selected Sessions

Fiddler的script系統

Fiddler最複雜的莫過於script系統了 官方的幫助文檔: http://www.fiddler2.com/Fiddler/dev/ScriptSamples.asp

首先先安裝SyntaxView插件,Inspectors tab->Get SyntaxView tab->Download and Install SyntaxView Now... 如下圖

 

安裝成功後Fiddler 就會多了一個Fiddler Script tab, 如下圖

在裏面我們就可以編寫腳本了, 看個實例 讓所有cnblogs的會話都顯示紅色。

把這段腳本放在OnBeforeRequest(oSession: Session) 方法下,並且點擊"Save script"

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

這樣所有的cnblogs的會話都會顯示紅色

 

如何在VS調試網站的時候使用Fiddler

我們在用visual stuido 開發ASP.NET網站的時候也需要用Fiddler來分析HTTP, 默認的時候Fiddler是不能嗅探到localhost的網站。不過只要在localhost後面加個點號,Fiddler就能嗅探到。

例如:原本ASP.NET的地址是 http://localhost:2391/Default.aspx,  加個點號後,變成 http://localhost.:2391/Default.aspx 就可以了

 

第二個辦法就是在hosts文件中加入  127.0.0.1  localsite

如何你訪問http://localsite:端口號   。  這樣Fiddler也能截取到了。

 

Response 是亂碼的

有時候我們看到Response中的HTML是亂碼的, 這是因爲HTML被壓縮了, 我們可以通過兩種方法去解壓縮。

1. 點擊Response Raw上方的"Response is encoded any may need to be decoded before inspection. click here to transform"

2. 選中工具欄中的"Decode"。  這樣會自動解壓縮。

 

 


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