fiddler作為一個(gè)程序猿+測(cè)試媛必備的工具值纱,其他除了最基本的使用方法之外,還有很多強(qiáng)大到不行小技巧
下面將遇到的一些坑爹的問(wèn)題或者可以變得更方便的方式列舉一下~當(dāng)然比較小白的問(wèn)題,比如如何抓手機(jī)的包啊這些已經(jīng)排除在外了哈
一、tunnel to 443 是什么鬼!
這個(gè)tunnel to 443也的確是挺不順眼的,正如stackoverfolw上的回答一樣赚爵,我們可以看見(jiàn)這樣一句話
fiddler截圖
解釋了為什么會(huì)出現(xiàn)這個(gè)tunnel。
HttpTuunnel(也叫Http隧道法瑟,Http穿梭)冀膝,是這樣一種技術(shù): 它用HTTP協(xié)議在要通信的Client和Server建立起一條”Tunnel”,然后Client和Server之間的通信霎挟,都是在這條Tunnel的基礎(chǔ)之上窝剖。
簡(jiǎn)單地說(shuō) fiddler 當(dāng)做代理轉(zhuǎn)發(fā) https 請(qǐng)求的時(shí)候,就會(huì)產(chǎn)生 "CONNECT Tunnels"酥夭,所以大可忽略它赐纱。實(shí)在有強(qiáng)迫癥,可以選擇隱藏Rules>Hide Connects
所以要抓https的包熬北,還必須安裝fiddler的證書(shū)疙描,果斷百度找教程?讶隐!去看官網(wǎng)起胰,簡(jiǎn)直不能再詳細(xì)了,圖文說(shuō)明~抓https的包get
既然已經(jīng)能成功抓包了巫延,那最好也了解一下fiddler抓取HTTPS協(xié)議原理效五,以下內(nèi)容摘自此文——淺談HTTPS以及Fiddler抓取HTTPS協(xié)議
首先看看最基本的https通信地消,具體的過(guò)程就不解釋了
普通的https通信
再看下加入了fiddler之后,這個(gè)具體的過(guò)程就解釋下
fiddler中的https通信
Fiddler截獲客戶端發(fā)送給服務(wù)器的HTTPS請(qǐng)求畏妖,F(xiàn)iddler偽裝成客戶端向服務(wù)器發(fā)送請(qǐng)求進(jìn)行握手 犯建。
服務(wù)器發(fā)回相應(yīng),F(xiàn)iddler獲取到服務(wù)器的CA證書(shū)瓜客, 用root證書(shū)公鑰進(jìn)行解密, 驗(yàn)證服務(wù)器數(shù)據(jù)簽名竿开, 獲取到服務(wù)器CA證書(shū)公鑰谱仪。然后Fiddler偽造自己的CA證書(shū), 冒充服務(wù)器證書(shū)傳遞給客戶端瀏覽器否彩。
與普通過(guò)程中客戶端的操作相同疯攒,客戶端根據(jù)返回的數(shù)據(jù)進(jìn)行證書(shū)校驗(yàn)、生成密碼Pre_master列荔、用Fiddler偽造的證書(shū)公鑰加密敬尺,并生成HTTPS通信用的對(duì)稱密鑰enc_key。
客戶端將重要信息傳遞給服務(wù)器贴浙,又被Fiddler截獲砂吞。Fiddler將截獲的密文用自己偽造證書(shū)的私鑰解開(kāi), 獲得并計(jì)算得到HTTPS通信用的對(duì)稱密鑰enc_key崎溃。Fiddler將對(duì)稱密鑰用服務(wù)器證書(shū)公鑰加密傳遞給服務(wù)器蜻直。
與普通過(guò)程中服務(wù)器端的操作相同,服務(wù)器用私鑰解開(kāi)后建立信任袁串,然后再發(fā)送加密的握手消息給客戶端概而。
Fiddler截獲服務(wù)器發(fā)送的密文,用對(duì)稱密鑰解開(kāi)囱修,再用自己偽造證書(shū)的私鑰加密傳給客戶端赎瑰。
客戶端拿到加密信息后,用公鑰解開(kāi)破镰,驗(yàn)證HASH餐曼。握手過(guò)程正式完成,客戶端與服務(wù)器端就這樣建立了“信任”
二啤咽、不想被pc上一堆雜七雜八的session打擾晋辆,我只想安靜的看關(guān)于Android的session
這個(gè)只要關(guān)閉pc的代理就好了呀~
點(diǎn)擊 Fiddler 左下角的“Capturing”。其實(shí)是File > Capture Traffic的快捷鍵宇整,可以控制是否把 Fiddler 注冊(cè)為PC系統(tǒng)代理瓶佳,當(dāng)左下角顯示Capturing時(shí),Capture Traffic是打開(kāi)的鳞青,此時(shí)的IE的Internet選項(xiàng)>連接>局域網(wǎng)設(shè)置中的代理服務(wù)器是勾選的霸饲;否則是沒(méi)有勾選的为朋。 也就是顯示了就抓pc的包,不顯示就不抓pc的包厚脉。
三习寸、認(rèn)識(shí)fiddler中session的快捷圖標(biāo)
快捷圖標(biāo)
去官網(wǎng)也有啊,只不過(guò)是英文的哈哈傻工,其實(shí)用處也不是很大霞溪,大概記住就得了
四、hosts的設(shè)置
在測(cè)試的時(shí)候中捆,難免要配置hosts鸯匹,連接到測(cè)試服務(wù)器,但是泄伪!總感覺(jué)在系統(tǒng)配置的hosts不起作用
fiddler reuses connections, so if there was already an established connection, any change to the HOSTS file might not be noticed. You might try hitting CTRL+X to clear the Web Sessions list and the cache of reused connections.
原來(lái)Fiddler 啟動(dòng)時(shí)殴蓬,修改 hosts 的時(shí)候是無(wú)效的,需要重啟 Fiddler才能生效蟋滴。當(dāng) Fiddler 已經(jīng)建立會(huì)話時(shí)染厅,任何修改 hosts 的行為都不會(huì)被 Fiddler 注意到。
可以通過(guò) Fiddler 的 Tools > HOSTS 處導(dǎo)入本地的 hosts文件津函。
需要指測(cè)試服務(wù)器的時(shí)候肖粮,勾選"Enable remapping of requests for one host to a different host or IP, overriding DNS",否則去掉勾選。
那么問(wèn)題就來(lái)了球散,我怎么確定自己的請(qǐng)求的是正確的服務(wù)器呢尿赚?
我需要知道自己請(qǐng)求的ip地址是多少,哈哈
五蕉堰、FiddlerScript
想說(shuō)fiddler比charles更加人性化的地方就是凌净,fiddler有一個(gè)FiddlerScript文件,可以修改超級(jí)多配置
第一次使用FiddlerScript屋讶,點(diǎn)擊這里 Rules->Customize Rules冰寻,然后回彈出是否安裝一個(gè)編輯器的插件,安裝了的話就可以直接在面板中進(jìn)行修改皿渗,不安裝就要每次都在txt文檔里面修改斩芭,而且還不能保證編碼格式是utf-8的
FiddlerScript是用C#寫(xiě)的,但是乐疆,有很多注釋划乖,還有官網(wǎng)可以幫助學(xué)習(xí)
1. Modifying a Request or Response 修改請(qǐng)求和響應(yīng)
OnBeforeRequest is called before each request, and OnBeforeResponse is called before each response.可以在OnBeforeRequest和OnBeforeResponse這兩個(gè)方法中修改請(qǐng)求和響應(yīng)
2.Performance Testing 測(cè)試應(yīng)用的表現(xiàn)
To test application performance, add rules using FiddlerScript to the OnBeforeResponse function (except where noted).包括限速、顯示服務(wù)器響應(yīng)的時(shí)間挤土、顯示收到請(qǐng)求的時(shí)間等
3.Customize Menus 定制菜單欄
To customize menus in Fiddler, add rules using FiddlerScript with Global scope 添加各種菜單或者rule琴庵、tool等選項(xiàng)
4.定制session列表
To customize Fiddler's Web Sessions List or to pause specific sessions, add rules using FiddlerScript to the OnBeforeRequest function 可以在OnBeforeRequest中定制會(huì)話列表,將某些會(huì)話標(biāo)記為紅色、粗體等等或暫停某些特殊的會(huì)話
5.暫停
To pause specific sessions, add rules using FiddlerScript to the OnBeforeRequest function 暫停某些對(duì)話迷殿,在fiddler就終止發(fā)送去服務(wù)器那邊
6.警告
To create alerts for specific sessions, add rules using FiddlerScript. 對(duì)于某些特殊的會(huì)話發(fā)出警告儿礼,例如文件丟失的時(shí)候發(fā)出聲音
7.會(huì)話列表中添加列
To add custom columns to the Web Sessions List, add rules using FiddlerScript. 添加客戶端端口、cookie的值等等這些列
大致了解FiddlerScript其實(shí)就可以做很多修改幫助我們改善fiddler了~
六庆寺、session中顯示服務(wù)器ip列
打開(kāi)腳本編輯器
查找“static function Main()”字符串蚊夫,然后添加下面這行代碼:
FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP",120,"X-HostIP");
官網(wǎng)的教程中有寫(xiě)到添加session列表的列
Alternatively, you can call the AddBoundColumn() method. The first parameter is the name with which the column should be named, and the second parameter is the default width of the column. The third parameter is either a Fiddler Session Flag string, an @-prefixed-header name, or a JavaScript function that returns a string.
自己翻譯的:第一個(gè)參數(shù):顯示列的名字, 第二個(gè)參數(shù):默認(rèn)列寬懦尝, 第三個(gè)參數(shù):顯示的數(shù)值知纷,比如一個(gè)session有哪些屬性,或者是一個(gè)返回string的方法
左上角點(diǎn)擊保存
然后查看數(shù)據(jù)的最后一列陵霉,出現(xiàn)server ip屈扎,把server ip挪動(dòng)到自己想要看到的地方,大功告成撩匕!
再想想可能我還需要添加這個(gè)請(qǐng)求來(lái)自哪一個(gè)客戶端?那同樣的copy一下代碼墨叛,把客戶端的ip(clientIP)也顯示出來(lái)了止毕,這樣做以后也可以方便看請(qǐng)求是來(lái)自哪臺(tái)機(jī)器的,不過(guò)需要注意漠趁,在重新連上WiFi后扁凛,客戶端的ip地址隨時(shí)可能改變
serverIP和clientIP
七、聽(tīng)說(shuō)fiddler可以限速闯传?
charles限速可以直接點(diǎn)擊UI設(shè)置谨朝,fiddler限速就要靠強(qiáng)大的FiddlerScript了
打開(kāi)腳本編輯器
搜索m_SimulateModem
然后根據(jù)自己的需要修改如下語(yǔ)句
oSession["request-trickle-delay"] ="300";(每上傳1KB延遲300ms)oSession["response-trickle-delay"] ="150"甥绿;(每下載1KB延遲150ms)
Save Script后字币,勾選rule-performance-Simulate Modem Speeds生效
七、session都是一個(gè)顏色啊共缕,看的我眼花洗出,能不能讓我一眼就看到你?
由于沒(méi)有限制抓取的host或者其他原因图谷,有的時(shí)候會(huì)突然間就冒出一堆請(qǐng)求翩活,為了找到自己想要的那條請(qǐng)求也是很靠眼力啊,估計(jì)找久了都眼冒金星了吧
如果可以將經(jīng)常測(cè)試的請(qǐng)求分開(kāi)顏色顯示便贵,那真的是極好的安ふ颉!
打開(kāi)腳本編輯器
找到OnRequestBefore這個(gè)方法就能看到sample了
代碼中的sample
具體顏色的數(shù)值就上網(wǎng)找C#的color表承璃,對(duì)應(yīng)設(shè)置即可
保存利耍,應(yīng)用!
應(yīng)用之后不同的請(qǐng)求就可以使用不同的顏色標(biāo)記
科科,我設(shè)置的有點(diǎn)花堂竟,只是為了展示而已啦...
八魂毁、QuickExec用起來(lái)
好吧,還是直接上這篇博文先,當(dāng)然了官網(wǎng)文檔還是很多很多介紹出嘹,不過(guò)用的比較多的席楚,都在文章里已經(jīng)說(shuō)了,都是基礎(chǔ)的查找等功能税稼,官網(wǎng)上很多其他的命令主要跟斷點(diǎn)debug相關(guān)烦秩。
不過(guò)博文中說(shuō)到的雙擊session就能直接查看json數(shù)據(jù),感覺(jué)還是蠻爽的郎仆,雖然并不知道
PREFSSETfiddler.ui.inspectors.response.alwaysuse“json”
這行代碼是怎么出現(xiàn)的只祠,一度好糾結(jié),在官網(wǎng)上查找關(guān)鍵詞并沒(méi)有找到相關(guān)的東西扰肌,去搜索之后發(fā)現(xiàn)一個(gè)fiddler源碼抛寝,里面有出現(xiàn)fiddler.ui.inspectors.response.alwaysuse,其他發(fā)現(xiàn)就木有了
九曙旭、與charles的區(qū)別
同樣作為牛逼的抓包軟件盗舰,吐槽幾個(gè)優(yōu)缺點(diǎn)
fiddler可以通過(guò)修改FiddlerScript達(dá)到更多的目的,charles不能
charles要花錢桂躏,否則每半個(gè)小時(shí)就要重啟一次钻趋,還要延時(shí),fiddler免費(fèi)
平臺(tái)性剂习,charles是跨平臺(tái)的(Windows蛮位、mac、Linux)鳞绕,fiddler只能在Windows失仁、Linux中使用
十、More
fiddler還有很多諸如AutoResponder们何、斷點(diǎn)調(diào)試的功能陶因,不過(guò)這些大部分是web工程師的大愛(ài),測(cè)試方面暫時(shí)不需要用到垂蜗,所以就沒(méi)有深入去研究啦~有機(jī)會(huì)再好好研究
文/劉瞧瞧(簡(jiǎn)書(shū)作者)
原文鏈接:http://www.reibang.com/p/18b9c5cb493d
著作權(quán)歸作者所有楷扬,轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),并標(biāo)注“簡(jiǎn)書(shū)作者”贴见。