Fiddler 抓包高级进阶篇-天罗地网抓包大法
閱讀本篇內(nèi)容之前,建議先對基礎(chǔ)熟悉下
本文內(nèi)容綱要如下
喜歡的話關(guān)注收藏評論轉(zhuǎn)發(fā)比心么么噠!Python學習交流719-139-688內(nèi)有大量的項目開發(fā)和新手教學視頻PDF書籍的千人大群等著你來加入
1、模擬限速
2、篡改數(shù)據(jù)
3、重定向功能
4、發(fā)送自定義請求,模擬小型接口測試
5、APP端抓包
一、限速
背景:進行日常測試時通常網(wǎng)絡(luò)情況都比較好(內(nèi)網(wǎng)),所以有時會忽略在低速或網(wǎng)絡(luò)狀況不好的情況下系統(tǒng)頁面的表現(xiàn)(前端是怎么處理的)
手機可以用2G、3G、4G,也是一種方式,但這都是網(wǎng)絡(luò)模式,而Fiddler可以設(shè)置上傳和下載的延時時間,這種控制非常靈活,可以幫助我們模擬低速網(wǎng)絡(luò)情況下頁面、APP的顯示與交互情況,比如響應(yīng)時間過長時是否有彈出網(wǎng)絡(luò)不好的提示、頁面crash以及顯示錯亂、session是否一致等。
設(shè)置限速時間
(1)打開 【Rules---Customer Rules】,Ctrl+F搜索(m_SimulateModem),默認發(fā)送數(shù)據(jù)是300毫秒,接收數(shù)據(jù)是150毫秒,根據(jù)實際情況限速后進行保存(Ctrl+S)
(2)啟用限速:Rules---Performance---Simulate Modem Speeds
演示:對于發(fā)送數(shù)據(jù)(uploaded)每KB延遲30000毫秒,接受數(shù)據(jù)(downloaded)每KB延遲30000毫秒
打開瀏覽器,訪問百度,搜索python,頁面加載非常慢,等全部加載完成時可以到Statistics查看時間
PS:測試結(jié)束后記得取消限速
二、篡改數(shù)據(jù)
篡改分兩種:
一種是修改請求數(shù)據(jù),檢查接口的處理情況,這種適用于不方便直接調(diào)接口,其不關(guān)心頁面,只看接口處理是否正常,返回的數(shù)據(jù)對不對。
比如 Harbor House官網(wǎng)注冊頁面 用戶名限制的字符長度是2-20 ,把字符加到21以上,看效果,根據(jù)前端頁面的預(yù)期結(jié)果是提示用戶名超長了,而實際結(jié)果是注冊成功了。
于是去數(shù)據(jù)庫查了下表結(jié)構(gòu),發(fā)現(xiàn)用戶名字段的長度是50,所以重新注冊下,字符超過50,看接口返回的信息,提示“信息輸入有誤”,OK,測試通過,說明接口在這塊做了保護。
用剛注冊成功的用戶名進行登錄,提示“賬號長度只能在2-20位字符之間”,登錄失敗。
(引申:這些不會生效的數(shù)據(jù),也會被稱為臟數(shù)據(jù),不改掉會影響到后續(xù)性能)
登錄失敗
在這里做個假設(shè):
仍然是上面的例子,頁面上注冊時提示沒成功,但實際數(shù)據(jù)庫中已經(jīng)保存數(shù)據(jù)了,這樣就算bug了,前端不應(yīng)該在用戶捕獲到超過長度的字符時還去調(diào)用接口。
理論上前后端對于輸入?yún)?shù)的限制應(yīng)該保持一致,但實際上數(shù)據(jù)庫字段長度是要比前兩者多的,因為要留有富裕的空間作為優(yōu)化
再比如注冊頁面對用戶郵箱有進行驗證,Fiddler中修改后查看服務(wù)端是否有驗證,有興趣的朋友可以自己去嘗試下。
修改頁面請求值
構(gòu)造請求數(shù)據(jù),突破表單的限制,可以隨意提交數(shù)據(jù),避免頁面JS和表單限制,從而影響相關(guān)調(diào)試(繞過前端)。
1、設(shè)置斷點:
Fiddler菜單欄->Rules->Automatic Breakpoints->選擇Before Responses,
也就是發(fā)送請求之后,在Fiddler代理中轉(zhuǎn)之前是可以修改請求數(shù)據(jù)的。
2、觀察inspector,頁面內(nèi)容出現(xiàn)變化后修改Body的Value值,然后點擊 “Run To Complete“,回到瀏覽器查看響應(yīng)結(jié)果
從案例分享中,可以知道運單號的長度需>=5,那么調(diào)試時就輸入3個字符,看看頁面的響應(yīng)是否正常。
圖中獲取不到提示,顯示undefined,說明并沒有調(diào)用接口
另一種是修改返回包的數(shù)據(jù),關(guān)心的是頁面處理情況
比如理財app上顯示金額,那么我們在測試時肯定要考慮金額的長度,此時可以通過篡改數(shù)據(jù)來看服務(wù)端返回不同的結(jié)果來看頁面顯示是否正常
修改頁面響應(yīng)結(jié)果(攔截響應(yīng)數(shù)據(jù),修改響應(yīng)實體)。
1、設(shè)置斷點:
Fiddler菜單欄->Rules->Automatic Breakpoints->選擇After Responses,
也就是服務(wù)器響應(yīng)之后,但是在Fiddler將響應(yīng)中轉(zhuǎn)給客戶端之前是可以修改響應(yīng)的結(jié)果。
2、觀察inspector,頁面內(nèi)容出現(xiàn)變化(說明攔截成功)
3、切換到TextView,修改message,然后點擊 “Run To Complete“,回到瀏覽器查看響應(yīng)結(jié)果。
PS:可以試著將message信息改的很長,頁面變形了,那就能說明問題了
三、利用AutoResponder替換服務(wù)器的返回數(shù)據(jù)(即原資源)
AutoResponder:重定向功能,將HTTP請求重定向到本地的文件,進行調(diào)試。
1、比如 百度官網(wǎng) logo,用戶提出來要更新下,這時可以通過這功能實現(xiàn),也就是不需要修改代碼,就能預(yù)覽換個logo圖片文件的效果。
在右上角選擇AutoResponder頁簽,勾選Enable rules、Unmatched requests passthrough 兩個選項,點擊Add rule 按鈕,在下方填寫替換的規(guī)則,編輯好之后,點擊保存。
第一行填寫地址完全匹配,也可以寫正則表達式進行模糊匹配,也可以從左側(cè)把請求數(shù)據(jù)拖過來。
第二行填寫要替換的內(nèi)容,下拉框有很多選項可以選擇, 比如201、302、404,502等status code
設(shè)置好替換圖片后點擊重新訪問百度,請求回來的數(shù)據(jù)已經(jīng)是替換后的內(nèi)容了。
2、修改Response數(shù)據(jù)時超時
設(shè)置斷點【After Response】之后,修改響應(yīng)數(shù)據(jù),來實現(xiàn)修改Response的內(nèi)容,但是這樣容易造成請求超時。
超時:客戶端發(fā)送一個請求出去,如果在指定的時間內(nèi),沒有返回,那么就不會再來處理這個請求了。
假設(shè)修改內(nèi)容的操作大于設(shè)置的超時時間,就算之后將斷點放行,請求返回200,這個時候客戶端也不會做任何處理,可以理解為修改的內(nèi)容沒有產(chǎn)生效果。
此時就可以利用AutoResponder的功能了,直接將修改之后的內(nèi)容放到文件
步驟:
(1)查看該結(jié)果返回的數(shù)據(jù)內(nèi)容及格式
選擇請求,右擊,Save -> Response -> Response Body ,保存響應(yīng)體,可以是文本格式。
(2)修改響應(yīng)體的數(shù)據(jù),如圖修改title,重新發(fā)送請求,發(fā)現(xiàn)title和響應(yīng)頭部信息都已經(jīng)更新。
PS:強制刷新Ctrl+F5,獲取最新資源
四、發(fā)送自定義請求(request-builder)
Composer:一個小型、簡易的接口測試工具,可以填接口地址,設(shè)置請求參數(shù)、填寫響應(yīng)結(jié)果,也可以修改相應(yīng)的頭信息(如添加常用的accept,host,referrer,cookie,cache-control等頭部)后execute。
1、比如 POST請求, Harbor House官網(wǎng)注冊頁面
先輸入正常值,抓取請求數(shù)據(jù),然后找到相應(yīng)的請求,直接拖到Composer里面,然后在Copmposer中修改參數(shù)數(shù)據(jù)(此處為賬號),點擊Execute 就會產(chǎn)生一個新的請求,雙擊后可以看到返回的信息,提示賬號已經(jīng)存在。
2、比如GET請求,百度搜索python
雙擊請求,切換到Webview
百度搜索請求
PS:如果是亂碼,請求header那設(shè)置 Content-Type:charset=utf-8
五、APP端抓包
前置條件
1、手機和電腦在同一局域網(wǎng)(PC端可以設(shè)置wifi熱點)
2、完成Fiddler的配置(允許遠程連接),端口默認8888,然后重啟Fiddler使其生效
Tools——>Options——>Connections,勾選Allow remote computers to connect
接下來在CMD命令窗口,查看Fiddler進程是否能正常監(jiān)聽8888端口,如果服務(wù)沒有正常開啟,可以嘗試使用其他端口,端口修改的位置,如上圖位置。
以下兩種方法都可以:
(1)執(zhí)行?netstat -anop tcp
(2)執(zhí)行?netstat -ano|findstr “8888”
PS:0.0.0.0:8888,4個0代表所有的ip都可以連接進來這個端口
3、查看本機的IP
(1)命令行中輸入:ipconfig?查看?IPV4
(2)直接在Fiddler中查看
4、手機配置代理(我用的iPhone手機)
(1)設(shè)置——>無線局域網(wǎng)——>選擇wifi——>設(shè)置HTTP代理(輸入IP,端口是Fiddler的代理端口8888)
(2)打開手機瀏覽器Safiri下載證書 就可以抓取https的請求了
-
輸入:http://本機的IP:8888,下載FiddlerRoot certificate
-
安裝并進行驗證
5、操作app進行抓包
如果只想看移動端數(shù)據(jù),也很簡單,只需關(guān)閉pc端的代理就可以了(關(guān)閉Fiddler的“Capuring”開關(guān))
關(guān)閉Fiddler的“Capuring”開關(guān).png
PS:抓包之后記得關(guān)閉手機代理,以免手機上不了網(wǎng)
總結(jié)
以上是生活随笔為你收集整理的Fiddler 抓包高级进阶篇-天罗地网抓包大法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 构造方法
- 下一篇: SQLServer存储引擎——05.索引