Web開發利器-Fiddler簡介

1 什麼是Fiddler?

什麼是Fiddler

Fiddler是一個http調試代理,以代理服務器的方式,監聽系統的Http網絡數據流動,
Fiddler可以也可以讓你檢查所有的http通訊,設置斷點,以及Fiddle所有的“進出”的數據。

Fiddler還包含一個簡單卻功能強大的基於JScript .NET 事件腳本子系統,它可以支持衆多的http調試任務。
你是不是曾經疑惑過你的web程序和IE是如何交互的?你是不是遇到過一些奇怪的而你又無法解決的性能瓶頸?
你是不是對那些發送給服務器端的cookie和那些你下載下來的被標記爲可緩存的內容感到好奇?
無論你是從事什麼開發,哪種語言,只要你想更深入的瞭解HTTP,這個工具就值得你去了解,它對前端開發工作是很有價值的。

Fiddler官方網站及下載可以在[http://www.fiddler2.com/fiddler2/]找到,安裝過程很簡單,這裏就不介紹了。
同樣,Fiddler支持插件擴展,常見插件可以在[http://fiddler2.com/add-on]找到。下面,簡單介紹Fiddler的功能和常見應用場景。

2 Fiddler界面及功能介紹

Fiddler界面及功能介紹

Fiddler整個界面佈局如上所示,下面再簡單介紹一些特殊的概念:

代理模式,支持緩存模式和流模式:

  • 緩衝模式(Buffering Mode Fiddler直到HTTP響應完成時纔將數據返回給應用程序。
    可以控制響應,修改響應數據。但是時序圖有時候會出現異常。
  • 流模式(Streaming Mode): Fiddler 會即時將HTTP響應的數據返回給應用程序。
    更接近真實瀏覽器的性能。時序圖更準確。但是不能控制響應。

斷點類型,支持請求斷點和響應斷點:

  • 請求斷點: 在向目標服務器發送請求前截獲。
  • 響應斷點: 在將結果返回到應用程序前截獲。此時如果使用的是流模式,則此斷點類型將失效。

3 常見案例介紹

快速定位問題頁面

有些複雜頁面,具有多層嵌套頁面或者大量Ajax交互,甚至於模態窗口等,都可能讓你無法定位請求路徑、問題所在頁面等。
藉助於Fiddler的請求會話查詢功能,可以讓你一攬全局,無需逐個頁面進行查找。

第一步:使用Ctrl+X清空會話列表,再刷新頁面

清空會話列表

第二步:使用Ctrl+F彈出搜索框,輸入關鍵字進行查詢

彈出搜索框

第三步:參看具體會話縮小定位範圍

縮小定位範圍

第四步: 定位到具體請求,進行下一步處理

接下來可以考慮使用AutoResponse進行快速修復驗證,或者根據請求路徑反查後臺邏輯。

使用AutoResponse快速修復驗證

在日常開發工作中,有時侯會發現測試環境中某個html/css/javascript文件有問題。
我們利用Fiddler可以修改HTTP數據的特性,非常方便的定位問題並進行驗證。

第一步:使用Fiddler查看頁面的數據流列表,找到js文件保存到本地

保存到本地

第二步:創建重定向規則,使用本地文件

使用本地文件

第三步:刷新頁面,如果看到灰色背景的請求會話,就表示生效了

刷新頁面

第四步:修改本地文件,進行測試

修改本地文件之後,重新刷新頁面,就可以看到修改後的效果了。
這種調試方式不需要發佈到線上再驗證,避免了修改不成功、對用戶造成影響的風險,
而且不需要搭建複雜的開發服務器等開發環境,非常適合快速web調試。

使用Composer模擬報文發送

有時候在做一些長流程頁面、Web服務接口調試時,爲了避免修改後重新發起調用的時間過長,可以通過Composer構造請求報文進行快速測試。
等接口調通之後再進行集成測試,可以有效的提高開發和測試的效率。

第一步:拖拽相應的請求會話到Composer頁面,會自動生成請求報文

自動生成請求報文

第二步:修改請求報文,然後按Execute進行發送

例如,我去掉Cookie中的JESSIONID,重新發送可以看到多了兩次請求會話信息。

修改請求報文

第三步:檢查響應報文,驗證結果

例如: 我去掉Cookie中的JESSIONID,應該會被跳轉到登錄頁面

驗證結果

除了用來做功能快速調試之外,還可以用來做一些安全方面的測試工作,
例如構造一些xss注入、SQL注入報文,看看應用能否妥善處理。

觀察頁面性能

大多數情況下,一個頁面會有好幾個請求,除了html頁面,還有js/css/圖片等。
但是IE等瀏覽器不能很方便的觀察到頁面加載的情況,例如每個請求消耗的時間等。
如果使用Fiddler的話,可以使用Statistic視圖和Timeline視圖,觀察頁面加載情況,便於定位頁面性能瓶頸。

第一步:選擇一個或多個請求,根據Statistic視圖查看統計時間

查看統計時間

第二步: 選擇一個或多個請求,根據Timeline視圖查看加載流程

查看加載流程

模擬特殊場景

例如在廣東XX項目中,各地市使用的域名是不一樣的,有些邏輯根據域名來進行特殊處理。爲了模擬這種場景,可以考慮修改本地hosts文件。
不過修改hosts需要重啓瀏覽器,比較麻煩。使用Fiddler的hosts設置功能,就能很方便的模擬。

第一步:選擇Tools->HOSTS功能,設置相應的域名映射

設置相應的域名映射

第二步:直接使用域名訪問,驗證功能

驗證功能

Fiddler提供大量的規則允許你模擬各類場景,你甚至可以自定義規則,值得大家深入探討,多實踐多思考。例如:

  • 通過GZIP壓縮,測試性能
  • 模擬Agent測試,查看服務端是否對不同客戶端定製響應
  • 模擬慢速網絡,測試頁面的容錯性
  • 禁用緩存,方便調試一些靜態文件或測試服務端響應情況
  • 根據一些場景自定義規則

模擬各類場景

4 總結

本文簡單介紹了Fiddler的常見應用場景。目前,Fiddler在我們項目的團隊中廣泛使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章