【測試工具】http協議調試利器fiddler使用教程

轉自:http協議調試利器fiddler使用教程http://bbs.phpchina.com/thread-207418-1-1.htmlphp

Fiddler真乃神器!它和市面上常見的不少web調試器、http調試器、sniffer都不一樣!它的原理是在瀏覽器(或者其餘使用http協議的進程)和服務器之間作代理角色,這樣全部的通訊都要通過它,儘管sniffer和這個原理是同樣的,但他們工做的網絡層不一樣。html


看上圖,你就明白原理了咯,它以8888端口(多麼吉利的數字呀!)開本地代理服務器,而且支持https!因此,只要你的http通信將代理設置爲本地8888,fiddler都能幫助你截獲數據(最新2.2.0.3以上版本不用你設置,它會自動幫你設置。舊版本能夠到ie→工具→internet選型→鏈接裏設置。其餘瀏覽器相似);另外,說他是神器,除了他具備通常web調試器的全部功能以外,其最最大的一個特色是能夠中途修改http通訊內容。看下圖:web

嗯,就是這樣,提交內容和服務端響應內容均可以被fiddler中斷,修改內容後再次繼續,在ajax通訊的時候,咱們能夠利用這個功能來調試數據,測試bug!方便至極。ajax

其實,一旦運行fiddler,就至關於跑了一個http服務器同樣,你能夠在瀏覽器地址欄輸入http://localhost:8888就能看到它的信息了。正則表達式

下載地址:http://www.fiddler2.com/Fiddler2/version.aspexpress

如今來了解下它的功能。瀏覽器

1.http請求斷點調試緩存

如上圖,是一個網頁的原始請求和響應。如今在規則→自動斷點裏設置「響應後」,點擊提交按鈕,如今請求發出,通過代理髮送到服務器,服務器返回響應數據道代理,此時因爲設置了斷點,響應被掛起,咱們就能在fiddle中修改響應數據,而後提交,此時響應由代理髮送到客戶端,就能看到響應數據了。以下圖所示:服務器

咱們還能夠在請求發送前設置斷點,修改請求頭,fiddler代理將會把修改後的請求發送到服務器,而後讀取服務器響應,中轉並返回響應數據。
這對於調ajax程序特別有用。你能夠中斷httpxml請求並修改請求內容。

網絡

2.自定義響應AutoResponder

利用fiddler還能夠自定義替換響應。這是原始的請求。

設置以下過濾規則:

刷新網頁,響應頁資源已被修改。

咱們還可使用正則,指定一套規則,把符合規則的把請求替換爲咱們從網上抓取的數據包。

首先,咱們能夠把咱們從網絡中抓取的一張圖片保存爲dat數據文件

對應的圖片資源以下:

導出爲dat文件

咱們將其導出爲59_Response.dat,

設置以下過濾規則:

請求規則:regex:(?insx)^http://.*gravatar.*$ #Match HTTPS-delivered GIFs

替換的響應數據:C:\Users\Admin\Desktop\temp\1\59_Response.dat

刷新網頁,效果以下,全部知足規則的響應都被替換:

59_Response.dat文件的內容由http頭和實體數據兩部分組成。

*下面是詳細的過濾規則:

String Literals

Fiddler will match string literals (大小寫不敏感)

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

Exact Match(精確匹配)

Fiddler supports an exact, 大小寫敏感 match syntax for expressions which begin with exact:

Rule

Matches

EXACT:http://www.example.com/path

http://www.example.com/path

EXACT:http://www.example.com/path

http://www.example.com/Path (No Match - mismatched case)

EXACT:http://www.example.com/path

http://www.example.com/path/q=Query (No Match - substring different)

Regular Expressions(正則表達式)

Fiddler supports regular expression syntax for expressions which begin with regex:

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

都是簡單的正則表達式,具體含義就不解釋了。

3.頁面請求統計

在左側選中要統計的請求,點擊右側統計欄就能看到統計狀況了,點擊下端的show chart,還能以扇形圖的方式直觀地展現出來各類請求類型的大小。同時還能查看緩存以及一些請求的狀態碼,如發現404,那麼請求的文件就是不存在了,應該檢查路徑了。通常這類狀態都會以醒目的圖標標出。


你還能夠禁止緩存,這在瀏覽器調試時會頗有用。你還能夠自定義UA頭,如我用網站訪問糗事百科,則顯示的是普通網頁,而自定義UA爲IPAD後,訪問後返回的將是至關於手機訪問產生的頁面。(這一點,opera瀏覽器作的就很到位,能夠用opera輕易地來訪問wap網頁)

效果以下:

你還能夠在配置文件裏添加新的規則,如iphone,諾基亞老爺機等。

這裏有各種session前面請求圖標所表明的含義。

 

Request is being sent to the server

 

Downloading response from server

 

Request is paused at a breakpoint.

 

Responseis paused at a breakpoint.

 

Request used HTTP HEAD method; response should have no body

 

Request used HTTP CONNECT method; this establishes a tunnel used for HTTPS traffic

 

Response was HTML

 

Response was an image

 

Response was a script

 

Response was Cascading Style Sheet

 

Response was XML

 

Generic Response successful

 

Response was HTTP/300,301,302,303 or 307 redirect

 

Response was HTTP/304: Use cached version

 

Response was a request for client credentials

 

Response was a server error

 

Session was aborted by the client, Fiddler, or the Server.

4.使用技巧與答疑

你能夠在左側的命令框輸入命令,執行某些操做。

?Text 高亮url中含有此字符串的請求

>size Select sessions where response size is greater than sizebytes.

<size Select sessions where response size is less than sizebytes.

=status 狀態碼
=method 請求方式

@host 包含此主機的請求

bold 標記含有某字符串的請求,如bold /a.jsp

bpafter Break any response where the RequestURI contains the specified string.

bps Break any response where the status code matches.相似的還有bpv(method)

cls or clear :clear the session list.

Select:Select any session where the response Content-Type header contains the specified string.select image

更多命令能夠參照官方文檔,這些命令也是能夠自定義的。

你還能夠把session直接拖到request build裏構造請求,也能夠徹底手工構造。


這樣,就能夠執行咱們自行構造的請求了。更多細節能夠參考HTTP RFC文檔。

    另外,fiddler的可擴展性很強,可以用jscript來擴展它,實現自定義功能。

若是你的fiddler忽然不抓包了,多是你瀏覽器代理的問題(fiddler沒能成功幫你自動配置或者配置後又被你修改了)那看看tools-fiddler options-connections,看一下fidder listens on port的值是否是80,若是不是80而是8888的話,改回來。或者手動配置下代理。

5.相關資源:

http://www.fiddler2.com/fiddler/help/

http://blogs.msdn.com/b/fiddler/

http://blog.csdn.net/powerwolf/archive/2009/06/03/4237735.aspx

相關文章
相關標籤/搜索