1. 程式人生 > >介面測試工具之抓包工具介紹

介面測試工具之抓包工具介紹

1、Chrome  F12

2、火狐外掛Firebug F12

3、Fiddler工具

本文主要介紹Fiddler工具

1.為什麼是Fiddler?

抓包工具有很多,小到最常用的web除錯工具firebug,達到通用的強大的抓包工具wireshark.為什麼使用fiddler?原因如下:

a.Firebug雖然可以抓包,但是對於分析http請求的詳細資訊,不夠強大。模擬http請求的功能也不夠,且firebug常常是需要“無重新整理修改”,如果重新整理了頁面,所有的修改都不會儲存。

b.Wireshark是通用的抓包工具,但是比較龐大,對於只需要抓取http請求的應用來說,似乎有些大材小用。

c.Httpwatch也是比較常用的http抓包工具,但是隻支援IE和firefox瀏覽器(其他瀏覽器可能會有相應的外掛),對於想要除錯chrome瀏覽器的http請求,似乎稍顯無力,而Fiddler2 是一個使用本地 127.0.0.1:8888 的 HTTP 代理,任何能夠設定 HTTP 代理為 127.0.0.1:8888 的瀏覽器和應用程式都可以使用 Fiddler。

2.什麼是Fiddler?

Fiddler是位於客戶端和伺服器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能夠記錄客戶端和伺服器之間的所有 HTTP請求,可以針對特定的HTTP請求,分析請求資料、設定斷點、除錯web應用、修改請求的資料,甚至可以修改伺服器返回的資料,功能非常強大,是web除錯的利器。

既然是代理,也就是說:客戶端的所有請求都要先經過Fiddler,然後轉發到相應的伺服器,反之,伺服器端的所有響應,也都會先經過Fiddler然後傳送到客戶端,基於這個原因,Fiddler支援所有可以設定http代理為127.0.0.1:8888的瀏覽器和應用程式。使用了Fiddler之後,web客戶端和伺服器的請求如下所示:

Fiddler 作為系統代理,當啟用 Fiddler 時,IE 的PROXY 設定會變成 127.0.0.1:8888,因此如果你的瀏覽器在開啟fiddler之後沒有設定相應的代理,則fiddler是無法捕獲到HTTP請求的。如下是啟動Fiddler之後,IE瀏覽器的代理設定:


以Firefox為例,預設情況下,firefox是沒有啟用代理的(如果你安裝了proxy等代理工具或外掛,是另外一種情況),在firefox中配置http代理的步驟如下:

工具->選項->高階->網路->設定  。並配置相應的代理如下:


就可以使用Fiddler抓取Firefox的HTTP請求了。

3.Fiddler使用介面簡介

Fiddler主介面的佈局如下:

主介面中主要包括四個常用的塊:

1.Fiddler的選單欄,上圖綠色部分。包括捕獲http請求,停止捕獲請求,儲存http請求,載入本地session、設定捕獲規則等功能。

2.Fiddler的工具欄,上圖紅色部分。包括Fiddler針對當前view的操作(暫停,清除session,decode模式、清除快取等)。

3.web Session面板,上圖黃色區域,主要是Fiddler抓取到的每條http請求(每一條稱為一個session),主要包含了請求的url,協議,狀態碼,body等資訊,詳細的欄位含義如下圖所示:

4.詳情和資料統計面板。針對每條http請求的具體統計(例如傳送/接受位元組數,傳送/接收時間,還有粗略統計世界各地訪問該伺服器所花費的時間)和資料包分析。如inspector面板下,提供headers、textview、hexview,Raw等多種方式檢視單條http請求的請求報文的資訊:


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

 


composer面板下,則可以模擬向相應的伺服器傳送資料的過程(不錯,這就是灌水機器人的基本原理,也可以是部分http flood的一種方式)。

也可以貼上一次請求的raw http headers,達到模擬請求的目的:


Filter標籤則可以設定Fiddler的過濾規則,來達到過濾http請求的目的。最簡單如:過濾內網http請求而只抓取internethttp請求,或則過濾相應域名的http請求。Fiddler的過濾器非常強大,可以過濾特定http狀態碼的請求,可以過濾特定請求型別的http請求(如css請求,image請求,js請求等),可以過濾請求報文大於或則小於指定大小(byte)的請求:


5、

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

 

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

 

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


因此,如果要除錯伺服器的某個指令碼檔案,可以將該指令碼攔截到本地,在本地修改完指令碼之後,再修改伺服器端的內容,這可以保證,儘量在真實的環境下去除錯,從而最大限度的減少bug發生的可能性。

不僅是單個urlFiddler支援多種url匹配的方式:

I. 字元匹配

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

II. 完全匹配

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

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

III. 正則表示式匹配

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

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