fiddler學(xué)習(xí)

1 http協(xié)議和fiddler抓包

Fiddler抓包的原理:fiddler本質(zhì)是一個(gè)代理服務(wù)器,默認(rèn)的工作端口是8888.

Fiddler的工作原理:是以代理web服務(wù)器的形式工作的,使用的代理地址:127.0.0.1.端口:8888.

當(dāng)fiddler退出時(shí),會(huì)自動(dòng)在Internet選項(xiàng)中取消代理,這樣就不會(huì)影響別的程序。

查看Internet選項(xiàng)代理設(shè)置:控制面板—網(wǎng)絡(luò)和Internet—Internet選項(xiàng)—連接—局域網(wǎng)設(shè)置—高級(jí),可以看到代理服務(wù)器地址被fiddler設(shè)置為127.0.0.1:8888.關(guān)閉fiddler時(shí),代理服務(wù)器地址取消。

注意:fiddler捕獲Firefox的請(qǐng)求時(shí),需要手動(dòng)將Firefox的代理服務(wù)器配置成fiddler。打開(kāi)Firefox,工具—選項(xiàng)—高級(jí)—網(wǎng)絡(luò)—設(shè)置—使用系統(tǒng)代理設(shè)置。

Fiddler能夠捕獲任何程序發(fā)出的http/https請(qǐng)求,只要這個(gè)程序支持web代理服務(wù)器即可。

在抓包的過(guò)程中,若http響應(yīng)是亂碼,單擊“response body is encoded. Click to decode.”

2 HTTPS協(xié)議和fiddler抓包

http協(xié)議是不安全的,瀏覽器發(fā)送給服務(wù)器的內(nèi)容非常容易被中間人攔截。

Web通信如何做到安全:需要對(duì)http數(shù)據(jù)包進(jìn)行對(duì)稱加密,只有瀏覽器和web服務(wù)器知道如何加密和解密他們之間的消息。并且通過(guò)協(xié)商來(lái)確定使用哪種加密算法。

HTTPS就是加密過(guò)的http;HTTPS=HTTP+TLS或者SSL,采用HTTPS的網(wǎng)站需要去數(shù)字認(rèn)證機(jī)構(gòu)申請(qǐng)證書(shū)(certificate authority,CA)。通過(guò)這個(gè)證書(shū),瀏覽器在請(qǐng)求數(shù)據(jù)前與web服務(wù)器有幾次握手驗(yàn)證,以證明相互的身份,然后對(duì)http請(qǐng)求和響應(yīng)進(jìn)行加密。

Fiddler獲取HTTPS會(huì)話:?jiǎn)?dòng)fiddler—tools—options—HTTPS,選中decrypt HTTPS traffic,在彈出的兩個(gè)對(duì)話框中單擊yes,同時(shí)選中ignore server certificate errors。Fiddler彈出警告信息,單擊yes,信任證書(shū),系統(tǒng)彈出警告,單擊yes,安裝證書(shū)。(可以在瀏覽器中輸入https://www.baidu.com檢查是否捕捉到了https的百度請(qǐng)求)

添加例外繞過(guò)https證書(shū)錯(cuò)誤:有時(shí)候安裝好了fiddler證書(shū),使用fiddler捕獲https網(wǎng)站的時(shí)候,仍然會(huì)出現(xiàn)連接錯(cuò)誤,此時(shí)單擊“我以充分了解可能的風(fēng)險(xiǎn)—添加例外—確認(rèn)安全例外”,可以繞過(guò)證書(shū)錯(cuò)誤。

Firefox需要單獨(dú)安裝證書(shū),具體步驟:點(diǎn)擊actions下面的第二個(gè)選項(xiàng)“export root certificate to desktop”把證書(shū)導(dǎo)出到桌面,證書(shū)文件名為“fiddlerroot.cer”;然后打開(kāi)Firefox,工具—選項(xiàng)—高級(jí)—證書(shū)—查看證書(shū),打開(kāi)證書(shū)管理器—選擇證書(shū)機(jī)構(gòu)—單擊導(dǎo)入fiddlerroot.cer,選擇彈出對(duì)話框的3個(gè)選項(xiàng),確定即可。

Fiddler可以捕獲https的握手驗(yàn)證請(qǐng)求:fiddler中抓到的“tunnel to”的請(qǐng)求。HTTP tunnel又叫做HTTP隧道或者HTTP穿梭。

查看Windows本地安裝的證書(shū):Windows+r,在命令行窗口輸入certmgr.msc;或者tools—https—actions—open Windows certificate manager。

3 HTTP協(xié)議請(qǐng)求方法和狀態(tài)碼

URL:uniform resource locator,統(tǒng)一資源定位符;用于完整描述Internet上某一處資源的地址。

URI:uniform resource identifier,統(tǒng)一資源標(biāo)識(shí)符;原來(lái)唯一的標(biāo)識(shí)某一個(gè)資源。

URL是一種具體的URI;

URL的基本格式:schema://host[:port#]/path/…/[query-string] [#anchor]

Schema:協(xié)議

host:域名

path:資源的路徑

query-string:參數(shù)

anchor:錨

URL中的錨點(diǎn)是一種超鏈接,只是它是頁(yè)面內(nèi)部的超鏈接;

常見(jiàn)的http方法:get,post,put,delete,head。

理解get和post方法的區(qū)別:


http狀態(tài)碼,http status code

每個(gè)http響應(yīng)報(bào)文都會(huì)攜帶一個(gè)狀態(tài)碼,用于告訴客戶端請(qǐng)求是否成功;http響應(yīng)報(bào)文的第一行由http協(xié)議號(hào)、狀態(tài)碼、狀態(tài)消息3部分組成。

狀態(tài)碼?? 已定義范圍????? 含義

1xx????? 100-201????????? 信息提示,表示請(qǐng)求已經(jīng)成功接受,繼續(xù)處理

2xx????? 200-206????????? 成功,表示請(qǐng)求已經(jīng)被成功接收、理解、接受

3xx????? 300-305????????? 重定向,要完成請(qǐng)求,必須進(jìn)行進(jìn)一步的處理

4xx????? 100-415????????? 客戶端錯(cuò)誤,請(qǐng)求有語(yǔ)法錯(cuò)誤或者請(qǐng)求無(wú)法實(shí)現(xiàn)

5xx????? 500-505????????? 服務(wù)器錯(cuò)誤,服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求

4 http協(xié)議header介紹

http請(qǐng)求和http響應(yīng)中有很多header,header的語(yǔ)法格式是“key:value”

5 網(wǎng)頁(yè)抓包和fiddler修改包

打開(kāi)一個(gè)網(wǎng)頁(yè),瀏覽器需要發(fā)生很多個(gè)請(qǐng)求;

web頁(yè)面簡(jiǎn)單的性能測(cè)試:使用statistic查看性能,可以看到每個(gè)http請(qǐng)求的響應(yīng)時(shí)間。在overall elapsed中能夠看到http響應(yīng)返回所需要的響應(yīng)時(shí)間。

使用fiddler查看響應(yīng):raw選項(xiàng)可以查看完整的http響應(yīng);webview可以查看HTML文檔;imageview可以查看圖片;Jason選項(xiàng)可以查看JSON;

fiddler中設(shè)置斷點(diǎn)修改http請(qǐng)求:fiddler本身是一個(gè)代理服務(wù)器,fiddler可以設(shè)置斷點(diǎn)。攔截住http請(qǐng)求,修改http請(qǐng)求之后再放行。設(shè)置到斷點(diǎn)之后,可以修改http的任何請(qǐng)求信息。設(shè)置斷點(diǎn)的兩種方法:

全局?jǐn)帱c(diǎn),單擊rules—automatic breakpoint—before request,這種方法會(huì)攔截所有的會(huì)話;

單個(gè)斷點(diǎn):已知請(qǐng)求的URL地址,此時(shí)只要針對(duì)這一個(gè)請(qǐng)求打斷點(diǎn)調(diào)試,其他的請(qǐng)求不會(huì)攔截。在fiddler左下角的quickExec命令行輸入命令“bpu www.baidu.com”,要取消單個(gè)斷點(diǎn),在命令行輸入“bpu”。

實(shí)例:fiddler修改http請(qǐng)求

1 啟動(dòng)fiddler,設(shè)置全局?jǐn)帱c(diǎn);

2 打開(kāi)瀏覽器,輸入www.baidu.com

3 回到fiddler界面,關(guān)閉斷點(diǎn)設(shè)置,因?yàn)榇藭r(shí)已經(jīng)攔截到想要攔截的http請(qǐng)求了,不需要攔截其他的http請(qǐng)求;

4 被攔截的http請(qǐng)求會(huì)有一個(gè)紅色的T圖標(biāo),選中需要修改的http請(qǐng)求,在raw選項(xiàng)卡中修改URL,同時(shí)修改相應(yīng)的host。

5 單擊綠色的run to completion按鈕放行,回到瀏覽器可以發(fā)現(xiàn)打開(kāi)的瀏覽器是新輸入的地址。

6 fiddler手機(jī)抓包

fiddler要想實(shí)現(xiàn)手機(jī)抓包的條件:安裝有fiddler的電腦和手機(jī)處于同一網(wǎng)絡(luò)下;在fiddler中設(shè)置好捕獲HTTPS。

手機(jī)抓包:

1 配置fiddler允許遠(yuǎn)程連接,啟動(dòng)fiddler--tools--options--connections—allow remote computers to

connect。配置完成之后記得重啟fiddler。

2 獲取fiddler所在機(jī)器的ip地址;

3 在手機(jī)上設(shè)置代理服務(wù)器;找到手機(jī)連接的WiFi,將代理改為手動(dòng),服務(wù)器主機(jī)名為fiddler所在電腦的IP地址,服務(wù)器端口號(hào)為8888,單擊連接即可設(shè)置成功。

4 需要捕獲HTTPS請(qǐng)求,則必須把fiddler證書(shū)安裝到手機(jī)上。

Android設(shè)備安裝證書(shū)的方法:

方法一:在手機(jī)瀏覽器輸入http://hostip:8888,在打開(kāi)的瀏覽器中單擊“fiddlerroot certificate”下載證書(shū),進(jìn)行安裝;

方法二:tools--options--HTTPS--點(diǎn)擊actions下面的第二個(gè)選項(xiàng)“export root certificate to desktop”把證書(shū)導(dǎo)出到桌面,證書(shū)文件名為“fiddlerroot.cer”,然后發(fā)送到手機(jī)上。再打開(kāi)手機(jī)中的設(shè)置--系統(tǒng)安全--憑據(jù)存儲(chǔ)--從SD卡安裝--選擇fiddlerroot.cer進(jìn)行安裝。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

在手機(jī)上設(shè)置好代理之后,fiddler會(huì)抓取到pc端和手機(jī)端的所有請(qǐng)求,可以設(shè)置過(guò)濾。tools--options--HTTPS--選擇from remote clients only。

7?http協(xié)議中的緩存

瀏覽器和web服務(wù)器之間如何處理瀏覽器緩存:

http緩存是指當(dāng)圍脖服務(wù)器請(qǐng)求抵達(dá)緩存時(shí),如果本地有“已緩存的副本”,就可以從本地存儲(chǔ)設(shè)備中提取這個(gè)文檔,而不是從原始服務(wù)器中提取;

緩存的優(yōu)點(diǎn):減少冗余的數(shù)據(jù)傳輸,節(jié)省了傳輸時(shí)間;減少了服務(wù)器的負(fù)擔(dān),提高網(wǎng)站的性能;加快了客戶端加載網(wǎng)頁(yè)的速度。

fiddler中可以方便的查看緩存的header;

通過(guò)最后修改時(shí)間來(lái)判斷緩存的新鮮度:

1 瀏覽器客戶端想請(qǐng)求一個(gè)文檔,首先檢查本地緩存,發(fā)現(xiàn)存在這個(gè)文檔的緩存時(shí),獲取緩存文檔的最后修改時(shí)間,通過(guò)“if-modified-since”發(fā)送http請(qǐng)求給web服務(wù)器;

2 服務(wù)器接收到http請(qǐng)求,將服務(wù)器文檔的修改時(shí)間(last-modified)跟http請(qǐng)求header中的if-modified-since相比較,如果時(shí)間一樣,說(shuō)明緩存是最新的,web服務(wù)器將發(fā)送狀態(tài)碼304(not modified)給瀏覽器客戶端,告訴客戶端直接使用緩存里面的版本;

3 假如文檔被更新了,web服務(wù)器會(huì)發(fā)送該文檔的最新版本給瀏覽器客戶端。

Etag(entity tag)實(shí)體標(biāo)簽,根據(jù)實(shí)體內(nèi)容生成一段hash字符串,可以表標(biāo)識(shí)資源的狀態(tài),當(dāng)資源發(fā)生變化時(shí),Etag也隨之發(fā)生變化。ETag是web服務(wù)器產(chǎn)生的。

瀏覽器把緩存文件的ETag通過(guò)header“if-none-match”告訴web服務(wù)器,if-none-match和ETag的值一樣,說(shuō)明文件沒(méi)有更新,服務(wù)器返回304,告訴客戶端使用本地緩存文件。

使用【Ctrl+F5】快捷鍵強(qiáng)制刷新瀏覽器,可以讓瀏覽器不使用緩存;

設(shè)置ie不使用緩存:打開(kāi)ie--工具--Internet選項(xiàng)--常規(guī)--瀏覽歷史記錄--設(shè)置--選擇從不;

緩存文件夾所在位置:打開(kāi)ie--工具--Internet選項(xiàng)--常規(guī)--瀏覽歷史記錄--設(shè)置—查看文件;

8 http協(xié)議壓縮和URL encode

http壓縮可以將純文本壓縮至原內(nèi)容大小的40%,節(jié)省了60%的數(shù)據(jù)傳輸;http可以對(duì)內(nèi)容進(jìn)行編碼,http壓縮就是內(nèi)容編碼的一種。

URL Encode(URL編碼)就是將所有非英文字母、數(shù)字字符都替換成%+兩位十六進(jìn)制數(shù),比如空格的編碼為“%20”;

可以使用fiddler中的textwizard對(duì)字符編碼:

tools--textwizard--選擇transform—URLEncode

9 fiddler使用技巧

通過(guò)filter功能過(guò)濾,使網(wǎng)頁(yè)只顯示自己想要看的http請(qǐng)求;在filters選項(xiàng)卡,選中“use filters”,即可開(kāi)啟過(guò)濾功能;

QuickExec命令行的使用:

help:顯示所有的命令;

cls:清屏;

select:選擇會(huì)話;

?.png :選擇后綴為.png的圖片;

bpu:截獲request;


fiddler比較會(huì)話的不同,可以下載Windiff工具;

fiddler插件:利用Java script formatter插件可以格式化JavaScript代碼,增加可讀性;

Gallery插件可以顯示圖片的縮略圖。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容