簡(jiǎn)介:
Fiddler是一個(gè)http協(xié)議調(diào)試代理工具,它能夠記錄并檢查所有你的電腦和互聯(lián)網(wǎng)之間的http通訊,設(shè)置斷點(diǎn),查看所有的“進(jìn)出”Fiddler的數(shù)據(jù)(指cookie,html,js,css等文件,這些都可以讓你胡亂修改的意思)。
Fiddler 要比其他的網(wǎng)絡(luò)調(diào)試器要更加簡(jiǎn)單冤灾,因?yàn)樗粌H僅暴露http通訊還提供了一個(gè)用戶友好的格式。
Fiddler原理示意圖
?????? 啟動(dòng)fiddler辕近,我們就會(huì)看到該軟件的主界面韵吨,軟件窗口大體可以分為六大部分:菜單欄、工具欄移宅、會(huì)話列表归粉、命令行工具欄、HTTP Request顯示欄漏峰、Http Response顯示欄糠悼。讓你在捕獲數(shù)據(jù)的時(shí)候一目了然。
?????? 能支持http代理的任意程序都能被fiddler捕獲到浅乔,由于fiddler的運(yùn)行機(jī)制就是監(jiān)聽本機(jī)上的8888端口的http代理倔喂,所以我們只需要將需要抓包的程序連接到fiddler代理服務(wù)上就可以了。
1.1修改Host:
Fiddler很重要的一個(gè)作用就是作為代理靖苇,可以起到修改Host的效果席噩。這個(gè)對(duì)于測(cè)試,特別是無線設(shè)備不方便Root的情況顾复。顯得十分方便班挖。具體操作:點(diǎn)擊【Tools】—【Hosts】鲁捏,在彈出的新窗口中芯砸,選中填寫需要設(shè)置的Host萧芙,,點(diǎn)擊OK就操作成功了假丧。
1.2.瀏覽器抓包:
一般情況下双揪,fiddler會(huì)自動(dòng)修改IE瀏覽器的設(shè)置,捕捉到IE瀏覽器的搜有通訊包帚。其他瀏覽器需要手動(dòng)設(shè)置渔期,點(diǎn)擊瀏覽器【工具】—【Internet選項(xiàng)】—【連接】—【局域網(wǎng)設(shè)置】,再點(diǎn)擊代理服務(wù)器的【高級(jí)】按鈕渴邦,將HTTP代理服務(wù)器地址改為127.0.0.1:8888疯趟。
當(dāng)然,你也可以直接將fiddler設(shè)置為系統(tǒng)代理谋梭,那么在瀏覽器中設(shè)置使用系統(tǒng)代理設(shè)置就可以了信峻。首先,將fiddler設(shè)置為系統(tǒng)代理瓮床,打開fiddler盹舞,點(diǎn)擊【tools】->【FiddlerOptions】->【Connections】,點(diǎn)擊設(shè)置為系統(tǒng)代理隘庄,操作如下圖:
然后在瀏覽器中設(shè)置使用系統(tǒng)代理即可踢步。
默認(rèn)情況下,fiddler是不會(huì)捕捉Https的請(qǐng)求丑掺,需要手動(dòng)設(shè)置一下获印。啟動(dòng)軟件,點(diǎn)擊【Tools】—【fiddler Options】吼鱼,在彈出的新窗口中蓬豁,點(diǎn)擊HTTPS選項(xiàng)卡,將捕獲HTTPS連接這一選項(xiàng)前面全打上勾菇肃,點(diǎn)擊OK就操作成功了地粪。如下圖所示:
現(xiàn)在,我們就可以打開瀏覽器訪問網(wǎng)頁(yè)琐谤,然后在Fiddler里查看捕捉到的請(qǐng)求了蟆技。
1.3.手機(jī)抓包:
利用Fiddler進(jìn)行手機(jī)抓包的時(shí)候,要先查看本地的IP地址以及在fiddler里面設(shè)置端口號(hào)斗忌。然后勾選允許遠(yuǎn)程設(shè)備連接质礼。點(diǎn)擊OK就可以了。然后打開手機(jī)在手機(jī)的連接設(shè)置中設(shè)置代理地址和端口號(hào)织阳,然后打開瀏覽器輸入:“IP:端口號(hào)”下載安裝證書(如果是蘋果手機(jī)的話眶蕉,要使用系統(tǒng)自帶的瀏覽器才可以),就可以就可以使用fiddler進(jìn)行手機(jī)抓包了唧躲。
具體流程如下:
設(shè)置端口號(hào):
打開android設(shè)備的“設(shè)置”->“WLAN”造挽,找到你要連接的網(wǎng)絡(luò)碱璃,在上面長(zhǎng)按,然后選擇“修改網(wǎng)絡(luò)”饭入,彈出網(wǎng)絡(luò)設(shè)置對(duì)話框嵌器,然后勾選“顯示高級(jí)選項(xiàng)”。
????? Fiddler支持?jǐn)帱c(diǎn)調(diào)試概念谐丢,當(dāng)你在軟件的菜單—rules—automatic
breakpoints選項(xiàng)選擇beforerequest,或者當(dāng)這些請(qǐng)求或響應(yīng)屬性能夠跟目標(biāo)的標(biāo)準(zhǔn)相匹配爽航,F(xiàn)iddler就能夠暫停Http通訊,允許修改請(qǐng)求和響應(yīng)乾忱。這種功能對(duì)于安全測(cè)試是非常有用的讥珍,當(dāng)然也可以用來做一般的功能測(cè)試。通過設(shè)置斷點(diǎn)窄瘟,F(xiàn)iddler可以做到:
1. 修改HTTP請(qǐng)求頭信息串述。例如修改請(qǐng)求頭的UA, Cookie, Referer 信息,通過“偽造”相應(yīng)信息達(dá)到達(dá)到相應(yīng)的目的(調(diào)試寞肖,模擬用戶真實(shí)請(qǐng)求等)纲酗。
2. 構(gòu)造請(qǐng)求數(shù)據(jù),突破表單的限制新蟆,隨意提交數(shù)據(jù)觅赊。避免頁(yè)面js和表單限制影響相關(guān)調(diào)試。
3. 攔截響應(yīng)數(shù)據(jù)琼稻,修改響應(yīng)實(shí)體吮螺。
為什么以上方法是重要的?假設(shè)js前端程序員和服務(wù)器程序員是分工合作的帕翻,js程序員想要調(diào)試Ajax請(qǐng)求的功能鸠补,這樣便不必等待服務(wù)器端程序員開發(fā)好所有接口之后再開始開發(fā)js端的ajax請(qǐng)求功能,因?yàn)橥ㄟ^“模擬”真實(shí)的服務(wù)器端的響應(yīng)嘀掸,便可以保證功能的正確性紫岩,而服務(wù)器端開發(fā)程序員,只要保證最終的響應(yīng)是符合規(guī)定的即可睬塌。這大大簡(jiǎn)化了程序開發(fā)的效率泉蝌,當(dāng)然也降低了不同業(yè)務(wù)線程序員聯(lián)調(diào)的難度。
有兩種方法設(shè)置斷點(diǎn):
1.fiddler菜單欄->rules->automatic?Breakpoints->選擇斷點(diǎn)方式揩晴,這種方式下設(shè)定的斷點(diǎn)會(huì)對(duì)之后的所有HTTP請(qǐng)求有效勋陪。
有兩個(gè)斷點(diǎn)位置:
?????? a.?before?response。也就是發(fā)送請(qǐng)求之后硫兰,但是Fiddler代理中轉(zhuǎn)之前诅愚,這時(shí)可以修改請(qǐng)求的數(shù)據(jù)。
?????? b.after?response劫映。也就是服務(wù)器響應(yīng)之后违孝,但是在Fiddler將響應(yīng)中轉(zhuǎn)給客戶端之前壕曼。這時(shí)可以修改響應(yīng)的結(jié)果。
2.命令行下輸入等浊。Bpafter?xxx或者bpv,bpu,bpm等設(shè)置斷點(diǎn)。這種斷點(diǎn)只針對(duì)特定類型的請(qǐng)求摹蘑。
3. fiddler中創(chuàng)建AUTOResponder規(guī)則:
?????? 設(shè)置AUTOResponder規(guī)則的好處是允許你從本地返回文件筹燕,而不用將http request發(fā)送到服務(wù)器上。我們就以訪問攜程酒店酒店詳情頁(yè)頁(yè)為例說明一下該功能的用法衅鹿。
?1) 打開攜程酒店詳情頁(yè)撒踪,fiddler中找到該會(huì)話,右擊在選項(xiàng)卡中選擇保存響應(yīng)大渤, 把響應(yīng)保存到本地制妄,對(duì)響應(yīng)中的元素進(jìn)行修改,如將酒店名修改成“攜程測(cè)試”泵三。
?2) 打開fiddler找到剛才我們的會(huì)話耕捞,然后點(diǎn)擊軟件右邊的自動(dòng)響應(yīng)選項(xiàng)卡,在"Enable
authomatic reponses"和"permitpassthrought unmatched
requests"前面都打上勾烫幕,將會(huì)話拖到"自動(dòng)響應(yīng)"列表框中俺抽,或者點(diǎn)擊增加規(guī)則將會(huì)話添加到自動(dòng)響應(yīng)的列表中。
?3) 在右下角的RuleEditor的第二個(gè)文本框選擇"Find a File……"较曼,然后選擇本地保存的文件磷斧,點(diǎn)擊"SAVE"按鈕保存就可以了。
? 4) 我們?cè)俅未蜷_剛才訪問的酒店詳情頁(yè)捷犹,注意酒店名稱已經(jīng)變成我們所修改的“攜程測(cè)試”了弛饭。
接口測(cè)試的原理我理解很簡(jiǎn)單,是你發(fā)送數(shù)據(jù)萍歉,看返回?cái)?shù)據(jù)是否正確侣颂,返回值類型是否正常,主要點(diǎn)是多種數(shù)據(jù)的枪孩,返回結(jié)果正常横蜒。操作的流程也很簡(jiǎn)單,點(diǎn)擊fiddler的Composer選項(xiàng)卡销凑,選擇接口訪問方式丛晌,填寫接口訪問地址。并添加請(qǐng)求參數(shù)斗幼。點(diǎn)擊執(zhí)行澎蛛,就可以去Inspectors 頁(yè)簽查看響應(yīng)結(jié)果。也可以在options面板中蜕窿,將 Inspect Session 打勾后谋逻,就能發(fā)出請(qǐng)求呆馁,并自動(dòng)切換到 Inspectors 頁(yè)簽查看響應(yīng)結(jié)果。
Fiddler的統(tǒng)計(jì)選項(xiàng)卡中顯示了當(dāng)前Session的基本信息毁兆,在選項(xiàng)卡的最上方顯示的是文本信息浙滤,最下方是個(gè)餅圖,按MIME類型顯示流量气堕。使用Statistics頁(yè)簽纺腊,用戶可以通過選擇多個(gè)會(huì)話來得來這幾個(gè)會(huì)話的總的信息統(tǒng)計(jì),比如多個(gè)請(qǐng)求和傳輸?shù)淖止?jié)數(shù)茎芭。
?????? 選擇第一個(gè)請(qǐng)求和最后一個(gè)請(qǐng)求揖膜,可獲得整個(gè)頁(yè)面加載所消耗的總體時(shí)間。從條形圖表中還可以分別出哪些請(qǐng)求耗時(shí)最多梅桩,從而對(duì)頁(yè)面的訪問進(jìn)行訪問速度優(yōu)化壹粟。