Fiddler是最強大最好用的Web調試工具之一,它能記錄所有客戶端和服務器的http和https請求,允許你監視,設置斷點,甚至修改輸入輸出數據. 使用Fiddler無論對開發還是測試來說,都有很大的幫助。
閱讀目錄
- Fiddler的基本介紹
- Fiddler的工作原理
- 同類的其它工具
- Fiddler如何捕獲Firefox的會話
- Firefox 中使用Fiddler插件
- Fiddler如何捕獲HTTPS會話
- Fiddler的基本界面
- Fiddler的統計視圖
- QuickExec命令行的使用
- Fiddler中設置斷點修改Request
- Fiddler中設置斷點修改Response
- Fiddler中創建AutoResponder規則
- Fiddler中如何過濾會話
- Fiddler中會話比較功能
- Fiddler中提供的編碼小工具
- Fiddler中查詢會話
- Fiddler中保存會話
- Fiddler的script系統
- 如何在VS調試網站的時候使用Fiddler
- Response 是亂碼的
Fiddler的基本介紹
Fiddler的官方網站: www.fiddler2.com
Fiddler官方網站提供了大量的幫助文檔和視頻教程, 這是學習Fiddler的最好資料。
Fiddler是最強大最好用的Web調試工具之一,它能記錄所有客戶端和服務器的http和https請求,允許你監視,設置斷點,甚至修改輸入輸出數據,Fiddler包含了一個強大的基於事件腳本的子系統,並且能使用.net語言進行擴展
你對HTTP 協議越了解, 你就能越掌握Fiddler的使用方法. 你越使用Fiddler,就越能幫助你了解HTTP協議.
Fiddler無論對開發人員或者測試人員來說,都是非常有用的工具
Fiddler的工作原理
Fiddler 是以代理web服務器的形式工作的,它使用代理地址:127.0.0.1, 端口:8888. 當Fiddler會自動設置代理, 退出的時候它會自動注銷代理,這樣就不會影響別的程序。不過如果Fiddler非正常退出,這時候因為Fiddler沒有自動注銷,會造成網頁無法訪問。解決的辦法是重新啟動下Fiddler.
同類的其它工具
同類的工具有: httpwatch, firebug, wireshark
Fiddler 如何捕獲Firefox的會話
能支持HTTP代理的任意程序的數據包都能被Fiddler嗅探到,Fiddler的運行機制其實就是本機上監聽8888端口的HTTP代理。 Fiddler2啟動的時候默認IE的代理設為了127.0.0.1:8888,而其他瀏覽器是需要手動設置的,所以將Firefox的代理改為127.0.0.1:8888就可以監聽數據了。
Firefox 上通過如下步驟設置代理
點擊: Tools -> Options, 在Options 對話框上點擊Advanced tab - > network tab -> setting.
Firefox 中安裝Fiddler插件
修改Firefox 中的代理比較麻煩, 不用fiddler的時候還要去掉代理。 麻煩
推薦你在firefox中使用fiddler hook 插件, 這樣你非常方便的使用Fiddler獲取firefox中的request 和response
當你安裝fiddler后, 就已經裝好了Fiddler hook插件, 你需要到firefox中去啟用這個插件 打開firefox tools->Add ons -> Extensions 啟動 FiddlerHook
Fiddler如何捕獲HTTPS會話
默認下,Fiddler不會捕獲HTTPS會話,需要你設置下, 打開Fiddler Tool->Fiddler Options->HTTPS tab
選中checkbox, 彈出如下的對話框,點擊"YES"
點擊"Yes" 后,就設置好了
Fiddler的基本界面
看看Fiddler的基本界面
Inspectors tab下有很多查看Request或者Response的消息。 其中Raw Tab可以查看完整的消息,Headers tab 只查看消息中的header. 如下圖
Fiddler的HTTP統計視圖
通過陳列出所有的HTTP通信量,Fiddler可以很容易的向您展示哪些文件生成了您當前請求的頁面。使用Statistics頁簽,用戶可以通過選擇多個會話來得來這幾個會話的總的信息統計,比如多個請求和傳輸的字節數。
選擇第一個請求和最后一個請求,可獲得整個頁面加載所消耗的總體時間。從條形圖表中還可以分別出哪些請求耗時最多,從而對頁面的訪問進行訪問速度優化
QuickExec命令行的使用
Fiddler的左下角有一個命令行工具叫做QuickExec,允許你直接輸入命令。
常見得命令有
help 打開官方的使用頁面介紹,所有的命令都會列出來
cls 清屏 (Ctrl+x 也可以清屏)
select 選擇會話的命令
?.png 用來選擇png后綴的圖片
bpu 截獲request
Fiddler中設置斷點修改Request
[作者:小坦克] Fiddler最強大的功能莫過於設置斷點了,設置好斷點后,你可以修改httpRequest 的任何信息包括host, cookie或者表單中的數據。設置斷點有兩種方法
第一種:打開Fiddler 點擊Rules-> Automatic Breakpoint ->Before Requests(這種方法會中斷所有的會話)
如何消除命令呢? 點擊Rules-> Automatic Breakpoint ->Disabled
第二種: 在命令行中輸入命令: bpu www.baidu.com (這種方法只會中斷www.baidu.com)
如何消除命令呢? 在命令行中輸入命令 bpu
看個實例,模擬博客園的登錄, 在IE中打開博客園的登錄頁面,輸入錯誤的用戶名和密碼,用Fiddler中斷會話,修改成正確的用戶名密碼。這樣就能成功登錄
1. 用IE 打開博客園的登錄界面 http://passport.cnblogs.com/login.aspx 2. 打開Fiddler, 在命令行中輸入bpu http://passport.cnblogs.com/login.aspx 3. 輸入錯誤的用戶名和密碼 點擊登錄 4. Fiddler 能中斷這次會話,選擇被中斷的會話,點擊Inspectors tab下的WebForms tab 修改用戶名密碼,然后點擊Run to Completion 如下圖所示。 5. 結果是正確地登錄了博客園
Fiddler中設置斷點修改Response
當然Fiddler中也能修改Response
第一種:打開Fiddler 點擊Rules-> Automatic Breakpoint ->After Response (這種方法會中斷所有的會話)
如何消除命令呢? 點擊Rules-> Automatic Breakpoint ->Disabled
第二種: 在命令行中輸入命令: bpafter www.baidu.com (這種方法只會中斷www.baidu.com)
如何消除命令呢? 在命令行中輸入命令 bpafter,
具體用法和上節差不多,就不多說了。
Fiddler中創建AutoResponder規則
Fiddler 的AutoResponder tab允許你從本地返回文件,而不用將http request 發送到服務器上。
看個實例. 1. 打開博客園首頁,把博客園的logo圖片保存到本地,並且對圖片做些修改。
2. 打開Fiddler 找到logo圖片的會話, http://static.cnblogs.com/images/logo_2012_lantern_festival.gif, 把這個會話拖到AutoResponer Tab下
3. 選擇Enable automatic reaponses 和Unmatched requests passthrough
4. 在下面的Rule Editor 下面選擇 Find a file... 選擇本地保存的圖片. 最后點擊Save 保存下。
5. 再用IE博客園首頁, 你會看到首頁的圖片用的是本地的。
Fiddler中如何過濾會話
每次使用Fiddler, 打開一個網站,都能在Fiddler中看到幾十個會話,看得眼花繚亂。最好的辦法是過濾掉一些會話,比如過濾掉圖片的會話. Fiddler中有過濾的功能, 在右邊的Filters tab中,里面有很多選項, 稍微研究下,就知道怎么用。
Fiddler中會話比較功能
選中2個會話,右鍵然后點擊Compare,就可以用WinDiff來比較兩個會話的不同了 (當然需要你安裝WinDiff)
Fiddler中提供的編碼小工具
點擊Fiddler 工具欄上的TextWizard, 這個工具可以Encode和Decode string.
Fiddler中查詢會話
用快捷鍵Ctrl+F 打開 Find Sessions的對話框,輸入關鍵字查詢你要的會話。 查詢到的會話會用黃色顯示
Fiddler中保存會話
有些時候我們需要把會話保存下來,以便發給別人或者以后去分析。 保存會話的步驟如下:
選擇你想保存的會話,然后點擊File->Save->Selected Sessions
Fiddler的script系統
Fiddler最復雜的莫過於script系統了 官方的幫助文檔: http://www.fiddler2.com/Fiddler/dev/ScriptSamples.asp
首先先安裝SyntaxView插件,Inspectors tab->Get SyntaxView tab->Download and Install SyntaxView Now... 如下圖
安裝成功后Fiddler 就會多了一個Fiddler Script tab, 如下圖
在里面我們就可以編寫腳本了, 看個實例 讓所有cnblogs的會話都顯示紅色。
把這段腳本放在OnBeforeRequest(oSession: Session) 方法下,並且點擊"Save script"
if (oSession.HostnameIs("www.cnblogs.com")) { oSession["ui-color"] = "red"; }
這樣所有的cnblogs的會話都會顯示紅色
如何在VS調試網站的時候使用Fiddler
我們在用visual stuido 開發ASP.NET網站的時候也需要用Fiddler來分析HTTP, 默認的時候Fiddler是不能嗅探到localhost的網站。不過只要在localhost后面加個點號,Fiddler就能嗅探到。
例如:原本ASP.NET的地址是 http://localhost:2391/Default.aspx, 加個點號后,變成 http://localhost.:2391/Default.aspx 就可以了
第二個辦法就是在hosts文件中加入 127.0.0.1 localsite
如何你訪問http://localsite:端口號 。 這樣Fiddler也能截取到了。
Response 是亂碼的
有時候我們看到Response中的HTML是亂碼的, 這是因為HTML被壓縮了, 我們可以通過兩種方法去解壓縮。
1. 點擊Response Raw上方的"Response is encoded any may need to be decoded before inspection. click here to transform"
2. 選中工具欄中的"Decode"。 這樣會自動解壓縮。
抓包工具Fiddler的使用
Fiddler是一款免費且功能強大的數據包抓取軟件.它通過代理的方式獲取程序http通訊的數據.我們可以利用它來檢測網頁和服務器的交互情況.下面,我們以http://blog.cersp.com/index/1000176.jspx的網址列表的獲取說明一下如何使Fiddler配合火車采集器獲取網址列表,以http://bbs.locoy.com的附件下載為例說明一下cookie的獲取..
Fiddler下載地址:http://www.fiddler2.com/dl/Fiddler2Setup.exe
一.網址列表的獲取
現在我們打開Fiddler,按Ctrl+x,將原來的監控的內容刪除,這樣便於尋找記錄.
我們首先打開個網頁http://blog.cersp.com/index/1000176.jspx,這個頁面在翻頁時我們看不到地址欄里網址有變化,在打開頁面查看源碼時也看不到有關列表的源碼.我們用fiddler監視后,找一個列表中的標題,如"簡單與復雜",使用搜索功能,點菜單 Edit里的 Find Sessions.
注意下邊的顏色是標記找到的記錄的數據,我們點擊按鈕Find Sessions,程序顯示找到了兩條有這個字符的記錄,我們點擊第一個數據,可以看到里邊有我們需要的數據,第二條是評論.在左上角,我們可以看到是該頁面是使用post方式獲取到列表的.
現在我們打開網頁中列表的第二頁,將原來的記錄清空.然后對得到的結果進行對比分析.
可以看到如下結果.默認我們看到的是Header內容,我們看圖中紅圈,點擊Raw,就可以看到發送的數據.
我們點擊view in NotePad ,可以在記事本中打開查看發送的具體數據.
可以看到如下內容.需要注意的是,紅色部分2+1就是程序里要填寫的網址,也就是 http://blog.cersp.com/index/article/getBlogArticlesByUserId.jspx,藍色部分 Pageno=2是表示第二頁.
我們再訪問第三頁列表,可以得到如下結果 ,可以看出,改變的只是一個頁數,所以我們在構造發送的數據時,只需要改變頁碼即可.其它的參數,一個是用戶id,一個是用戶文章數目,可以按需要進行修改.
現在我們看一下如果在采集器里進行設置,一個是選post方式,另一個是填寫網址,最后一個是將頁面部分替換成程序的[分頁].並設置要采集的頁數.
下邊的網址選定區域也可以設置,也可以不設置,和自動獲取網址是一樣的.我們可以看到最后采集到了需要的網址.
規則下載....其它相關的例子,請查看 POST方式獲得網址
二,Cookie的獲取
我們以http://bbs.locoy.com/spider-33617-1-1.html 的附件下載為例子,附件只有登陸以后才可以下載,未登陸前,我們采集時會看到提示登陸的內容.
我們打開fiddler,在瀏覽器里訪問一下該頁面,就可以看到Fiddler所獲取的數據.
注意操作時按以上提示進行點擊,方框里的內容就是cookie信息,注意開頭的cookie:不用復制.對於大多數的系統來說,直接用所有的cookie就可以,dz的有些特殊,你需要只使用帶_sid,_auth部分的cookie即可,也就是圖中選中的部分,我們復制這部分內容,粘貼到采網址部分下部的cookie信息的地方.
然后我們再去測試,可以看到內容,並能下載到模塊.
抓取cookie到些結束,相關規則 下載