抓包使用場景:
1纫溃、用手機APP或瀏覽器訪問一個頁面腰涧,查看請求的結(jié)果是否正確,請求的參數(shù)是否正確
2紊浩、在不修改任何環(huán)境的情況下窖铡,修改返回的結(jié)果疗锐,即通常所說的mock
3、復雜場景:
比如费彼,同一個域名下的請求滑臊,/img/xxx的資源發(fā)送到ServerA上,請求/api/xxx資源發(fā)送到ServerB上
閱讀目錄
1箍铲、Fiddler 的基本原理
2雇卷、為什么選擇Fiddler,而不是其他工具
3颠猴、通過爬蟲 與 Fiddler 的關(guān)系关划,明白為什么需要進行抓包
4、Fiddler設置HTTPS代理
5芙粱、使用QuickExec命令行(類似我們平常說的快捷鍵)
6、進行案例的分享
一氧映、Fiddler 的基本原理
我們使用瀏覽器或者客戶端軟件都要與外界進行通信春畔,就必然會有數(shù)據(jù)的發(fā)送和接收,有時候需要對這些傳遞的數(shù)據(jù)進行分析岛都,因此需要截獲這些傳遞的數(shù)據(jù)律姨。
其中對這些數(shù)據(jù)進行截獲、重發(fā)臼疫、編輯择份、轉(zhuǎn)存的過程叫做抓包。
本地應用與服務器之間所有的Request 和Response都將經(jīng)過Fiddler烫堤,由Fiddler進行轉(zhuǎn)發(fā)荣赶,此時Fiddler以代理服務器的方式存在。
由于所有的網(wǎng)絡數(shù)據(jù)都會經(jīng)過Fiddler鸽斟,因此Fiddler能夠截獲這些數(shù)據(jù)拔创,實現(xiàn)網(wǎng)絡數(shù)據(jù)的抓包,可以詳細地對HTTP請求進行分析富蓄,并模擬對應的HTTP請求剩燥。
二、為什么選擇Fiddler
1立倍、本地化的工具灭红,是一個使用本地 127.0.0.1:8888 的 HTTP 代理
(免費的web調(diào)試代理工具,支持任何瀏覽器口注、系統(tǒng)或平臺)
啟動Fiddler后变擒,通過瀏覽器訪問:http://127.0.0.1:8888
(1)任何能夠設置 HTTP 代理為 127.0.0.1:8888 的瀏覽器和應用程序都可以使用 Fiddler
(2)工具打開后,就自動設置了IE瀏覽器的代理寝志,工具關(guān)閉后赁项,IE的設置也將被還原
2葛躏、Fiddler本身對http協(xié)議支持較好,且操作簡單容易上手
3悠菜、具有抓包和分析功能舰攒,省去了安裝其他工具的必要
4、工具本身功能強大
(1)劫包:模擬接口不給前端返回數(shù)據(jù)悔醋,看前端怎么處理摩窃,如果沒有工具,就只能采用斷網(wǎng)芬骄、停用服務器
(2)篡改數(shù)據(jù):假設沒法去模擬前端對于接口返回數(shù)據(jù)很長時猾愿,怎么去展示,換行账阻?截鹊倜亍?小屏幕上頁面扭曲淘太?如果通過篡改數(shù)據(jù)姻僧,就能直觀的把數(shù)據(jù)返回給前端展示,很明顯的看到前端數(shù)據(jù)是什么樣的蒲牧,就不需要從底層改數(shù)據(jù)
(3)模擬低速撇贺、弱網(wǎng)環(huán)境等,有些元素加載不出來會導致樣式問題
三冰抢、爬蟲 與 Fiddler 的關(guān)系
網(wǎng)絡爬蟲是自動爬取網(wǎng)頁的程序松嘶,在爬取的過程中必然會涉及客戶端與服務端之間的通信,也需要發(fā)送一些HTTP請求挎扰,并接受服務器返回的結(jié)果翠订。
有些網(wǎng)址變化肉眼是看不出規(guī)律的,這時配合抓包軟件會變得較容易遵倦。
案例:簡書網(wǎng)頁底部“閱讀更多”
在瀏覽一些圖片網(wǎng)站時蕴轨,瀏覽到最下面的時候會出現(xiàn)一個“閱讀更多”的字樣,此時單擊“閱讀更多”頁面上顯示更多內(nèi)容骇吭,加載出來的內(nèi)容跟原來的內(nèi)容是在同一個網(wǎng)頁上展示的橙弱。我們直接看網(wǎng)址的變化是看不出任何規(guī)律的,便無法分析該請求是如何實現(xiàn)的燥狰,無法通過程序構(gòu)造出該請求棘脐。
此時可以通過Fiddler 進行抓包,對這些數(shù)據(jù)進行分析龙致,查看request headers 發(fā)現(xiàn)是通過Get請求來實現(xiàn)的蛀缝,總共有3個參數(shù):order_by、page目代、per_page
通過分析就可以知道頁面上只顯示20篇文章屈梁,之后就需要通過閱讀更多進行加載
每點擊一次閱讀更多嗤练,相當于在修改page值
知道實現(xiàn)規(guī)律后,就可以通過編寫程序構(gòu)造出對應的請求在讶,并由程序自動地實現(xiàn)這些請求的發(fā)送煞抬。
假如修改page為3、4构哺、5革答,在新窗口進行訪問,與頁面閱讀更多進行比對
四曙强、設置HTTPS代理(抓取Firefox上的https請求)
Fiddler 默認是抓 http請求的残拐,對于pc上的 https請求,會提示網(wǎng)頁不安全碟嘴,這時候需要在瀏覽器上安裝證書
Fiddler可以通過偽造CA證書來欺騙瀏覽器和服務器溪食,大概原理就是在瀏覽器面前Fiddler偽裝成一個HTTPS服務器,而在真正的HTTPS服務器面前Fiddler又裝成瀏覽器娜扇,從而實現(xiàn)解密HTTPS數(shù)據(jù)包的目的错沃。
解決辦法
1、檢查Fiddler設置
- 打開菜單欄:Tools>Fiddler Options>HTTPS
- 勾選Decrypt HTTPS traffic袱衷,里面的子菜單也一起勾選了
(檢查沒有問題)
2捎废、導出證書
- 點右上角Actions按鈕(Tools>Fiddler Options>HTTPS)
- 選第二個選項笑窜,導出到桌面致燥,此時桌面上會多一個文件:FiddlerRoot.cer
3、導入到Firefox瀏覽器
- 打開瀏覽器排截,工具>選項>高級>證書>查看證書>證書機構(gòu)>導入
- 下載證書彈出框嫌蚤,勾選三個選項,確定
測試下結(jié)果断傲,打開百度網(wǎng)頁脱吱,成功了,接下來就可以進行抓包了
五认罩、使用QuickExec命令行
1箱蝠、cls (或 clear) 清屏命令
清空會話列表中的所有會話
2、select 篩選某一類型的會話命令
如 select html垦垂,輸入命令后敲回車鍵宦搬,在會話列表中所有html類型的會話都已被選中
3、劫拗? 查找網(wǎng)址中包含某些字符的會話信息
如 间校?jianshu 可以查找出網(wǎng)址中包含“jianshu”字符串的會話信息,跟其他會話信息用不同顏色區(qū)分顯示
4憔足、help 幫助命令
打開官方的使用頁面介紹胁附,所有的命令都會列出來
5、bpu滓彰、bpafter 斷點命令
- bpu 網(wǎng)址:截獲request (這種方法只會中斷www.baidu.com)控妻,中斷請求響應
如bpu https://www.baidu.com/
取消中斷:bpu
- bpafter 網(wǎng)址/會話名:修改Response,中斷某一具體的會話
比如 bpafter www.baidu.com
如果想消除命令的話找蜜,在命令行中輸入“bpafter”
6饼暑、dump 快速保存
六、案例分享
以 鐵路網(wǎng)的貨物跟蹤 為例
頁面有車號洗做、貨票號弓叛、驗證碼三個字段,通過輸入不同格式的值來觀察頁面提示與 Fiddler 抓包返回的 json值
1诚纸、先輸入格式正確的值撰筷,點查詢
2、修改貨票號的位數(shù)畦徘,點查詢
剛接觸Fiddler時毕籽,遇到這種情況我們肯定會有疑惑,那接下來就分析下為什么會是這樣的結(jié)果:
1井辆、兩次抓包的接口是一樣嗎关筒?第一個是post,第二個是get杯缺,不是同一個
2蒸播、第二個請求沒有發(fā)出去,應該是前端直接對數(shù)值的位數(shù)做了校驗的萍肆,這個時候就不會調(diào)接口袍榆,所以就沒有數(shù)據(jù)顯示了
如想更深入的使用Fiddler,請查看進階篇