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


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

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


看上圖,你就明白原理了咯,它以8888端口(多么吉利的數字呀!)開本地代理服務器,並且支持https!所以,只要你的http通訊將代理設置為本地8888,fiddler都能幫助你截獲數據(最新2.2.0.3以上版本不用你設置,它會自動幫你設置。舊版本可以到ie→工具→internet選型→連接里設置。其他瀏覽器類似);另外,說他是神器,除了他具有一般web調試器的所有功能之外,其最最大的一個特點是可以中途修改http通信內容。看下圖:

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

其實,一旦運行fiddler,就相當於跑了一個http服務器一樣,你可以在瀏覽器地址欄輸入http://localhost:8888就能看到它的信息了。

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

現在來了解下它的功能。

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


免責聲明!

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



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