簡介:
Fiddler是一個http協議調試代理工具,它能夠記錄并檢查所有你的電腦和互聯網之間的http通訊,設置斷點,查看所有的“進出”Fiddler的數據(指cookie,html,js,css等文件,這些都可以讓你胡亂修改的意思)。
Fiddler 要比其他的網絡調試器要更加簡單,因為它不僅僅暴露http通訊還提供了一個用戶友好的格式。
Fiddler原理示意圖
?????? 啟動fiddler,我們就會看到該軟件的主界面,軟件窗口大體可以分為六大部分:菜單欄、工具欄、會話列表、命令行工具欄、HTTP Request顯示欄、Http Response顯示欄。讓你在捕獲數據的時候一目了然。
?????? 能支持http代理的任意程序都能被fiddler捕獲到,由于fiddler的運行機制就是監(jiān)聽本機上的8888端口的http代理,所以我們只需要將需要抓包的程序連接到fiddler代理服務上就可以了。
1.1修改Host:
Fiddler很重要的一個作用就是作為代理,可以起到修改Host的效果。這個對于測試,特別是無線設備不方便Root的情況。顯得十分方便。具體操作:點擊【Tools】—【Hosts】,在彈出的新窗口中,選中填寫需要設置的Host,,點擊OK就操作成功了。
1.2.瀏覽器抓包:
一般情況下,fiddler會自動修改IE瀏覽器的設置,捕捉到IE瀏覽器的搜有通訊。其他瀏覽器需要手動設置,點擊瀏覽器【工具】—【Internet選項】—【連接】—【局域網設置】,再點擊代理服務器的【高級】按鈕,將HTTP代理服務器地址改為127.0.0.1:8888。
當然,你也可以直接將fiddler設置為系統(tǒng)代理,那么在瀏覽器中設置使用系統(tǒng)代理設置就可以了。首先,將fiddler設置為系統(tǒng)代理,打開fiddler,點擊【tools】->【FiddlerOptions】->【Connections】,點擊設置為系統(tǒng)代理,操作如下圖:
然后在瀏覽器中設置使用系統(tǒng)代理即可。
默認情況下,fiddler是不會捕捉Https的請求,需要手動設置一下。啟動軟件,點擊【Tools】—【fiddler Options】,在彈出的新窗口中,點擊HTTPS選項卡,將捕獲HTTPS連接這一選項前面全打上勾,點擊OK就操作成功了。如下圖所示:
現在,我們就可以打開瀏覽器訪問網頁,然后在Fiddler里查看捕捉到的請求了。
1.3.手機抓包:
利用Fiddler進行手機抓包的時候,要先查看本地的IP地址以及在fiddler里面設置端口號。然后勾選允許遠程設備連接。點擊OK就可以了。然后打開手機在手機的連接設置中設置代理地址和端口號,然后打開瀏覽器輸入:“IP:端口號”下載安裝證書(如果是蘋果手機的話,要使用系統(tǒng)自帶的瀏覽器才可以),就可以就可以使用fiddler進行手機抓包了。
具體流程如下:
設置端口號:
打開android設備的“設置”->“WLAN”,找到你要連接的網絡,在上面長按,然后選擇“修改網絡”,彈出網絡設置對話框,然后勾選“顯示高級選項”。
????? Fiddler支持斷點調試概念,當你在軟件的菜單—rules—automatic
breakpoints選項選擇beforerequest,或者當這些請求或響應屬性能夠跟目標的標準相匹配,Fiddler就能夠暫停Http通訊,允許修改請求和響應。這種功能對于安全測試是非常有用的,當然也可以用來做一般的功能測試。通過設置斷點,Fiddler可以做到:
1. 修改HTTP請求頭信息。例如修改請求頭的UA, Cookie, Referer 信息,通過“偽造”相應信息達到達到相應的目的(調試,模擬用戶真實請求等)。
2. 構造請求數據,突破表單的限制,隨意提交數據。避免頁面js和表單限制影響相關調試。
3. 攔截響應數據,修改響應實體。
為什么以上方法是重要的?假設js前端程序員和服務器程序員是分工合作的,js程序員想要調試Ajax請求的功能,這樣便不必等待服務器端程序員開發(fā)好所有接口之后再開始開發(fā)js端的ajax請求功能,因為通過“模擬”真實的服務器端的響應,便可以保證功能的正確性,而服務器端開發(fā)程序員,只要保證最終的響應是符合規(guī)定的即可。這大大簡化了程序開發(fā)的效率,當然也降低了不同業(yè)務線程序員聯調的難度。
有兩種方法設置斷點:
1.fiddler菜單欄->rules->automatic?Breakpoints->選擇斷點方式,這種方式下設定的斷點會對之后的所有HTTP請求有效。
有兩個斷點位置:
?????? a.?before?response。也就是發(fā)送請求之后,但是Fiddler代理中轉之前,這時可以修改請求的數據。
?????? b.after?response。也就是服務器響應之后,但是在Fiddler將響應中轉給客戶端之前。這時可以修改響應的結果。
2.命令行下輸入。Bpafter?xxx或者bpv,bpu,bpm等設置斷點。這種斷點只針對特定類型的請求。
3. fiddler中創(chuàng)建AUTOResponder規(guī)則:
?????? 設置AUTOResponder規(guī)則的好處是允許你從本地返回文件,而不用將http request發(fā)送到服務器上。我們就以訪問攜程酒店酒店詳情頁頁為例說明一下該功能的用法。
?1) 打開攜程酒店詳情頁,fiddler中找到該會話,右擊在選項卡中選擇保存響應, 把響應保存到本地,對響應中的元素進行修改,如將酒店名修改成“攜程測試”。
?2) 打開fiddler找到剛才我們的會話,然后點擊軟件右邊的自動響應選項卡,在"Enable
authomatic reponses"和"permitpassthrought unmatched
requests"前面都打上勾,將會話拖到"自動響應"列表框中,或者點擊增加規(guī)則將會話添加到自動響應的列表中。
?3) 在右下角的RuleEditor的第二個文本框選擇"Find a File……",然后選擇本地保存的文件,點擊"SAVE"按鈕保存就可以了。
? 4) 我們再次打開剛才訪問的酒店詳情頁,注意酒店名稱已經變成我們所修改的“攜程測試”了。
接口測試的原理我理解很簡單,是你發(fā)送數據,看返回數據是否正確,返回值類型是否正常,主要點是多種數據的,返回結果正常。操作的流程也很簡單,點擊fiddler的Composer選項卡,選擇接口訪問方式,填寫接口訪問地址。并添加請求參數。點擊執(zhí)行,就可以去Inspectors 頁簽查看響應結果。也可以在options面板中,將 Inspect Session 打勾后,就能發(fā)出請求,并自動切換到 Inspectors 頁簽查看響應結果。
Fiddler的統(tǒng)計選項卡中顯示了當前Session的基本信息,在選項卡的最上方顯示的是文本信息,最下方是個餅圖,按MIME類型顯示流量。使用Statistics頁簽,用戶可以通過選擇多個會話來得來這幾個會話的總的信息統(tǒng)計,比如多個請求和傳輸的字節(jié)數。
?????? 選擇第一個請求和最后一個請求,可獲得整個頁面加載所消耗的總體時間。從條形圖表中還可以分別出哪些請求耗時最多,從而對頁面的訪問進行訪問速度優(yōu)化。