Fiddler是一個(gè)http協(xié)議調(diào)試代理工具,它能夠記錄并檢查所有你的電腦和互聯(lián)網(wǎng)之間的http通訊,設(shè)置斷點(diǎn),查看所有的“進(jìn)出”Fiddler的數(shù)據(jù)。 Fiddler 要比其他的網(wǎng)絡(luò)調(diào)試器要更加簡單,因?yàn)樗粌H僅暴露http通訊還提供了一個(gè)用戶友好的格式。
1、PC端安裝Fiddler 下載地址:Fiddler.exe,http://www./download/fiddler
2、 配置PC端Fiddler和手機(jī) (1) 配置Fiddler允許監(jiān)聽https 打開Fiddler菜單項(xiàng)Tools->Fiddler Options,選中decrypt https traffic和ignore server certificate errors兩項(xiàng),如下圖:
第一次會(huì)提示是否信任fiddler證書及安全提醒,選擇yes,之后也可以在系統(tǒng)的證書管理中進(jìn)行管理。 (2) 配置Fiddler允許遠(yuǎn)程連接 如上圖的菜單中點(diǎn)擊connections,選中allow remote computers to connect,默認(rèn)監(jiān)聽端口為8888,若被占用也可以設(shè)置,配置好后需要重啟Fiddler,如下圖:
(3) 配置手機(jī)端 Pc端命令行ipconfig查看Fiddler所在機(jī)器ip,本機(jī)ip為10.0.4.37,如下圖
打開手機(jī)連接到同一局域網(wǎng)的wifi,并修改該wifi網(wǎng)絡(luò)詳情(長按wifi選擇->修改網(wǎng)絡(luò))->顯示高級(jí)選項(xiàng),選擇手動(dòng)代理設(shè)置,主機(jī)名填寫Fiddler所在機(jī)器ip,端口填寫Fiddler端口,默認(rèn)8888,如下圖:
這時(shí),手機(jī)上的網(wǎng)絡(luò)訪問在Fiddler就可以查看了,如下圖微博和微信的網(wǎng)絡(luò)請(qǐng)求:
可以雙擊上圖某一行網(wǎng)絡(luò)請(qǐng)求,右側(cè)會(huì)顯示具體請(qǐng)求內(nèi)容(Request Header)和返回內(nèi)容(Response Header and Content),如下圖:
可以發(fā)現(xiàn)Fiddler可以以各種格式查看網(wǎng)絡(luò)請(qǐng)求返回的數(shù)據(jù),包括Header, TextView(文字), ImageView(圖片), HexView(十六進(jìn)制),WebView(網(wǎng)頁形式), Auth(Proxy-Authenticate Header), Caching(Header cache), Cookies, Raw(原數(shù)據(jù)格式), JSON(json格式), XML(xml格式)很是方便。 停止網(wǎng)絡(luò)監(jiān)控的話去掉wifi的代理設(shè)置即可,否則Fiddler退出后手機(jī)就上不網(wǎng)了哦。 如果需要恢復(fù)手機(jī)無密碼狀態(tài),android端之后可以通過系統(tǒng)設(shè)置-安全-受信任的憑據(jù)-用戶,點(diǎn)擊證書進(jìn)行刪除或清除憑據(jù)刪除所有用戶證書,再設(shè)置密碼為無。 如果只需要監(jiān)控一個(gè)軟件,可結(jié)合系統(tǒng)流量監(jiān)控,關(guān)閉其他應(yīng)用網(wǎng)絡(luò)訪問的權(quán)限。 利用fiddler抓取Android app數(shù)據(jù)包 做Android開發(fā)的朋友經(jīng)常需要做網(wǎng)絡(luò)數(shù)據(jù)的獲取和提交表單數(shù)據(jù)等操作,然而對(duì)于調(diào)試程序而言,很難知道我們的數(shù)據(jù)到底是以怎樣的形式發(fā)送的,是否發(fā)送成功,如果發(fā)送失敗有是什么原因引起的。fiddler工具為我們提供了很方便的抓包操作,可以輕松抓取瀏覽器的發(fā)出的數(shù)據(jù),不管是手機(jī)APP,還是web瀏覽器,都是可以的。 fiddler的工作原理 fiddler是基于代理來實(shí)現(xiàn)抓取網(wǎng)絡(luò)數(shù)據(jù)包的工作的,當(dāng)我們開啟fiddler以后,fiddler會(huì)將我們的瀏覽器的代理默認(rèn)進(jìn)行更改為 127.0.0.1 端口是8888,這時(shí)fiddler的默認(rèn)端口,也就是說我們發(fā)送的每一個(gè)請(qǐng)求和收到的每一個(gè)響應(yīng)都會(huì)先經(jīng)過fiddler,這樣就實(shí)現(xiàn)了抓取數(shù)據(jù)包的工作。 路徑:選項(xiàng)?>高級(jí)設(shè)置?>更改代理服務(wù)器設(shè)置?>局域網(wǎng)設(shè)置?>高級(jí) 9.回話面板說明:
session會(huì)話的分析 這里我隨便選擇一個(gè)會(huì)話來進(jìn)行簡單的分析。
替換服務(wù)器端返回的數(shù)據(jù) 利用”autoresponser”可以替換服務(wù)器端返回的文件,當(dāng)調(diào)試的時(shí)候需要替換服務(wù)器端返回的數(shù)據(jù)的時(shí)候,比如一個(gè)已經(jīng)上線的項(xiàng)目,不可能真正的替換器某一個(gè)文件,我們可以這樣來操作
從圖片當(dāng)中,可以很清晰的看出,當(dāng)我再次加載該會(huì)話的時(shí)候,會(huì)顯示之前設(shè)置好的404代理。 如果需要設(shè)置不同的文件代理,也是可以的。比如對(duì)于該會(huì)話,原本服務(wù)器端返回的內(nèi)容如下圖:
由于該session返回的是一個(gè)圖片類型的,所以我選擇ImageView這個(gè)選項(xiàng)卡,可以看到此時(shí)返回的圖片的樣子,那么如果需要用本地的文件代理該返回的內(nèi)容,和之前的操作步驟都是一樣的,只是在選擇代理的時(shí)候選擇本地文件即可,如下圖:
這次,我選擇了一個(gè)本地的文件作為代理,此時(shí)當(dāng)我再次重新請(qǐng)求該會(huì)話的時(shí)候,會(huì)返回本地的文件:
可以看出這個(gè)時(shí)候該會(huì)話返回的內(nèi)容已經(jīng)是我本地的代理了。 fiddler網(wǎng)絡(luò)限速 fiddler還為我們提供了一個(gè)很方便的網(wǎng)絡(luò)限速的功能,通過網(wǎng)絡(luò)限速的功能,可以來模擬用戶的一些真實(shí)環(huán)境。fiddler提供了網(wǎng)絡(luò)限速的插件,我們可以在他的官網(wǎng)下載:http://www./fiddler/add-ons
點(diǎn)擊”download”,下載完成之后,點(diǎn)擊安裝,需要重新啟動(dòng)fiddler,在重新啟動(dòng)fiddler之后,可以看到fiddler的工具欄選項(xiàng)卡,多出了一個(gè)FiddlerScript選項(xiàng)。
比如我需要在請(qǐng)求之前延遲一段時(shí)間,可以這樣做:
在onBeforeRequest方法中加入這樣一段代碼”oSession[“request-trickle-delay”] = “3000”;”,那么如果需要在服務(wù)端響應(yīng)之間做延遲只需要將”oSession[“request-trickle-delay”] = “3000”;”中的request替換成response即可。 利用fiddler抓取Android app數(shù)據(jù)包 終于到了今天的主題了,如何利用fiddler抓取Android app數(shù)據(jù)包,其實(shí)也是很簡單的,只需要稍微配置一下就可以了。由于fiddler默認(rèn)是抓取http協(xié)議的數(shù)據(jù)包,我們需要其能夠抓取https這樣的加密數(shù)據(jù)包,抓取Android app數(shù)據(jù)包,需要做如下配置: 1.配置fiddler 點(diǎn)擊工具欄選項(xiàng)”tools?>FiddlerOptions” 配置https:
配置遠(yuǎn)程連接:
這些配置完成之后,一定要重新啟動(dòng)fiddler。 可以看到fiddler的默認(rèn)端口是8888,我們可以現(xiàn)在瀏覽器上輸入”http://127.0.0.1:8888”
到這里為止我們的fiddler就配置完成了,接下來需要配置手機(jī)上的無線網(wǎng)絡(luò)。 2.手機(jī)無線網(wǎng)絡(luò)配置 注意:如果需要fiddler抓取Android app上的數(shù)據(jù)包,那么兩者必須在同一個(gè)無線網(wǎng)絡(luò)中。(同時(shí),必要時(shí)請(qǐng)關(guān)閉電腦的防火墻) 在手機(jī)的無線網(wǎng)絡(luò)配置之前,必須要首先知道fiddler所在主機(jī)的ip地址:
可以看到我的fiddler所在主機(jī),也就是我的電腦在無線網(wǎng)中的ip地址是192.168.1.109 打開手機(jī)設(shè)置中的無線網(wǎng)絡(luò)界面,進(jìn)行如下四步操作: 選中連接的網(wǎng)絡(luò),點(diǎn)擊修改網(wǎng)絡(luò)
點(diǎn)擊高級(jí)選項(xiàng)
代理—>手動(dòng)
輸入代理服務(wù)器的ip,也就是我們fiddler所在主機(jī)的ip地址,和端口,fiddler默認(rèn)的端口是8888,IP選項(xiàng)設(shè)置為”DHCP”
點(diǎn)擊保存,此時(shí)手機(jī)端就配置成功了,打開fiddler,使用打開網(wǎng)易新聞客戶端。
此時(shí)可以看到fiddler抓取的網(wǎng)易app發(fā)送和接收的相關(guān)數(shù)據(jù)包。
ok,左側(cè)是我們的所有會(huì)話,我隨機(jī)的選中一個(gè)會(huì)話,該會(huì)話是image類型的,查看該會(huì)話的內(nèi)容,是我們網(wǎng)易新聞的頭條上的圖片。 注意: 1.關(guān)閉電腦的防火墻 2.如果需要抓取手機(jī)app的數(shù)據(jù)包,需要手機(jī)和電腦在都連接同一個(gè)無線網(wǎng)絡(luò) 3.抓完包以后將fiddler關(guān)閉(提高訪問網(wǎng)絡(luò)的速度)同時(shí)將手機(jī)上的代理關(guān)閉 (如果不關(guān)閉代理,當(dāng)fiddler關(guān)閉,或者是兩者連接的不是同一無線網(wǎng)絡(luò),手機(jī)會(huì)不能正常的訪問網(wǎng)絡(luò)) |
|