Fiddler抓取HTTP請求。

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

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

 主要分爲6大部分:html

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

 

 

 

四、查看HTTP統計視圖:正則表達式

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

五、QuickExec命令行的使用:瀏覽器

     QuickExec命令行是會話列表下邊的黑色區域,你能夠在裏面輸入命令,回車以後便可執行你的命令,很是方便,在這裏爲你們介紹幾個經常使用的命令:緩存

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

      cls   清屏  (Ctrl+x 也能夠清屏)服務器

      select  選擇會話的命令

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

      bpu  截獲request

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

   主要有兩種方法:

一、點擊【設置】菜單—【自動斷點】—【響應以後】,這種方法是中斷全部的會話,若是你想消除斷點的話,就點擊【設置】—【自動斷點】—【禁用】就能夠了。

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

   七、如何在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的官方文檔。

相關文章
相關標籤/搜索