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