參考鏈接:http://blog.csdn.net/ohmygirl/article/details/17849983/
http://www.cnblogs.com/kingwolf_JavaScript/archive/2012/11/07/Fiddler_config_cols.html
主要分為6大部分:
菜單欄,工具欄,會話列別,QuickExec命令行的使用,HttpRequest顯示欄 HttpResponse顯示欄
4、查看HTTP統計視圖:
通常fiddler會話列表中會顯示捕獲的所有的http通信量,並以列表的形式展示出來,點擊你想查看的一個或者多個會話,再點擊軟件右邊的【Statustics】菜單,你就可以很輕松的查看到請求數、發送字節數等信息。如果你選擇第一個請求和最后一個請求,還可以獲得頁面加載所消耗的總體時間,還可以從圖表中分辯出那些請求耗時最多,從而可以對頁面的訪問速度進行優化。
5、QuickExec命令行的使用:
QuickExec命令行是會話列表下邊的黑色區域,你可以在里面輸入命令,回車之后即可執行你的命令,非常方便,在這里為大家介紹幾個常用的命令:
help 打開官方的使用頁面介紹,所有的命令都會列出來
cls 清屏 (Ctrl+x 也可以清屏)
select 選擇會話的命令
?.png 用來選擇png后綴的圖片
bpu 截獲request
6、如何在fiddler中設置斷點修改Response:
主要有兩種方法:
1、點擊【設置】菜單—【自動斷點】—【響應之后】,這種方法是中斷所有的會話,如果你想消除斷點的話,就點擊【設置】—【自動斷點】—【禁用】就可以了。
2、在QuickExec命令行中輸入:"bpuafter 網址/會話名",這種方法是中斷某一具體的會話,如果想消除命令的話,在命令行中輸入"bpuafter"。
7、如何在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的官方文檔。