除了Fiddler工具之外,還有別的工具可以抓包。本章介紹其他幾個(gè)常見(jiàn)的抓包工具。
5.1 常見(jiàn)的抓包工具目前常見(jiàn)的HTTP抓包工具如圖5-1所示。
圖5-1 常見(jiàn)的抓包工具
5.2 瀏覽器開(kāi)發(fā)者工具瀏覽器都自帶一個(gè)開(kāi)發(fā)者工具,該工具可用來(lái)抓包,很受開(kāi)發(fā)人員喜歡。瀏覽器開(kāi)發(fā)者工具的受眾范圍比Fiddler的廣,因?yàn)樗芊奖悖恍枰鍪裁丛O(shè)置。下面我們用Chrome瀏覽器來(lái)進(jìn)行講解。
5.2.1 調(diào)出開(kāi)發(fā)者工具調(diào)研開(kāi)發(fā)者工具的方式有以下幾種。
方式1:按F12調(diào)出(很多人把這個(gè)工具叫作F12)。
方式2:在瀏覽器中,單擊鼠標(biāo)右鍵,然后選擇“檢查”。
方式3:在瀏覽器中,按快捷鍵Ctrl+Shift+I。
5.2.2 用Chrome測(cè)試網(wǎng)頁(yè)加載時(shí)間使用Chrome的開(kāi)發(fā)者工具測(cè)試網(wǎng)頁(yè)加載時(shí)間的操作步驟如下。
(1)打開(kāi)Chrome瀏覽器,然后打開(kāi)開(kāi)發(fā)者工具,選中Network選項(xiàng)卡。
(2)訪問(wèn)一個(gè)網(wǎng)址,比如訪問(wèn)www.cnblogs.com/tankxiao,開(kāi)發(fā)者工具能捕獲所有的HTTP請(qǐng)求,如圖5-2所示。
圖5-2 網(wǎng)頁(yè)加載時(shí)間
從圖5-2中可以看出單個(gè)請(qǐng)求的響應(yīng)時(shí)間,可以看到這個(gè)網(wǎng)頁(yè)發(fā)送了49個(gè)請(qǐng)求。總的網(wǎng)頁(yè)響應(yīng)時(shí)間是682毫秒,性能非常好。
5.2.3 用Chrome捕獲12306登錄的POST請(qǐng)求Chrome開(kāi)發(fā)者工具在抓包時(shí),如果頁(yè)面發(fā)生了跳轉(zhuǎn),那么會(huì)把上一個(gè)頁(yè)面的HTTP請(qǐng)求清空。此時(shí)需要選中Preservelog,以保留上次抓到的包。
我們用Chrome來(lái)捕獲12306的登錄請(qǐng)求,該登錄請(qǐng)求用的是POST。具體步驟如下。
(1)在登錄頁(yè)面中輸入用戶名和密碼,選中圖片驗(yàn)證碼后,單擊“登錄”按鈕。
(2)在開(kāi)發(fā)者工具中可以看到登錄時(shí)發(fā)送的一系列請(qǐng)求。
(3)選中HTTP請(qǐng)求,在Headers選項(xiàng)卡中能看到該請(qǐng)求中的用戶名和密碼,如圖5-3所示。
圖5-3 抓12306登錄的包
5.2.4 用Chrome測(cè)試接口的響應(yīng)時(shí)間如圖5-4所示,Chrome中會(huì)顯示每個(gè)請(qǐng)求的響應(yīng)時(shí)間。
圖5-4 單個(gè)請(qǐng)求的響應(yīng)時(shí)間
5.2.5 過(guò)濾請(qǐng)求因?yàn)榭梢圆僮鞯慕缑孑^小,查找HTTP請(qǐng)求不方便,所以一般都需要用到過(guò)濾功能。
Chrome開(kāi)發(fā)者工具具有強(qiáng)大的過(guò)濾功能,可以讓用戶根據(jù)關(guān)鍵字來(lái)過(guò)濾,如圖5-5所示。
圖5-5 根據(jù)關(guān)鍵字過(guò)濾
在Filter輸入框中輸入method:POST,可以過(guò)濾POST***的HTTP請(qǐng)求,如圖5-6所示。
圖5-6 根據(jù)HTTP***過(guò)濾
5.3 vConsole微信小程序、手機(jī)版網(wǎng)頁(yè)H5、手機(jī)App也需要調(diào)試Bug,此時(shí)可以用第三方工具vConsole來(lái)完成。vConsole是一個(gè)輕量、可拓展的、針對(duì)手機(jī)網(wǎng)頁(yè)的前端開(kāi)發(fā)者調(diào)試面板。其用法和瀏覽器開(kāi)發(fā)者工具差不多。vConsole如圖5-7所示。
圖5-7 vConsole工具
5.4 Charles抓包工具如果要在macOS系統(tǒng)中使用抓包工具,我們可以用Charles。Charles的工作原理與用法和Fiddler有點(diǎn)類似。
5.4.1 Charles工具的安裝及使用***Charles與其他工具的安裝過(guò)程大致相同,按照頁(yè)面提示操作即可。Charles安裝成功后,圖標(biāo)是一個(gè)花瓶,所以俗稱青花瓷。Charles是收費(fèi)軟件,如果不付費(fèi)的話,每隔30分鐘,需要重啟Charles。
5.4.2 在Charles中安裝根證書(shū)在Charles中安裝根證書(shū)的步驟如下。
第1步:依次單擊菜單欄中的Help→SSLProxying→InstallCharlesRootCertificate,如圖5-8所示。
第2步:這時(shí)候會(huì)彈出一個(gè)根證書(shū)界面,單擊“添加”按鈕,如圖5-9所示。
第3步:證書(shū)添加成功,如圖5-10所示。
圖5-8 安裝證書(shū)(1)
圖5-9 安裝證書(shū)(2)
圖5-10 證書(shū)添加成功
第4步:雙擊證書(shū)以打開(kāi)證書(shū)簡(jiǎn)介,把證書(shū)設(shè)置為信任,如圖5-11所示。
圖5-11 證書(shū)設(shè)置為信任
5.4.3 Charles配置規(guī)則Charles的配置規(guī)則如圖5-12所示。其中:
Host為配置域名,*表示任意匹配;Port為網(wǎng)頁(yè)瀏覽端口號(hào),這里填443。圖5-12 設(shè)置規(guī)則
5.4.4 用Charles捕捉網(wǎng)站登錄的請(qǐng)求打開(kāi)Charles,再用瀏覽器打開(kāi)某網(wǎng)站并登錄。找到登錄的HTTP請(qǐng)求,可以看到登錄時(shí)發(fā)送的用戶名和密碼,如圖5-13所示。
圖5-13 捕捉某網(wǎng)站的登錄請(qǐng)求
5.5 Wireshark抓包工具Wireshark是非常流行的網(wǎng)絡(luò)封包分析軟件,功能十分強(qiáng)大。它可以截取各種網(wǎng)絡(luò)封包,顯示網(wǎng)絡(luò)封包的詳細(xì)信息。它是一個(gè)跨平臺(tái)的軟件,可以在UNIX系列、Linux、macOS、Windows等多個(gè)平臺(tái)上進(jìn)行網(wǎng)絡(luò)協(xié)議的抓包工作。同時(shí),它也是一個(gè)開(kāi)源軟件。如果想捕獲TCP3次握手協(xié)議,就應(yīng)該使用Wireshark。
Wireshark的抓包原理是嗅探網(wǎng)卡,所以Wireshark只能查看數(shù)據(jù)包,不能修改數(shù)據(jù)包。
5.5.1 Wireshark捕捉HTTPWireshark捕捉HTTP協(xié)議的步驟如下。
第1步:?jiǎn)?dòng)Wireshark,此時(shí)會(huì)出現(xiàn)很多網(wǎng)絡(luò)連接,選擇一個(gè)正在使用的網(wǎng)絡(luò)連接,如圖5-14所示。
圖5-14 選擇網(wǎng)卡
第2步:輸入過(guò)濾條件“HTTP”,這樣就只捕獲HTTP協(xié)議。在瀏覽器中訪問(wèn)http://files-cdn.cnblogs.com/files/TankXiao/http.bmp,Wireshark能捕獲到HTTP的報(bào)文。HTTP請(qǐng)求和HTTP響應(yīng)是分開(kāi)的,HTTP請(qǐng)求有個(gè)向右的箭頭,HTTP響應(yīng)有個(gè)向左的箭頭,如圖5-15所示。
圖5-15 抓HTTP包
第3步:選擇HTTP請(qǐng)求,右鍵單擊并依次選擇追蹤流→TCP流,如圖5-16所示。
圖5-16 選擇“追蹤流”
第4步:打開(kāi)一個(gè)對(duì)話框,可以看到完整的HTTP請(qǐng)求和HTTP響應(yīng),如圖5-17所示。
圖5-17 查看完整的HTTP請(qǐng)求和HTTP響應(yīng)
5.5.2 用Wireshark捕獲HTTPSFiddler和Charles都需要安裝證書(shū)后才能捕獲HTTPS,用Wireshark捕獲HTTPS更麻煩。
某些瀏覽器支持將TLS會(huì)話使用的對(duì)稱密鑰保存在外部文件中,以供Wireshark加密使用。本節(jié)測(cè)試使用的是Chrome71版本和Wireshark5.0版本。捕獲步驟具體如下。
第1步:配置系統(tǒng)變量。變量名為SSLKEYLOGFILE,變量值為C:ssl_keysslog.log,如圖5-18所示。注意后綴名一定要用log,這樣瀏覽器和服務(wù)器SSL協(xié)商的密鑰信息才會(huì)存儲(chǔ)到文件中。
圖5-18 新建環(huán)境變量
第2步:在CMD中運(yùn)行以下命令,
"C:ProgramFiles(x86)GoogleChromeApplicationchrome.exe"--ssl-key-log-file=c:ssl_keysslog.log運(yùn)行成功后可以看到密鑰文件已生成,如圖5-19所示。
圖5-19 密鑰文件
第3步:在Wireshark中配置密鑰文件,依次選擇編輯→首選項(xiàng)→Protocols→TLS,如圖5-20所示。
圖5-20 配置密鑰文件
第4步:重啟Chrome,然后在Chrome中訪問(wèn)https://www.cnblogs.com/tankxiao,此時(shí)就可以抓到HTTPS的包了,如圖5-21所示。
圖5-21 用Wireshark捕獲HTTPS
5.6 本章小結(jié)本章介紹了Fiddler之外其他常見(jiàn)的抓包工具。平常抓包用得最多的是瀏覽器開(kāi)發(fā)者工具。在Windows上抓包首選Fiddler,在Mac計(jì)算機(jī)上無(wú)法使用Fiddler,可以用Charles。Fiddler和Charles是專門(mén)用來(lái)捕獲HTTP/HTTPS的。Wireshark主要用來(lái)抓TCP/UDP或者其他協(xié)議的包,而不會(huì)用來(lái)抓HTTP。
本文摘自剛剛上架的《HTTP抓包之接口自動(dòng)化測(cè)試》
本書(shū)內(nèi)容來(lái)自作者多年從事接口測(cè)試的經(jīng)驗(yàn)總結(jié),貼近實(shí)際,能幫助讀者解決實(shí)際工作中的難題。本書(shū)的主要內(nèi)容有HTTP的基礎(chǔ)知識(shí);如何使用Fiddler來(lái)抓HTTP包;如何分析HTTP包;如何通過(guò)JMeter和Postman等發(fā)送HTTP包,從而實(shí)現(xiàn)軟件自動(dòng)化測(cè)試和接口的自動(dòng)化測(cè)試;如何使用抓包工具來(lái)實(shí)現(xiàn)安全測(cè)試和性能測(cè)試等;幾個(gè)日常生活中應(yīng)用比較廣泛的綜合實(shí)例。本書(shū)圖文并茂、實(shí)例豐富,方便讀者參考并動(dòng)手實(shí)踐,適合前端開(kāi)發(fā)工程師、測(cè)試工程師、線上故障技術(shù)人員、接口開(kāi)發(fā)人員和Web開(kāi)發(fā)人員閱讀。