WEB/HTTP 調試利器 Fiddler 的一些技巧分享

jopen 11年前發布 | 154K 次閱讀 Fiddler 程序調試

1、原理簡介:

Fiddler 是目前最強大最好用的 Web 調試工具之一,它能記錄所有客戶端和服務器的http和https請求, 允許你監視,設置 CGI 請求的斷點,甚至修改輸入輸出數據。同類的工具還有httpwatch,firebug,wireshark,google審查元素。與這些基于網頁瀏覽 器的工具不同,fiddler是一個富客戶端桌面工具,不僅能監聽瀏覽器對網頁的請求和對瀏覽器的響應(http和https請求), 而且可以監聽其他程序(比如java桌面應用)的http請求(當然需要額外的設置,在此不贅述)。另外,值得一提的是,即便在瀏覽器的調試中,它也能勝 任其他工具,比如IE瀏覽器,當我們需要彈出一個模式對話框(modalDialog)時,這些瀏覽器監聽插件就派不上用場了,還得fiddler出場。

fiddler 和常見的底層抓包(網卡) 工具不一樣 wincap、wireshark),它是在 web server 和 web browser 之間搭了一層 proxy,所有的請求都會經過它,如下圖所示:

 WEB/HTTP 調試利器 Fiddler 的一些技巧分享

    fiddler在客戶瀏覽器及web服務器之間充當了一個請求及響應的代理角色,它會在本地建立一個默認代理服務,端口為8888,為此我們訪問一下此端口,可見如下效果:

 WEB/HTTP 調試利器 Fiddler 的一些技巧分享

2、一些常用技巧介紹:

(1)Fiddler中設置斷點修改Request

第一種:打開Fiddler 點擊Rules-> Automatic Breakpoint  ->Before Requests(這種方法會中斷所有的會話)
如何消除命令呢?  點擊Rules-> Automatic Breakpoint  ->Disabled
第二種:  在命令行中輸入命令:  bpu www.baidu.com   (這種方法只會中斷www.baidu.com)
如何消除命令呢?  在命令行中輸入命令 bpu

(2)Fiddler中設置斷點修改Response

第一種:打開Fiddler 點擊Rules-> Automatic Breakpoint  ->After Response  (這種方法會中斷所有的會話)
如何消除命令呢?  點擊Rules-> Automatic Breakpoint  ->Disabled
第二種:  在命令行中輸入命令:  bpafter www.baidu.com   (這種方法只會中斷www.baidu.com)
如何消除命令呢?  在命令行中輸入命令 bpafter,

(3)自動重定向 AutoResponder 到本地文件

創建重定向規則,例如將目標請求是這個js的HTTP請求重定向到本地文件

請參考阿里 UED 的這篇:使用Fiddler提高前端工作效率 (實例篇)

http://www.aliued.cn/2010/04/25/use-fiddler-to-improve-efficiency-of-front-development-example.html

(4)過濾會話 session list filter:

比如你可能在debug某些網頁時,會遇到上百個請求,看的你眼花繚亂,這是你可以啟用 fiddler 強大的過濾機制:

 WEB/HTTP 調試利器 Fiddler 的一些技巧分享

(5)請求構建器(Request Builder)、對兩個數據流進行比較

(6)文本編碼和解碼:開啟Tools -> Text Encode/Decode

(7)模擬user-agent:Rules->Customize Rules、模擬慢速網絡

(8)fiddler 打印 cgi log:

       http://my.oschina.net/leejun2005/blog/65259

(9)fiddler-使用技巧:

       http://vdisk.weibo.com/s/CcitC7ClCn_vr

       http://www.slideshare.net/bencalie/fiddler-7859272

(10)FiddlerScript:

         http://fiddler2.com/blog/blog/2013/07/15/understanding-fiddlerscript

(11)Filters Reference:

          http://fiddler2.com/documentation/KnowledgeBase/Filters

(12)Add Columns to the Web Sessions List:

          可以看上圖的藍色方框就是自定義列

         http://fiddler2.com/documentation/KnowledgeBase/FiddlerScript/AddColumns

3、注意的問題及解決方法

(1)chrome和firefox瀏覽器無法被監聽

fiddler安裝之后,默認會在IE瀏覽器中安裝一個fiddler的插件,所以它對IE及國內基于IE內核的各類瀏覽器都能實現監聽,但其他內核的瀏覽器無法被監聽。
解決辦法:禁用chrome和firefox中具有代理 功能的插件,比如我的chrome安裝了switchSharp,禁用它或選擇“使用系統代理設置”,或在switchSharp中新配置一個代理項(比 如名為fiddler,用于指向代理127.0.0.1,端口8888,如下圖),即可實現監聽。

 WEB/HTTP 調試利器 Fiddler 的一些技巧分享

(2)無法代理本地web服務器的訪問請求

使用fiddler的時候,我們更多的是基于本地程序的調試,可惜fiddler捕捉不了本地(localhost或127.0.0.1)的http請求。難道fiddler就束手無策了嗎?當然不是。
一般我們訪問安裝在本地的服務器程序時,使用的localhost或127.0.0.1,默認會繞過代理,直接訪問目標服務器,通過fiddler特有的請求方式,可以使本地請求及響應都被fiddler攔截。

 WEB/HTTP 調試利器 Fiddler 的一些技巧分享

方法一:在localhost后增加.fiddler
比如請求http://localhost:8080改為http://localhost.fiddler:8080即可
方法二:更簡單,在localhost或127.0.0.1后增加一個點即可
比如http://localhost.:8080

 WEB/HTTP 調試利器 Fiddler 的一些技巧分享

具體請參考:http://www.ichatter.cn/2013/06/19/666/

(3)Fiddler不能監聽Java HttpURLConnection請求,請看:

http://www.cnblogs.com/tt-0411/archive/2012/03/18/2404355.html

http://stackoverflow.com/questions/8549749/how-to-capture-https-with-fiddler-in-java

4、其它

為什么想來總結一下呢,是因為最近有個測試需 求,需要檢測某個網頁指定的 url 請求個數,測試的同學還為此專門用  JPCAP 開發了一個系統來監聽指定的網卡,抓包、解包,分析請求的數據包,然后得出指定 url 的個數。感覺這個有點大材小用了,呵呵。因為這個 fiddler 就已經可以搞定了,然后 ctrl - a、ctrl - c 即可滿足需求了,只是沒有完全自動化而已,呵呵。

最后題外話一下有關 JPCAP 的東西

       眾所周知,JAVA語言雖然在TCP/UDP傳輸方面給予了良好的定義,但對于網絡層以下的控制,卻是無能為力的。JPCAP擴展包彌補了這一點。
        JPCAP實際上并非一個真正去實現對數據鏈路層的控制,而是一個中間件,JPCAP調用wincap/libpcap,而給JAVA語言提供一個公 共的接口,從而實現了平臺無關性。在官方網站上聲明,JPCAP支持FreeBSD 3.x, Linux RedHat 6.1, Fedora Core 4, Solaris, and Microsoft Windows 2000/XP等系統。JPCAP的整個結構大體上跟wincap/libpcap是很相像的,例如NetworkInterface類對應wincap 的typedef struct _ADAPTERADAPTER,getDeviceList()對應pcap_findalldevs()等等。 使用 JPCAP 實現監聽利用的是所謂的“ARP欺騙”技術。具體請參考:

http://fulong258.blog.163.com/blog/static/17895044200801145924745/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!