天天看點

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

一.為什麼是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。

二.什麼是Fiddler?

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

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

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

三.Fiddler使用界面簡介

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

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

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

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

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

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

200—成功。請求已發送且響應已成功接收。

400—壞請求。當目的伺服器接收到請求但不了解細節是以無法處理時發生。

404—頁面找不到。如果目标API已移動或已更新但未保留向後相容性時發生。

500—内部伺服器錯誤。伺服器端發生了某種緻命錯誤,且錯誤并被服務提供商捕獲。

4.詳情和資料統計面闆。針對每條http請求的具體統計(例如發送/接受位元組數,發送/接收時間,還有粗略統計世界各地通路該伺服器所花費的時間)和資料包分析。

如inspector面闆下,提供headers、textview、hexview,Raw等多種方式檢視單條http請求的請求封包的資訊:

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

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

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

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

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

Filter标簽則可以設定Fiddler的過濾規則,來達到過濾http請求的目的。

最簡單如:過濾内網http請求而隻抓取internet的http請求,或則過濾相應域名的http請求。Fiddler的過濾器非常強大,可以過濾特定http狀态碼的請求,可以過濾特定請求類型的http請求(如css請求,image請求,js請求等),可以過濾請求封包大于或則小于指定大小(byte)的請求:(過多的過濾器規則需要一步一步去挖掘)

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

四.使用Fiddler做抓包分析(抓取HTTP請求)

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

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

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

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

200—成功。請求已發送且響應已成功接收。

400—壞請求。當目的伺服器接收到請求但不了解細節是以無法處理時發生。

404—頁面找不到。如果目标API已移動或已更新但未保留向後相容性時發生。

500—内部伺服器錯誤。伺服器端發生了某種緻命錯誤,且錯誤并被服務提供商捕獲。

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

右鍵單擊其中的一條請求。可以選擇的操作有:save(儲存請求的封包資訊,可以是請求封包,可以是響應封包)。例如,我們儲存的一條請求頭資訊如下:

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

不僅是單條session,Fiddler還支援儲存所有抓取到的session(并支援導入),這對于抓取可疑請求然後儲存,并在之後随時分析這些請求是很有幫助的。

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

左鍵點選單條HTTP請求,可以在右側的tab面闆中看到如下資訊:

1. Statistic。

關于HTTP請求的性能和其他資料分析:

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

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

2. Inspectors。

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

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

3. AutoResponder

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

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

然後在浏覽器中通路http://blog.csdn.net/ohmygirl,得到的結果實際為:

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

這剛好是本地layout.html的内容,說明請求已經成功被攔截到本地.當然也可以使用Fiddler的内置響應。

下圖是Fiddler支援的攔截重定向的方式:

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.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提供了多元度的過濾規則,足以滿足日常開發調試的需求。如下圖示:

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

過濾規則有:

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

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

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

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

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

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

五.Fiddler指令行和HTTP斷點調試

1). Fiddler内置指令。

在web session(與我們通常所說的session不是同一個概念,這裡的每條HTTP請求都成為一個session)界面中可以看到Fiddler抓取的所有HTTP請求.而為了更加友善的管理所有的session, Fiddler提供了一系列内置的函數用于篩選和操作這些session(習慣指令行操作Linux的童鞋應該可以感受到這會有多麼友善).

輸入指令的位置在web session管理面闆的下方(通過快捷鍵alt+q可以focus到指令行).

Fiddler内置的指令有如下幾種:

1. select指令。

選擇所有相應類型(指content-type)為指定類型的HTTP請求,如選擇圖檔,使用指令select image.而select css則可以選擇所有相應類型為css的請求,select html則選擇所有響應為HTML的請求(怎麼樣,是不是跟SQL語句很像?)。如圖是執行select image之後的結果:

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

2. allbut指令。

allbut指令用于選擇所有響應類型不是給定類型的HTTP請求。如allbut image用于選擇所有相應類型不是圖檔的session(HTTP請求),該指令還有一個别名keeponly.需要注意的是,keeponly和allbut指令是将不是該類型的session删除,留下的都是該類型的響應。是以,如果你執行allbut xxxx(不存在的類型),實際上類似與執行cls指令(删除所有的session, ctrl+x快捷鍵也是這個作用)

3. ?text指令

選擇所有 URL 比對問号後的字元的全部 session

4. >size 和 <size指令

選擇響應大小大于某個大小(機關是b)或者小于某個大小的所有HTTP請求

5. =status指令

選擇響應狀态等于給定狀态的所有HTTP請求。

例如,選擇所有狀态為200的HTTP請求:=200

6. @host指令

選擇包含指定 HOST 的全部 HTTP請求。例如:@csdn.NET

選擇所有host包含csdn.net的請求

7. Bpafter, Bps, bpv, bpm, bpu

這幾個指令主要用于批量設定斷點

Bpafter xxx: 中斷 URL 包含指定字元的全部 session 響應

Bps xxx: 中斷 HTTP 響應狀态為指定字元的全部 session 響應。

Bpv xxx: 中斷指定請求方式的全部 session 響應

Bpm xxx: 中斷指定請求方式的全部 session 響應。等同于bpv xxx

Bpu xxx:與bpafter類似。

當這些指令沒有加參數時,會清空所有設定了斷點的HTTP請求。

 更多的其他指令可以參考Fiddler官網手冊。

2). 使用Fiddler進行HTTP斷點調試。

這是Fiddler又一強大和實用的工具之一。通過設定斷點,Fiddler可以做到:

1. 修改HTTP請求頭資訊。例如修改請求頭的UA, Cookie, Referer 資訊,通過“僞造”相應資訊達到達到相應的目的(調試,模拟使用者真實請求等)。

2. 構造請求資料,突破表單的限制,随意送出資料。避免頁面js和表單限制影響相關調試。

3. 攔截響應資料,修改響應實體。

為什麼以上方法是重要的?假設js前端程式員和伺服器程式員是分工合作的,js程式員想要調試Ajax請求的功能,這樣便不必等待伺服器端程式員開發好所有接口之後再開始開發js端的ajax請求功能,因為通過“模拟”真實的伺服器端的響應,便可以保證功能的正确性,而伺服器端開發程式員,隻要保證最終的響應是符合規定的即可。這大大簡化了程式開發的效率,當然也降低了不同業務線程式員聯調的難度。

有兩種方法設定斷點:

1.fiddler菜單欄->rules->automatic Breakpoints->選擇斷點方式,這種方式下設定的斷點會對之後的所有HTTP請求有效。

 有兩個斷點位置:

                     a. before response。也就是發送請求之後,但是Fiddler代理中轉之前,這時可以修改請求的資料。

                     b.after response。也就是伺服器響應之後,但是在Fiddler将響應中轉給用戶端之前。這時可以修改響應的結果。

2.指令行下輸入。Bpafter xxx或者bpv,bpu,bpm等設定斷點。這種斷點隻針對特定類型的請求。

我們以本地的web項目為例,示範如何簡單的設定HTTP斷點:

1.首先設定Firefox的代理,使之可以抓取所有的HTTP請求(localhost的請求,也可以在filter中設定隻抓取intranet請求),設定如下圖所示:

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

2. 這時用web打開本地的項目。頁面的内容為:

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

4. 設定響應後斷點(after response breakpoint),可以通過指令行設定:bpafter localhost。鍵入回車之後,web再次通路檔案,通過Fiddler的web session界面可以看到,請求已經被挂起來了,而web浏覽器也一直處于加載的狀态。觀察右側的inspector面闆下,也出現了新的東西:

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

這時我們就可以修改響應的資訊了。修改過程為:

切換到textView子面闆,選擇需要修改的部分,然後點選 “run to complete“,便可回送修改後的響應。假設我們修改後的内容如下:

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

點選執行後,打開剛剛的web界面。可以看到的頁面的變化。

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

可見,頁面的響應已經有了相應的變化。這就是響應後斷點。當然實際應用中,斷點的設定和響應的修改會比這複雜的多,這裡隻是基本的示例。

終止斷點的方式有:

1. 在inspector界面點選“run complete“即會終止本次HTTP請求的斷點。

2. 輸入Go指令,也會使得目前的請求跳過斷點。

3. 在rules->auto breakpoint中disabled斷點即可。

總之,Fiddler的斷點功能非常強大,關于它的進一步學習和應用,需要一個不斷積累和摸索的過程。

六.Fiddler對手機抓包

第一步:對Fiddler設定為允許遠端連接配接。

找到Tools->Fiddler Options->Connections,将Allow remote computer to connect 選中,點選OK,然後重新開機Fiddler。

  如下圖:

Fiddler是位于用戶端和伺服器端的HTTP代理(目前最常用的http抓包工具之一) 一.為什麼是Fiddler?二.什麼是Fiddler?三.Fiddler使用界面簡介四.使用Fiddler做抓包分析(抓取HTTP請求)五.Fiddler指令行和HTTP斷點調試六.Fiddler對手機抓包引用:

第二步:修改手機連接配接網絡為手動代理。

主機名設為電腦本地IP位址,端口設為:8888

引用:

fiddler使用方法

1、開發fiddler之後預設情況下就是抓包狀态,可以檢視界面左下角顯示capturing,如果沒有顯示,單擊此處可以開始抓包。 

2、如果通路的網站是https網站,則需要通過Tools - Fiddler Options - Https - Decrypt Http Traffic來設定将https解密 

3、通過浏覽器發送請求。(在windows平台上此處并不限于浏覽器,隻要程式是通過winhttp或者wininet發送請求都可以被監測到) 

4、在收到回複後回到fiddler檢視抓包内容。

關鍵字查找

1、通過Ctr+F調出查找對話框,在全局查找關鍵字 

2、在選中特定請求之後可以在Inspecters - Raw中分别在特定的請求或回複中查找内容 

3、如果回複被壓縮過,通過單擊提示按鈕可以将内容解壓縮

自動回複

請求自動回複應用也比較廣,例如将其他機器抓包倒入自動回複,然後再本機回放重制問題;或者動态調試過程中不希望有些請求去調用伺服器,而在自動回複中配制或者進行相應的更改直接檢視效果。 

1、切換到自動回複(AutoResponder)标簽頁 

2、選中Enable automatic responses 

3、點選Import按鈕導入抓包的saz檔案 

4、可以通過預設Url或者通過Rule Editor來修改請求比對規則

斷點設定

1、通過Rules - Automatic Breakpoints - Before Requests/After Response設定斷點。

2、斷點在請求或者回複受到後觸發,可以動态的修改請求或者回複來進行不同的測試。

本文轉自:http://blog.csdn.net/ohmygirl/article/details/17846199