Fiddler抓包進(jìn)階篇

閱讀本篇內(nèi)容之前,建議先對(duì)基礎(chǔ)熟悉下

本文內(nèi)容綱要如下

1、模擬限速操作
2、篡改數(shù)據(jù)
3、重定向功能
4、發(fā)送自定義請(qǐng)求,模擬小型接口測(cè)試
5、APP端抓包

一、限速

先補(bǔ)充下知識(shí):
網(wǎng)絡(luò)數(shù)據(jù)傳輸分為發(fā)送數(shù)據(jù)和接收數(shù)據(jù)兩部分。

上傳就是向外部發(fā)送數(shù)據(jù),下載為從外部接收數(shù)據(jù)。他們都受網(wǎng)絡(luò)帶寬和設(shè)備性能制約。 在日常網(wǎng)絡(luò)傳輸中大致1Mbps=1024/8Kb/s=128Kb/s(1/8)。例如上行的網(wǎng)絡(luò)帶寬為100Mbps,那么最大上傳速度就是12800Kb/s,也就是12.5Mb/s。

用戶(hù)申請(qǐng)的寬帶業(yè)務(wù)速率指技術(shù)上所能達(dá)到的最大理論速率值,用戶(hù)上網(wǎng)時(shí)還受到用戶(hù)電腦軟硬件的配置、所瀏覽網(wǎng)站的位置、對(duì)端網(wǎng)站帶寬等情況的影響,故用戶(hù)上網(wǎng)時(shí)的速率通常低于理論速率值。 理論上:2M(即2Mb/s)寬帶理論速率是:256KB/s(即2048Kb/s),實(shí)際速率大約為103--200KB/s;4M(即4Mb/s)的寬帶理論速率是:512KB/s,實(shí)際速率大約為200---440KB/s。以此類(lèi)推。

背景:進(jìn)行日常測(cè)試時(shí)通常網(wǎng)絡(luò)情況都比較好(內(nèi)網(wǎng)),所以有時(shí)會(huì)忽略在低速或網(wǎng)絡(luò)狀況不好的情況下系統(tǒng)頁(yè)面的表現(xiàn)(前端是怎么處理的)

手機(jī)可以用2G、3G、4G,也是一種方式,但這都是網(wǎng)絡(luò)模式,而Fiddler可以設(shè)置上傳和下載的延時(shí)時(shí)間,這種控制非常靈活,可以幫助我們模擬低速網(wǎng)絡(luò)情況下頁(yè)面、APP的顯示與交互情況,比如響應(yīng)時(shí)間過(guò)長(zhǎng)時(shí)是否有彈出網(wǎng)絡(luò)不好的提示、頁(yè)面crash以及顯示錯(cuò)亂、session是否一致等

設(shè)置限速時(shí)間

(1)打開(kāi) 【Rules---Customer Rules】,Ctrl+F搜索(m_SimulateModem),默認(rèn)發(fā)送數(shù)據(jù)是300毫秒,接收數(shù)據(jù)是150毫秒,根據(jù)實(shí)際情況限速后進(jìn)行保存(Ctrl+S)

PS:默認(rèn)是300和150,大致模擬出來(lái)的帶寬如下

上傳帶寬=(1*8/1000)/0.300≈0.053Mbps 
下載帶寬=(1*8/1000)/0.150≈0.027Mbps

實(shí)際帶寬是在計(jì)算所得的基礎(chǔ)上乘2,也就是說(shuō)

上傳帶寬=((1*8/1000)/0.300)*2.0≈0.106Mbps 
下載帶寬=((1*8/1000)/0.150)*2.0≈0.053Mbps

(2)啟用限速:Rules---Performance---Simulate Modem Speeds

限速設(shè)置.png

演示:對(duì)于發(fā)送數(shù)據(jù)(uploaded)每KB延遲30000毫秒,接受數(shù)據(jù)(downloaded)每KB延遲30000毫秒

(3) 重啟
打開(kāi)瀏覽器,訪(fǎng)問(wèn)百度,搜索python,頁(yè)面加載非常慢,等全部加載完成時(shí)可以到Statistics查看時(shí)間

image.png

真實(shí)案例:
訂單詳情頁(yè)面,有個(gè)添加備注按鈕,在按鈕點(diǎn)擊時(shí)已經(jīng)做了控制,將按鈕置灰,避免用戶(hù)重復(fù)點(diǎn)擊,但最終忘記做低速測(cè)試了,導(dǎo)致線(xiàn)上出問(wèn)題了
通過(guò)排查是button未做防重復(fù)點(diǎn)擊導(dǎo)致低網(wǎng)速下插入多條記錄,這種情況需要前后端一起控制,前端設(shè)置變量,按鈕點(diǎn)擊后記錄狀態(tài)

添加備注頁(yè)面.png
未限速導(dǎo)致記錄重復(fù)添加.png

PS:測(cè)試結(jié)束后記得取消限速


二、篡改數(shù)據(jù)

篡改分兩種:

一種是修改請(qǐng)求數(shù)據(jù),檢查接口的處理情況,這種適用于不方便直接調(diào)接口,其不關(guān)心頁(yè)面,只看接口處理是否正常,返回的數(shù)據(jù)對(duì)不對(duì)

比如 Harbor House官網(wǎng)注冊(cè)頁(yè)面 用戶(hù)名限制的字符長(zhǎng)度是2-20 ,把字符加到21以上,看效果,根據(jù)前端頁(yè)面的預(yù)期結(jié)果是提示用戶(hù)名超長(zhǎng)了,而實(shí)際結(jié)果是注冊(cè)成功了

注冊(cè)頁(yè)面用戶(hù)名.png

于是去數(shù)據(jù)庫(kù)查了下表結(jié)構(gòu),發(fā)現(xiàn)用戶(hù)名字段的長(zhǎng)度是50,所以重新注冊(cè)下,字符超過(guò)50,看接口返回的信息,提示“信息輸入有誤”,OK,測(cè)試通過(guò),說(shuō)明接口在這塊做了保護(hù)

字符超過(guò)數(shù)據(jù)表字段長(zhǎng)度.png

用剛注冊(cè)成功的用戶(hù)名進(jìn)行登錄,提示“賬號(hào)長(zhǎng)度只能在2-20位字符之間”,登錄失敗
(引申:這些不會(huì)生效的數(shù)據(jù),也會(huì)被稱(chēng)為臟數(shù)據(jù),不改掉會(huì)影響到后續(xù)性能)

登錄失敗

在這里做個(gè)假設(shè):
仍然是上面的例子,頁(yè)面上注冊(cè)時(shí)提示沒(méi)成功,但實(shí)際數(shù)據(jù)庫(kù)中已經(jīng)保存數(shù)據(jù)了,這樣就算bug了,前端不應(yīng)該在用戶(hù)捕獲到超過(guò)長(zhǎng)度的字符時(shí)還去調(diào)用接口

理論上前后端對(duì)于輸入?yún)?shù)的限制應(yīng)該保持一致,但實(shí)際上數(shù)據(jù)庫(kù)字段長(zhǎng)度是要比前兩者多的,因?yàn)橐粲懈辉5目臻g作為優(yōu)化

再比如注冊(cè)頁(yè)面對(duì)用戶(hù)郵箱有進(jìn)行驗(yàn)證,F(xiàn)iddler中修改后查看服務(wù)端是否有驗(yàn)證,有興趣的朋友可以自己去嘗試下

修改頁(yè)面請(qǐng)求值

構(gòu)造請(qǐng)求數(shù)據(jù),突破表單的限制,可以隨意提交數(shù)據(jù),避免頁(yè)面JS和表單限制,從而影響相關(guān)調(diào)試(繞過(guò)前端)

1、設(shè)置斷點(diǎn):

Fiddler菜單欄->Rules->Automatic Breakpoints->選擇Before Responses,
也就是發(fā)送請(qǐng)求之后,在Fiddler代理中轉(zhuǎn)之前是可以修改請(qǐng)求數(shù)據(jù)的

2、觀察inspector,頁(yè)面內(nèi)容出現(xiàn)變化后修改Body的Value值,然后點(diǎn)擊 “Run To Complete“,回到瀏覽器查看響應(yīng)結(jié)果
修改請(qǐng)求值.png

從案例分享中,可以知道運(yùn)單號(hào)的長(zhǎng)度需>=5,那么調(diào)試時(shí)就輸入3個(gè)字符,看看頁(yè)面的響應(yīng)是否正常
圖中獲取不到提示,顯示undefined,說(shuō)明并沒(méi)有調(diào)用接口

請(qǐng)求響應(yīng).png

另一種是修改返回包的數(shù)據(jù),關(guān)心的是頁(yè)面處理情況
比如理財(cái)app上顯示金額,那么我們?cè)跍y(cè)試時(shí)肯定要考慮金額的長(zhǎng)度,此時(shí)可以通過(guò)篡改數(shù)據(jù)來(lái)看服務(wù)端返回不同的結(jié)果來(lái)看頁(yè)面顯示是否正常

修改頁(yè)面響應(yīng)結(jié)果(攔截響應(yīng)數(shù)據(jù),修改響應(yīng)實(shí)體)
1、設(shè)置斷點(diǎn):

Fiddler菜單欄->Rules->Automatic Breakpoints->選擇After Responses,
也就是服務(wù)器響應(yīng)之后,但是在Fiddler將響應(yīng)中轉(zhuǎn)給客戶(hù)端之前是可以修改響應(yīng)的結(jié)果

2、觀察inspector,頁(yè)面內(nèi)容出現(xiàn)變化(說(shuō)明攔截成功)
抓包頁(yè)面.png
3、切換到TextView,修改message,然后點(diǎn)擊 “Run To Complete“,回到瀏覽器查看響應(yīng)結(jié)果
頁(yè)面響應(yīng)結(jié)果.png

PS:可以試著將message信息改的很長(zhǎng),頁(yè)面變形了,那就說(shuō)明有問(wèn)題了
如下頁(yè)面是增加了滾動(dòng)條

image.png


三、利用AutoResponder替換服務(wù)器的返回?cái)?shù)據(jù)(即原資源)

AutoResponder:重定向功能,將HTTP請(qǐng)求重定向到本地的文件,進(jìn)行調(diào)試。

1、比如 百度官網(wǎng) logo,用戶(hù)提出來(lái)要更新下,這時(shí)可以通過(guò)這功能實(shí)現(xiàn),也就是不需要修改代碼,就能預(yù)覽換個(gè)logo圖片文件的效果

在右上角選擇AutoResponder頁(yè)簽,勾選Enable rules、Unmatched requests passthrough 兩個(gè)選項(xiàng),點(diǎn)擊Add rule 按鈕,在下方填寫(xiě)替換的規(guī)則,編輯好之后,點(diǎn)擊保存

第一行填寫(xiě)地址完全匹配,也可以寫(xiě)正則表達(dá)式進(jìn)行模糊匹配,也可以從左側(cè)把請(qǐng)求數(shù)據(jù)拖過(guò)來(lái)
第二行填寫(xiě)要替換的內(nèi)容,下拉框有很多選項(xiàng)可以選擇, 比如201、302、404,502等status code

設(shè)置替換規(guī)則.png

設(shè)置好替換圖片后點(diǎn)擊重新訪(fǎng)問(wèn)百度,請(qǐng)求回來(lái)的數(shù)據(jù)已經(jīng)是替換后的內(nèi)容了

image.png

2、修改Response數(shù)據(jù)時(shí)超時(shí)
設(shè)置斷點(diǎn)【After Response】之后,修改響應(yīng)數(shù)據(jù),來(lái)實(shí)現(xiàn)修改Response的內(nèi)容,
但是這樣容易造成請(qǐng)求超時(shí)

超時(shí):客戶(hù)端發(fā)送一個(gè)請(qǐng)求出去,如果在指定的時(shí)間內(nèi),沒(méi)有返回,那么就不會(huì)再來(lái)處理這個(gè)請(qǐng)求了

假設(shè)修改內(nèi)容的操作大于設(shè)置的超時(shí)時(shí)間,就算之后將斷點(diǎn)放行,請(qǐng)求返回200,這個(gè)時(shí)候客戶(hù)端也不會(huì)做任何處理,可以理解為修改的內(nèi)容沒(méi)有產(chǎn)生效果。

此時(shí)就可以利用AutoResponder的功能了,直接將修改之后的內(nèi)容放到文件
步驟:
(1)查看該結(jié)果返回的數(shù)據(jù)內(nèi)容及格式
選擇請(qǐng)求,右擊,Save -> Response -> Response Body ,保存響應(yīng)體,可以是文本格式

保存響應(yīng)體.png

(2)修改響應(yīng)體的數(shù)據(jù),如圖修改title,重新發(fā)送請(qǐng)求,發(fā)現(xiàn)title和響應(yīng)頭部信息都已經(jīng)更新

修改響應(yīng)體的數(shù)據(jù).png

PS:強(qiáng)制刷新Ctrl+F5,獲取最新資源


四、發(fā)送自定義請(qǐng)求(request-builder)

Composer:一個(gè)小型、簡(jiǎn)易的接口測(cè)試工具,可以填接口地址,設(shè)置請(qǐng)求參數(shù)、填寫(xiě)響應(yīng)結(jié)果,也可以修改相應(yīng)的頭信息(如添加常用的accept,host,referrer,cookie,cache-control等頭部)后execute

1、比如 POST請(qǐng)求, Harbor House官網(wǎng)注冊(cè)頁(yè)面

先輸入正常值,抓取請(qǐng)求數(shù)據(jù),然后找到相應(yīng)的請(qǐng)求,直接拖到Composer里面,然后在Copmposer中修改參數(shù)數(shù)據(jù)(此處為賬號(hào)),點(diǎn)擊Execute 就會(huì)產(chǎn)生一個(gè)新的請(qǐng)求,雙擊后可以看到返回的信息,提示賬號(hào)已經(jīng)存在

請(qǐng)求數(shù)據(jù).png
提示信息.png
2、比如GET請(qǐng)求,百度搜索python

雙擊請(qǐng)求,切換到Webview

百度搜索請(qǐng)求

PS:如果是亂碼,請(qǐng)求header那設(shè)置 Content-Type:charset=utf-8


五、APP端抓包

前置條件

1、手機(jī)和電腦在同一局域網(wǎng)(PC端可以設(shè)置wifi熱點(diǎn))
2、完成Fiddler的配置(允許遠(yuǎn)程連接),端口默認(rèn)8888,然后重啟Fiddler使其生效
Tools——>Options——>Connections,勾選Allow remote computers to connect

Fiddler配置.png

接下來(lái)在CMD命令窗口,查看Fiddler進(jìn)程是否能正常監(jiān)聽(tīng)8888端口,如果服務(wù)沒(méi)有正常開(kāi)啟,可以嘗試使用其他端口,端口修改的位置,如上圖位置
以下兩種方法都可以:
(1)執(zhí)行 netstat -anop tcp
(2)執(zhí)行 netstat -ano|findstr “8888”
PS:0.0.0.0:8888,4個(gè)0代表所有的ip都可以連接進(jìn)來(lái)這個(gè)端口

查看端口.png

3、查看本機(jī)的IP
(1)命令行中輸入:ipconfig 查看 IPV4

命令行中查看IP.png

(2)直接在Fiddler中查看

Fiddler中查看IP.png

4、手機(jī)配置代理(我用的iPhone手機(jī))
(1)設(shè)置——>無(wú)線(xiàn)局域網(wǎng)——>選擇wifi——>設(shè)置HTTP代理(輸入IP,端口是Fiddler的代理端口8888)

手機(jī)設(shè)置代理.png

(2)打開(kāi)手機(jī)瀏覽器Safiri下載證書(shū) 就可以抓取https的請(qǐng)求了

  • 輸入:http://本機(jī)的IP:8888,下載FiddlerRoot certificate
  • 安裝并進(jìn)行驗(yàn)證
手機(jī)證書(shū)配置.png

5、操作app進(jìn)行抓包

image.png

如果只想看移動(dòng)端數(shù)據(jù),也很簡(jiǎn)單,只需關(guān)閉pc端的代理就可以了(關(guān)閉Fiddler的“Capuring”開(kāi)關(guān))

關(guān)閉Fiddler的“Capuring”開(kāi)關(guān).png

答疑解惑:
有一次,公司辦公,需要抓包,此時(shí)手機(jī)和電腦連的都是wifi,工具設(shè)置也沒(méi)問(wèn)題,就是抓不到包,后來(lái)發(fā)現(xiàn)是網(wǎng)絡(luò)的問(wèn)題
解決辦法:電腦上安裝熱點(diǎn),手機(jī)連電腦熱點(diǎn),之后就可以抓包了

PS:抓包之后記得關(guān)閉手機(jī)代理,以免手機(jī)上不了網(wǎng)



結(jié)束語(yǔ)

通過(guò)Fiddler可以抓取請(qǐng)求和響應(yīng)參數(shù),對(duì)參數(shù)進(jìn)行分析,可以定位是前端還是后臺(tái)問(wèn)題。

案例一:
在測(cè)試登錄接口時(shí),輸入了正確的手機(jī)號(hào)和密碼,點(diǎn)擊登錄后,前端提示“請(qǐng)輸入正確的用戶(hù)名和密碼”

如上案例,僅僅通過(guò)界面的提示信息,我們只能描述bug表象,但不能分析出問(wèn)題原因。假設(shè)通過(guò)抓包發(fā)現(xiàn)是由于前端參數(shù)名錯(cuò)誤或 參數(shù)值為空,從而導(dǎo)致后臺(tái)報(bào)錯(cuò)。

案例二:
在列表頁(yè)測(cè)試搜索接口時(shí),輸入商品一、二級(jí)類(lèi)目,點(diǎn)擊搜索,頁(yè)面沒(méi)有數(shù)據(jù)

通過(guò)抓包發(fā)現(xiàn)前端提交的二級(jí)類(lèi)目參數(shù)與接口文檔中的字段不一致

針對(duì)上述兩種案例,測(cè)試人員就可以將bug指向前端開(kāi)發(fā)人員,并將參數(shù)數(shù)據(jù)和接口文檔中對(duì)應(yīng)的報(bào)文數(shù)據(jù)以附件的形式上傳,是不是可以提高bug的解決效率呢?同時(shí)也可以讓開(kāi)發(fā)對(duì)測(cè)試人員有個(gè)好印象(哇,這測(cè)試還是可以的,把原因找出來(lái)了),不是??!

Fiddler在實(shí)際的功能測(cè)試中有很大的作用
1、可以更好的了解某個(gè)業(yè)務(wù)中客戶(hù)端和服務(wù)器端是通過(guò)哪些接口進(jìn)行請(qǐng)求的,從而更好的了解代碼邏輯(尤其對(duì)于新人來(lái)說(shuō),通過(guò)抓包和數(shù)據(jù)庫(kù)的數(shù)據(jù)寫(xiě)入操作就能很快熟悉);
2、可以通過(guò)響應(yīng)數(shù)據(jù)判斷哪里出現(xiàn)了問(wèn)題
比如服務(wù)器掛了,導(dǎo)致前端報(bào)“服務(wù)器故障”,這時(shí)通過(guò)抓包發(fā)現(xiàn)響應(yīng)數(shù)據(jù)返回502,這時(shí)我們可以手動(dòng)去重啟服務(wù)或是聯(lián)系運(yùn)維重啟服務(wù)

image.png
最后編輯于
?著作權(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)容

  • 前言fiddler是一個(gè)很好的抓包工具,默認(rèn)是抓http請(qǐng)求的,對(duì)于pc上的https請(qǐng)求,會(huì)提示網(wǎng)頁(yè)不安全,這時(shí)...
    胖子愛(ài)豬蹄閱讀 13,481評(píng)論 4 22
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,697評(píng)論 19 139
  • 原因 在現(xiàn)實(shí)項(xiàng)目中,由于開(kāi)發(fā)的經(jīng)常調(diào)試,接口的不穩(wěn)定,和接口文檔的不及時(shí)更新,我們選擇做接口測(cè)試,更多的需要自己抓...
    我為峰2014閱讀 3,499評(píng)論 1 5
  • Fiddler_官方網(wǎng)站Fiddler_官方文檔Fiddler_官方視頻Fiddler_官方插件1、Filddle...
    52Alice閱讀 8,028評(píng)論 0 10
  • 我想此刻我真是病了,親愛(ài)的母親 偷開(kāi)的一朵薔薇被染上了憂(yōu)郁 夜色中,你看它多么的無(wú)助 又多么的讓人憐憫 它的故鄉(xiāng)在...
    無(wú)形_4e00閱讀 295評(píng)論 0 3

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