Fiddler抓取HTTP請求。


參考鏈接:http://blog.csdn.net/ohmygirl/article/details/17849983/

http://www.cnblogs.com/kingwolf_JavaScript/archive/2012/11/07/Fiddler_config_cols.html

 主要分為6大部分:

菜單欄,工具欄,會話列別,QuickExec命令行的使用,HttpRequest顯示欄  HttpResponse顯示欄

 

 

 

4、查看HTTP統計視圖:

      通常fiddler會話列表中會顯示捕獲的所有的http通信量,並以列表的形式展示出來,點擊你想查看的一個或者多個會話,再點擊軟件右邊的【Statustics】菜單,你就可以很輕松的查看到請求數、發送字節數等信息。如果你選擇第一個請求和最后一個請求,還可以獲得頁面加載所消耗的總體時間,還可以從圖表中分辯出那些請求耗時最多,從而可以對頁面的訪問速度進行優化。

5、QuickExec命令行的使用:

     QuickExec命令行是會話列表下邊的黑色區域,你可以在里面輸入命令,回車之后即可執行你的命令,非常方便,在這里為大家介紹幾個常用的命令:

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

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

      select  選擇會話的命令

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

      bpu  截獲request

6、如何在fiddler中設置斷點修改Response:

   主要有兩種方法:

1、點擊【設置】菜單—【自動斷點】—【響應之后】,這種方法是中斷所有的會話,如果你想消除斷點的話,就點擊【設置】—【自動斷點】—【禁用】就可以了。

2、在QuickExec命令行中輸入:"bpuafter 網址/會話名",這種方法是中斷某一具體的會話,如果想消除命令的話,在命令行中輸入"bpuafter"。

   7、如何在fiddler中創建AUTOResponder規則:

        設置AUTOResponder規則的好處是允許你從本地返回文件,而不用將http request發送到服務器上。我們就以訪問博客園網站為例說明一下該功能的用法。

        1) 打開博客園首頁,把博客園的LOGO圖片保存在本地,並把圖片修改一下。

        2) 打開fiddler找到剛才我們有該LOGO圖片的會話,然后點擊軟件右邊的自動響應選項卡,在"Enable authomatic reponses"和"permit passthrought unmatched requests"前面都打上勾,將會話拖到"自動響應"列表框中。

        3) 在右下角的Rule Editor的第二個文本框選擇"Find a File……",然后選擇本地保存的圖片,點擊"SAVE"按鈕保存就可以了。

 

 

Fiddler抓取HTTP請求。

抓包是Fiddler的最基本的應用,以本博客為例,啟動Fiddler之后,在瀏覽器中輸入http://blog.csdn.net/ohmygirl 鍵入回車之后,在Fiddler的web session界面捕獲到的HTTP請求如下圖所示:

 

上面的圖標后面的英文的意思依次為:

1.請求正在被發往服務器

2.正在從服務器接收請求內容

3.請求被一個斷點停住了。

4.響應被一個斷點停住了。

5.請求使用HEAD方法,響應應該沒有響應體。

6.請求使用POST方法

7.請求使用了HTTPS

8.返回內容為HTML頁面

9.返回內容為JS腳本

10.返回內容為CSS

11.返回內容為XML文件

12.返回內容為JSON文件

13.返回內容為音頻文件

14.返回內容為視頻文件

15.返回內容為Silverlight

16.返回內容為Flash

17.返回內容為字體文件

18.一般成功的響應

19.響應被重定向了,通過HTTP/300,301,302,303 or 307

20.HTTP 304 請求

21.返回一個需要客戶端證書驗證的請求

22.服務器端錯誤

23.會話被客戶端、Fiddler、服務器意外終止。

 

和會話列表的交互

在一個或者多個會話上面單擊右鍵會出現下面的菜單

 

小提示:你可以通過在FiddlerScript中使用ContextAction標志為這個菜單添加菜單項。

在“復制”菜單上面有以下內容:

 

  • Session - 以純文本和HTML語法加亮形式復制原始的請求內容到剪貼板。
  • Just URL - 僅僅復制主機名和URL地址
  • Headers Only - 以純文本和HTML語法加亮形式復制請求頭和響應頭到剪貼板。
  • Full Summary - 為了粘貼到Excel中方便,以純文本和HTML語法加亮形式把請求的各個列的信息復制到剪貼板。
  • Terse Summary - 復制請求地址和響應狀態到剪貼板。

 

在“保存”菜單上面有以下內容:

 

  • Session > In ArchiveZIP - 把相關的請求內容打包為一個 .SAZ 文件. 
  • Session - 把請求和響應的所有內容存為一個文本文件
  • Headers Only - 把請求頭和響應頭存為一個文本文件
  • Full Request - 把請求的所有內容存為一個文本文件
  • Request Body - 把請求體存為一個文本文件,通常是POST的數據包。
  • Full Response - 把響應的所有內容存為一個文本文件
  • Response Body - 把響應體存為一個文件,通常是HTML文件或者圖片。

 

 

AutoResponder 快速引用

 

            今天我們來看一下Fiddler的AutoResponder選項卡的強大功能。

 

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

 

 

 

創建AutoResponder 規則。

 

          使用AutoResponder選項卡,你可以創建一個匹配規則和一個響應字符串,如果請求的URL地址跟你的匹配規則相匹配,

 

Fiddler就會自動執行這個對應的響應字符串。

 

小提示:

 

         

 

  • 匹配規則會按照它在規則列表中出現的順序進行匹配, 按+鍵可以使一個匹配規則向上移一項,按-鍵可以使一個匹配規則向下移一項。
  • 使用右鍵菜單, 你可以導出一個包含了所有的匹配規則和對應響應字符串的后綴為 .FARX 的文件。
  • 你也可以通過導入  .SAZ or .FARX 文件來創建基於以前創建的規則列表和響應列表.
  • 你可以從會話列表中拖動一個會話到AutoResponder選項卡中來重新演示以前的響應. 你也可以選中一條規則,然后回車這樣就可以來編輯一條規則。
  • 你也可以直接從Windows的資源管理器中拖動一個文件到 AutoResponder選項卡中來為這些文件創建規則和響應。

 

匹配規則:

 

純粹字符串

 

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

 

Demo如下:

 

Rule Matches
* http://www.example.com/Path1/query=example
EXAMPLE http://www.example.com/Path1/query=example
path1/ http://www.example.com/Path1/query=example
query http://www.example.com/Path1/q=Query

 

 

 

跟上面的類似,Fiddler還有一個非字符串匹配的規則:NOT:

 

 

 

Demo如下:下面的都匹配。

 

Rule Matches
NOT:EXAMPLE http://www.test.com/Path1/query=test
NOT:path1/ http://www.example.com/Path2/query=example
NOT:query http://www.example.com/Path1/q

 

Exact匹配:

 

表達式以EXACT:為前綴,此匹配區分字母大小寫

 

Demo如下:

 

Rule Matches
EXACT:http://www.example.com/path http://www.example.com/path
EXACT:http://www.example.com/path http://www.example.com/Path (不匹配- 大小寫不一樣)
EXACT:http://www.example.com/path http://www.example.com/path/q=Query (不匹配- 子字符串不一樣)

 

正則表達式:

 

Fiddler支持以regex:為前綴的正則表達式語法,使用.+匹配一個或多個字符,使用.*匹配0個或多個字符,使用^匹配字符串開始位置,使用$匹配字符串結尾位置。

 

Demo如下:

 

Rule Matches
regex:.+ http://www.example.com/Path1/query=example
regex:.+\.jpg.* http://www.example.com/Path1/query=foo.jpg&bar
http://www.example.com/Path1/query=example.jpg
regex:.+\.jpg$ http://www.example.com/Path1/query=foo.jpg&bar (No Match - improper ending)
http://www.example.com/Path1/query=example.jpg
regex:.+\.(jpg|gif|bmp)$ http://www.example.com/Path1/query=foo.bmp&bar (No Match  - improper ending)
http://www.example.com/Path1/query=example.gif
http://www.example.com/Path1/query=example.Gif  (No Match - mismatched case)
http://www.example.com/Path1/query=example.bmp
regex:(?insx).+\.(jpg|gif|bmp)$ http://www.example.com/Path1/query=foo.bmp&bar (No Match - improper ending)
http://www.example.com/Path1/query=example.gif
http://www.example.com/Path1/query=example.Gif
  
http://www.example.com/Path1/query=example.bmp
   

 

 

 

想要學習更多正則表達式的請看這里here.

 

響應字符串

 

除了簡單的返回文件,AutoResponder選項卡還有更多的用處........

 

 

 

Beyond simply returning files, the AutoResponder can also perform special actions...

 

 

 

Action String Result...
filename 返回文件內容作為消息響應
http://targetURL 返回此URL的內容作為消息響應
*redir:http://targetURL 返回一個跳轉URL,注意,不是一般的URL,一定要確保此URL知道要到哪里去,以便攜帶上相關的Cookie信息。
*bpu 設置一個斷點在發往服務器以前停住此請求Non-final action.
*bpafter 設置一個斷點在接收響應之前停住此請求Non-final action.
*delay:#### 設置在發給服務器之前的延時,以毫秒為單位。Non-final action.
*header:Name=Value 設置請求頭的內容,如果沒有那個請求頭,則新建一個請求頭Name並設置為ValueNon-final action.
*flag:Name=Value  設置Session Flag的內容,如果沒有那個Session Flag,則新建一個Session FlagName並設置為ValueNon-final action.
*CORSPreflightAllow 返回一個響應標志 CORS 是否被允許。.
*reset  使用一個TCP/IP RST 重新設置客戶端的鏈接。
*drop 馬上關閉客戶端鏈接。
*exit 這時候停止處理匹配。

 

如果你的匹配規則使用了正則表達式,那么響應也可以使用正則表達式,更多信息請看這里: Learn more...

 

標志為Non-final action.的請求會匹配多個響應規則,如果一個規則是final action ,那么再找到匹配之后,匹配過程就會結束,對於那條請求來說就不會再匹配其它的規則。

 

延遲響應

 

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

 

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

 

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

 

 

 

 

 

 

 

 

 

 

各字段的詳細說明已經解釋過,這里不再說明。需要注意的是#號列中的圖標,每種圖標代表不同的相應類型,具體的類型包括:

 

 

另外,注意請求的host字段。可以看到有來自多個www.csdn.net的子域名的響應,說明在大型網站的架構中,大多需要多個子域名,這些子域名可能是單獨用於緩存靜態資源的,也可能是專門負責媒體資源的,或者是專門負責數據統計的(如pingback)。

右鍵單擊其中的一條請求。可以選擇的操作有:save(保存請求的報文信息,可以是請求報文,可以是響應報文)。例如,我們保存的一條請求頭信息如下:

 

不僅是單條session,Fiddler還支持保存所有抓取到的session(並支持導入),這對於抓取可疑請求然后保存,並在之后隨時分析這些請求是很有幫助的。

如果想要重新發送某些請求,可以選中這些請求,然后點擊工具欄中的reply.就可以重新發送選中的這些請求。

左鍵點擊單條HTTP請求,可以在右側的tab面板中看到如下信息:

1. Statistic。

關於HTTP請求的性能和其他數據分析:

 

我們可以從中看出一些基本性能數據:如DNS解析的時間消耗是8ms,建立TCP/IP連接的時間消耗是8ms等等信息。

2. Inspectors。

分為上下兩個部分,上半部分是請求頭部分,下半部分是響應頭部分。對於每一部分,提供了多種不同格式查看每個請求和響應的內容。JPG 格式使用 ImageView 就可以看到圖片,HTML/JS/CSS 使用 TextView 可以看到響應的內容。Raw標簽可以查看原始的符合HTTP標准的請求和響應頭。Auth則可以查看授權Proxy-Authorization 和 Authorization的相關信息。Cookies標簽可以看到請求的cookie和響應的set-cookie頭信息。

 

3. AutoResponder

Fiddler比較重要且比較強大的功能之一。可用於攔截某一請求,並重定向到本地的資源,或者使用Fiddler的內置響應。可用於調試服務器端代碼而無需修改服務器端的代碼和配置,因為攔截和重定向后,實際上訪問的是本地的文件或者得到的是Fiddler的內置響應。當勾選allow autoresponser 並設置相應的規則后(本例中的規則是將http://blog.csdn.net/ohmygirl的請求攔截到本地的文件layout.html),如下圖所示

 

然后在瀏覽器中訪問http://blog.csdn.net/ohmygirl,得到的結果實際為:

 

這剛好是本地layout.html的內容,說明請求已經成功被攔截到本地.當然也可以使用Fiddler的內置響應。下圖是Fiddler支持的攔截重定向的方式:

因此,如果要調試服務器的某個腳本文件,可以將該腳本攔截到本地,在本地修改完腳本之后,再修改服務器端的內容,這可以保證,盡量在真實的環境下去調試,從而最大限度的減少bug發生的可能性。

不僅是單個url,Fiddler支持多種url匹配的方式:

I. 字符匹配

如 example可以匹配 http://www.example.com和http://example.com.cn

II. 完全匹配

以EXACT開頭表示完全匹配,如上邊的例子

EXACT:http://blog.csdn.net/ohmygirl

III. 正則表達式匹配

以regex: 開頭,使用正則表達式來匹配URL

如:regex:(?insx).*\.(css|js|php)$  表示匹配所有以css,js,php結尾的請求url

4. Composer。

老版本的fiddler中叫request-builder.顧名思義,可以構建相應的請求,有兩種常用的方式構建請求:

(1)Parsed 輸入請求的url之后executed即可,也可以修改相應的頭信息(如添加常用的accept, host, referrer, cookie,cache-control等頭部)后execute.

這個功能的常見應用是:“刷票”(不是火車票!!),如刷新頁面的訪問量(基於道德和安全原因,如果你真去刷票,刷訪問量,本博客概不負責)

(2)Raw。使用HTTP頭部信息構建http請求。與上類似。不多敘述

5. Filter

Fiddler另一個比較強大的功能。Fiddler提供了多維度的過濾規則,足以滿足日常開發調試的需求。如下圖示:

過濾規則有:

a. host和zone過濾。可以過濾只顯示intranet或則internet的HTTP請求

也可以選擇特定域名的HTTP請求

 

b. client process:可以捕獲指定進程的請求。

這對於調試單個應用的請求很有幫助。

其他更多的設置可以參考fiddler的官方文檔。


免責聲明!

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



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