第八章 抓包工具:fiddler、charles
這兩個工具其實差不多,可能操作上不太一樣,平常呢使用fiddler比較多,fiddler除了常規(guī)的替換http請求、模擬慢網(wǎng)速外,還有一些日常開發(fā)里能用到的特殊功能。charles可能比較適合mac
fiddler 是在客戶端和服務(wù)端之間建立的的 HTTP 代理服務(wù)器,能夠監(jiān)聽客戶端發(fā)出的請求和服務(wù)端返回的響應(yīng)結(jié)果。當(dāng)訪問網(wǎng)頁時,瀏覽器會通過 HTTP協(xié)議向服務(wù)端請求資源,當(dāng)開啟 Fiddler 后,HTTP 請求不會直接發(fā)送給服務(wù)端,而是通過 Fiddler代理進行轉(zhuǎn)發(fā),服務(wù)端收到請求進行響應(yīng),服務(wù)端響應(yīng)同樣會通過 Fiddler代理進行轉(zhuǎn)發(fā)。
在安裝好Fiddler
之后,啟動,可以打開菜單欄中的Tools--->options--->Connections
這里有一句Act as system proxy on startup
意思就是(在啟動時充當(dāng)系統(tǒng)代理)
,并且默認(rèn)監(jiān)聽端口設(shè)置為了8888

這里以chrome瀏覽器
為例:
只要fiddler
一旦啟動并開始監(jiān)聽
的時候,就會默認(rèn)成為系統(tǒng)代理
, 所以你的網(wǎng)絡(luò)請求 也就會被fiddler
所抓取到!
一,在工作中的應(yīng)用
①bug定位:抓取數(shù)據(jù)分析,區(qū)分前后端問題
②斷點篡改數(shù)據(jù)
③弱網(wǎng)測試
④mock數(shù)據(jù)?
二,fiddler有些手機型號不兼容,怎么辦?
檢查下手機上有沒有什么安全設(shè)置,是不是在同一網(wǎng)絡(luò)下,證書是否生效,fiddler開源代碼,它的更新可能比手機啊系統(tǒng)更新要晚一步,所以如果實在抓不到的話,不要死磕,換一臺手機進行測試,可以用模擬器,但模擬器跟真機還是不完全一樣的,盡量用真機,而且其實接口不太會考慮兼容性,接口正常,能調(diào)通就可以了,至于兼容性可以在功能測試時多測試
一、篡改數(shù)據(jù)
除了抓包之外,F(xiàn)iddler另一強大的功能莫過于設(shè)置斷點,設(shè)置好抓包斷點后,可以改請求的數(shù)據(jù)包、返回的數(shù)據(jù)包,偽造請求、返回。
1、如果需要篡改請求參數(shù),則需要在請求前設(shè)置斷點:
場景一:請求前設(shè)置斷點,篡改請求參數(shù)
步驟1:在瀏覽器打開目標(biāo)網(wǎng)址:xx.xx.xx.xx:xxxx/eticket-web/index.html#/login
步驟2:在fiddler中添加主機:

步驟3:設(shè)置斷點:?Rulers –Automatic Breakpoints—Before Requests

步驟4:在目標(biāo)網(wǎng)頁中進行操作:

步驟5:fiddler會話列表中,可以看到這個請求已經(jīng)被設(shè)置了請求前斷點,點擊該會話,在右側(cè)請求參數(shù)中,篡改開票金額



步驟6:點擊【Break on Rep】、【Run to Comp】2個按鈕,觀察響應(yīng)報文
break on response 用于修改響應(yīng)
run to completion 完成修改
這邊點擊raw,修改請求頭部分?jǐn)?shù)據(jù),點擊run to complete即可。

篡改數(shù)據(jù)后再向服務(wù)器發(fā)送請求,請求失?。?/p>
2、如果需要篡改響應(yīng)數(shù)據(jù),則需要在請求后設(shè)置斷點:
場景二:響應(yīng)后設(shè)置斷點,篡改響應(yīng)參數(shù)
步驟1:在瀏覽器打開目標(biāo)網(wǎng)址:xx.xx.xx.xx:xxxx/eticket-web/index.html#/login
步驟2:在fiddler中設(shè)置斷點:Rulers –Automatic Breakpoints—After Responses

步驟3:在目標(biāo)網(wǎng)頁上進行正常操作:
先打開目標(biāo)網(wǎng)址進行登錄,然后將fiddler攔截的登錄成功的響應(yīng)信息進行修改:
fiddler攔截的響應(yīng)信息:

將攔截的響應(yīng)信息進行修改:

查看目標(biāo)網(wǎng)址返回的信息


需要注意,使用這種方式所有的請求都會受到影響,為全局?jǐn)帱c,使用后需要清除斷點:
rules -> automatic point -> disabled
3、根據(jù)請求方式設(shè)置斷點
如輸入bpm get,點擊回車,在目標(biāo)網(wǎng)址中進行操作

如果請求方式為get,則fiddler工具會攔截,如圖所示:

如果請求方式非get,則fiddler工具不攔截,請求成功,如圖所示:

4,局部斷點
fiddler還有另一種打斷點方式,即單斷點。該斷點適用于已經(jīng)知道了某個接口地址的情況下去進行單斷點。
請求前斷點:?bpu
響應(yīng)后斷點:bpafter
1. 針對api設(shè)置斷點
在命令行輸入bpu url 回車
e.g bpu?https://www.baidu.com/
2. 清除斷點
打完斷點后,如果不需要用了則在命令行再次輸入:bpu或者bpafter并回車即可
1、確保手機和電腦在同一個局域網(wǎng)(手機連接電腦WiFi)
查看電腦IP
菜單+R 進入控制臺,輸入cmd
輸入指令 ipconfig
找到IPv4地址:

2、抓包工具fiddler要設(shè)置允許抓取移動端的包,并設(shè)置端口。
tools--options,按圖勾選


tools--options--connections

之后要重啟fiddler.
3、手機WiFi設(shè)置,修改網(wǎng)絡(luò),高級選項,代理改為手動,將電腦IP和步驟二設(shè)置的端口填進去。


4、代理設(shè)置完成,用safari打開服務(wù)器,http://192.168.1.5:8888(如果打不開,可以重啟fiddler或者下載新版本,在剛用的時候也是打不開,后面重啟了fiddler就解決了這個問題),打開后下載證書,下圖打箭頭處;選擇信任,安裝即可;

5,在手機上操作APP或小程序,用fiddler抓包,注意body量大的基本就是你想要的;

注意:
1. 在做手機或移動端APP的接口測試時,需要從開發(fā)人員那里獲取接口文檔,接口文檔應(yīng)該包括完整的功能接口、接口請求方式、接口請求URL、接口請求參數(shù)、接口返回參數(shù)。如果當(dāng)前項目沒有接口文檔,則可以使用fiddler對APP進行抓包確認(rèn)。
2. 在手機上對APP進行操作,然后在Fiddler中可以抓取對應(yīng)的網(wǎng)絡(luò)交互信息
3. (一個功能中可能設(shè)計多個接口的交互)。在抓取的信息中可以看到接口請求方式、接口請求URL、接口請求參數(shù)、接口返回參數(shù)。
4. 因為fiddler抓包的原理就是通過代理,所以被測終端需要和安裝fiddler的電腦在同一個局域網(wǎng)中。
三、模擬弱網(wǎng)測試
1.為什么要做弱網(wǎng)測試呢?協(xié)助開發(fā)定位弱網(wǎng)問題,確保App在2G、3G、4G各種網(wǎng)絡(luò)環(huán)境下,每個頁面都能打開,都能正常跳轉(zhuǎn),能完成完整的支付流程、上下架流程。不要輕易彈出“無法連接到網(wǎng)絡(luò)”,“網(wǎng)絡(luò)連接超時”,“系統(tǒng)繁忙”等提示
2. 在Fiddler中有弱網(wǎng)測試。我們可以通過Fiddler進行弱網(wǎng)測試。弱網(wǎng)測試就是通過控制上傳下載的速度來進行測試
Rules-->Performance-->Simulate Modem Speeds.

在FiddlerScript中找到如下代碼進行調(diào)整:


3. Ctrl+F查找。跳出上傳下載速度。進行調(diào)節(jié)。Fiddler限速是以網(wǎng)絡(luò)延遲的方式實現(xiàn)的,網(wǎng)絡(luò)延遲時間*網(wǎng)速=傳輸字節(jié)數(shù)。
Delay sends by 300ms per KB uploaded.說得很明白,延遲發(fā)送每上傳一個 KB 300毫秒。即1kb/0.3s(10kb/3s)
4. 修改完成后,按ctrl+s保存腳本,在運行腳本,即可限制網(wǎng)速上網(wǎng)了。如下圖

5. 然后就可以打開網(wǎng)頁抓包查看。
四、抓取HTTPS的包
1. http協(xié)議端口是8080.https協(xié)議端口則是443,他們使用是完全不同的傳輸協(xié)議。http協(xié)議的鏈接是無狀態(tài)的;https協(xié)議是由ssl+http協(xié)議構(gòu)建可進行加密傳輸,身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,他比http協(xié)議安全。
2. http是超文本傳輸協(xié)議,信息是明文傳輸。所以抓http比較容易。
3. https則是具有安全性的ssl加密傳輸協(xié)議。https協(xié)議需要到ca申請證書。
fiddler
默認(rèn)是只抓取http
協(xié)議,?
那么要抓取https
協(xié)議的會話需要打開配置安裝證書
才可以,畢竟目前很多網(wǎng)站都是https
協(xié)議的, 所以在抓包之前,我們還要配置一下證書
?否則無法抓包!
操作方法如下:
執(zhí)行菜單欄中的:Tools---->Options---->HTTPS
然后勾選Decrypt HTTPS traffic(解密HTTPS流量)
然后會彈出一個對話框
?直接點擊YES
即可!
或者其他操作步驟:
首先將證書導(dǎo)出到桌面


然后,將證書上傳到瀏覽器


最后,在瀏覽器打開網(wǎng)頁,用fiddler抓包

報錯解決:
1、下載不了證書
安裝fiddlercertmaker
檢查抓包工具版本是不是最新
2、修改響應(yīng)數(shù)據(jù)的時候一片空白
要先點擊解碼,再修改數(shù)據(jù),然后點runto completion
3、fiddler啟動報錯

五,mock數(shù)據(jù)?
設(shè)置AutoResponder能快速模擬返回數(shù)據(jù),測試客戶端的數(shù)據(jù)渲染。
將目標(biāo)接口拖拽到AutoResponder頁面中

右鍵編輯返回的內(nèi)容

修改相關(guān)數(shù)據(jù)后,點擊save
按鈕保存

接下來勾選Enable rules
和勾選需要設(shè)置的接口,重新打開瀏覽器就可以看到內(nèi)容被修改了

勾選Enable rules的同時,最好也同時勾上Unmatched requests passthrougth,這個選項是不匹配的全部放行。
上面mock的數(shù)據(jù)是基于抓包數(shù)據(jù),你也可以自定義接口返回的文件
