1. 程式人生 > >FIDDLER的使用方法及技巧總結

FIDDLER的使用方法及技巧總結

一、FIDDLER快速入門及使用場景

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

Fiddler的官方幫助:http://docs.telerik.com/fiddler/knowledgebase/quickexec

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

 

1、Fiddler基本概念及工作原理

Fiddler是最強大最好用的Web除錯工具之一,它能記錄所有客戶端和伺服器的http和https請求,允許你監視,設定斷點,甚至修改輸入輸出資料,Fiddler包含了一個強大的基於事件指令碼的子系統,並且能使用.net語言進行擴充套件

你對HTTP 協議越瞭解, 你就能越掌握Fiddler的使用方法。你越使用Fiddler,就越能幫助你瞭解HTTP協議。Fiddler無論對開發人員或者測試人員來說,都是非常有用的工具。

 

Fiddler 是以代理web伺服器的形式工作的,它使用代理地址:127.0.0.1,埠:8888。當Fiddler退出的時候它會自動登出,這樣就不會影響別的 程式。

不過如果Fiddler非正常退出,這時候因為Fiddler沒有自動登出,會造成網頁無法訪問。解決的辦法是重新啟動下Fiddler。

 

2、Fiddler使用場景

①適用場景

開發環境的host配置;

前後端介面除錯;

線上bugfix;

效能分析和優化;

 

②不支援的功能

除錯非網路協議的資料流;

------支援HTTP、HTTPS、FTP資料流及相關協議

------無法檢測或修改其他協議的資料:如SMTP、POP3、Telnet、IRC等

處理超大請求和響應;

------超過2GB的請求,fiddler無法處理

------超過2GB的響應,fiddler的處理能力有限

------儲存大量的sessions會話也會導致效能急劇下降

 

二、FIDDLER使用者介面

FIDDLER使用者的幾面主要包括下面幾個部分,如圖所示:首先FIDDLER視窗的最左邊是web session列表,視窗的最上方是main menu主選單,然後下面的是toolbar工具欄,視窗最下方的黑的框是quickexec命令列,最下方的欄是status bar狀態列,右邊是view選項檢視。整體大概就是醬紫。

1、Web Session 列表

列表上主要包含下面的幾個部分

包含部分如下:

注:標藍色區域的內容為平時較常用的部分

 

每個記錄不同圖示和不同顏色的含義如下:

顏色的含義如下:

 

 

部分圖示的含義如下:

 

列表上對應快捷鍵的使用:

※注:標藍色區域的內容為平時較常用的部分

右鍵後的上下文選單列表:

 

2、Main Menu 主選單

選單欄可以啟動所有FIDDLER的功能

3、Toolbar工具欄

工具欄的話主要是提供了常見的命令和設定的快捷方式

 

4、Status Bar 狀態列

狀態列由一組面板組成,顯示一些fiddler的配置資訊

 

 

5、QuickExec命令列

命令列對話方塊提供了常見操作的快捷方式:包括選擇命令和script命令

6、View 選項卡

 

 

 

 

第一步:先把請求輸入到框內,注意前面的型別是get還是post

第二步:執行:execute

第三步:在web sessions裡可以查到剛發的請求

※注:這個方法可以模擬重複發很多請求的功能,在測一些介面返回請求頻繁的功能時會用到

選單選項的功能如下

 

時間選項卡上的圖形的含義如下:

The abbreviated URL at the left of each Transfer Bar is green if the request was a Conditional Request, or Black if the request was unconditional. The full URL is shown in the status bar on hover.

The start of the transfer bar is drawn at the time (Timers.ClientBeginRequest) when the client sends the request to Fiddler.

The end of the transfer bar is drawn at the time (Timers.ClientDoneResponse) when the response to the client is completed.

The color of the bar is determined by the MIME type of the response; light-green for images, dark-green for JavaScript, purple for CSS, and blue otherwise.

If the bar is "hatched" rather than smooth, this indicates that the HTTP response was buffered by Fiddler. For more information, see the "What is streaming?" section below.

The vertical line indicates the time to first byte of the server's response (Timers.ServerBeginResponse).

The green circle before the bar shows that a connection was reused; a red circle means that the connection was newly created.

The top circle represents the client's connection to Fiddler; the bottom circle represents Fiddler's connection to the server.

A red X after the bar indicates that the server sent a Connection: close header (or failed to send a Keep-Alive header for a HTTP/1.0 response), preventing subsequent reuse of the connection.

The gray arrow icon indicates that the server's response was a redirect (302). The red ! icon indicates that the server returned an error code (4xx, 5xx).

下面是請求的模式:

Streaming mode ensures that HTTP responses are not buffered by Fiddler. Buffering alters the waterfall diagram, as you can see below, where none of the images begin to download until their containing page completes. Learn more...

 

三、FIDDLER使用技巧及方法

1、AutoResponder選項卡的使用

Fiddler的AutoResponder 選項卡允許你使用本地硬碟的檔案來作為返回內容,而不是把請求發往伺服器。

建立AutoResponder 規則:使用AutoResponder選項卡,你可以建立一個匹配規則和一個響應字串,如果請求的URL地址跟你的匹配規則相匹配,Fiddler就會自動執行這個對應的響應字串。

 

①匹配規則

1、純粹字串匹配

Fiddler將會按照不區分字母大小寫來匹配字串。

Demo如下:

2、字首NOT匹配

跟上面的類似,Fiddler還有一個非字串匹配的規則:NOT:該規則會匹配url中不含給定字元的所有請求

Demo如下:

3、字首EXACT匹配

表示式以EXACT:為字首,此匹配區分字母大小寫

4、字首REGEX匹配

正則表示式:Fiddler支援以regex:為字首的正則表示式語法,

使用.+匹配一個或多個字元,

使用.*匹配0個或多個字元,

使用^匹配字串開始位置,

使用$匹配字串結尾位置。

Demo如下:

※注:選項字串(?insx)的功能如下:它會啟動大小寫敏感限制,要求顯示捕獲組,支援單行語義,支援使用#符號添加註釋

②設定響應字串

一些返回的actiontext如下

※注:標藍色區域的內容為平時較常用的部分

 

還有個方法是在返回設定新建個規則,

 

然後在text’文字處編寫想要返回的json即可

寫好規則後,也可以右鍵規則進行修改:

延遲相應的方法如下

在一個請求返回來之前你可以設定一下請求延遲返回的時間。選中Enable Latency 複選框,可以設定所有的規則的延遲。

右鍵單擊一個或者多個規則,然後選擇 Set Latency 就可以設定具體的延遲時間。如果你想調整現存的延遲時間,只需要輸入一個帶有+或者-號的數字即可。

如果你想在現在的延遲時間基礎上面減少500毫秒,那麼在彈出的輸入框中輸入-500即可。

 

2、BreakPoint 斷點設定

設定斷點可以在使程式在斷點處停止,可以檢視程式的狀態,修改資料流,以改變程式的行為

下面是在fiddler中設定斷點的位置

首先可以在quicktext命令列輸入斷點,這樣在web sessions之前或之後的sessions會被中斷

或者是在AutoResponder中設定斷點,這樣在後續遇到這樣的請求就會被中斷

Sessions執行過程中設定斷點的位置:

1)從客戶端讀到請求後,在請求發給伺服器之前

2)在伺服器發回響應後,在響應回傳給客戶端前

以1)為例:設定斷點後,sessions請求會被中斷,session顯示中斷的圖示,點選這個session

出現下面的內容

在view選項卡選擇webform後,可以看到請求的引數,這時候引數可以進行修改

修改引數後下方有三個選項:

①Break On Response

這個選項可以繼續在返回客戶端前面加斷點

②Run to Completiopn

這個可以按照這個更改引數後繼續提交請求

③Choose response…

這個可以展出上下文選單,裡面有各種返回的HTTP請求,可以選擇特定的請求返回,也可以按照自己自定義的特定檔案來返回

 

3、Compare比較兩個sessions

有時候兩個請求比較相似,想找出區別,可以下載外掛winziff,下載地址是

http://www.grigsoft.com/download-windiff.htm

下載以後,放到tools- fiddler option tool資料夾下,

 

設定好路徑後就可以使用了

 

使用方法是勾選兩個sesisons,然後右鍵,點選compare,然後出警告框以後直接執行就可以。

從上面紅色和藍色的內容就可以看出請求中傳送的和收到的引數及返回值是不一樣的

 

四、FIDDLER通用規則更改

To make custom changes to web requests and responses, use FiddlerScript to add rules to Fiddler's OnBeforeRequest or OnBeforeResponse function. Which function is appropriate depends on the objects your code uses: OnBeforeRequest is called before each request, and OnBeforeResponse is called before each response. Note:

1)It is not possible to access the response objects inside OnBeforeRequest as they have not yet been created.

2)It is possible to use objects from the request inside OnBeforeResponse; however, any changes you make to those objects will not be seen by the server, as it has already received the request.

 (to be continue...)