Fiddler抓包

Fiddler抓包工具

一、下載安裝

1.下載

官網(wǎng)鏈接:https://www.telerik.com/

Fiddler下載版本

Fiddler Classic(經(jīng)典版),這個版本是免費的,不過只能在Windows上使用。

Fiddler Everywhere可以在所有平臺使用,并且相當于Fiddler Classic+postman,但是是收費的。

如果只作為抓包工具經(jīng)典版就夠用了,可以直接點擊下方鏈接前往下載頁面。

下載鏈接:https://www.telerik.com/download/fiddler

Fiddler下載

填好信息之后勾選這兩項,點擊下載。

2.安裝

點擊同意后選擇安裝路徑安裝。

二、抓包

1.基礎(chǔ)操作

1.1抓取請求

  • 界面左側(cè)Web Sessions會話列表中的是HTTP數(shù)據(jù)包。

  • 界面右側(cè)Inspectors用于查看會話的內(nèi)容,上邊是Request請求信息,下邊是Response響應信息。

  • 左下角空白處點擊變成Capturing會開始抓包

    • ALL Processes抓取所有包
    • Web Browsers只抓取PC中瀏覽器的包
    • Non-Browser抓取非瀏覽器的包
    • Hide All隱藏所有代理
      • 代理手機時,Capturing無論是否點擊,都會自動抓包,抓取想要的包后,可點此隱藏其他抓包
  • 字段說明

    • 名稱 含義
      # 抓取HTTP Request的順序,從1開始,以此遞增
      Result HTTP狀態(tài)碼
      Protocol 請求使用的協(xié)議,如HTTP/HTTPS/FTP等
      Host 請求地址的主機名
      URL 請求資源的位置
      Body 該請求的大小
      Caching 請求的緩存過期時間或者緩存控制值
      Content-Type 請求響應的類型
      Process 發(fā)送此請求的進程:進程ID
      Comments 允許用戶為此回話添加備注
      Custom 允許用戶設置自定義值
      圖標 含義
      請求已經(jīng)發(fā)往服務器
      已從服務器下載響應結(jié)果
      請求從斷點處暫停
      響應從斷點處暫停
      請求使用 HTTP 的 HEAD 方法,即響應沒有內(nèi)容(Body)
      請求使用 HTTP 的 POST 方法
      請求使用 HTTP 的 CONNECT 方法,使用 HTTPS 協(xié)議建立連接隧道
      響應是 HTML 格式
      響應是一張圖片
      響應是腳本格式
      響應是 CSS 格式
      響應是 XML 格式
      響應是 JSON 格式
      響應是一個音頻文件
      響應是一個視頻文件
      響應是一個 SilverLight
      響應是一個 FLASH
      響應是一個字體
      普通響應成功
      響應是 HTTP/300、301、302、303 或 307 重定向
      響應是 HTTP/304(無變更):使用緩存文件
      響應需要客戶端證書驗證
      服務端錯誤
      會話被客戶端、Fiddler 或者服務端終止

1.2刪除請求

  • 方法1:點擊工具欄中的×,刪除請求。
  • 方法2:session列表下的黑框QuickExec中輸入cls或clear刪除請求。
  • 快捷鍵Ctrl+x

1.3過濾請求

  • 點擊右側(cè)選項卡中的Filters
  • 勾選User Filters
  • Host Filter選擇Show only the following Hosts
  • 在下方框中填入想要過濾查看的主機地址,以“;”分隔。
  • 點擊Actions,選擇Run filterset now

1.4抓取HTTPS

默認只抓取HTTP協(xié)議的網(wǎng)頁,想抓取HTTPS則需要:

  • 打開Tools--Options--HTTPS選項卡
  • 勾選Capture HTTPS CONNECTs
  • 勾選Decrypt HTTPS traffic
  • 勾選Ignore server certificate errors(unsafe)忽略證書(如果不安裝fiddler證書就如此)

2.HTTP請求與響應

HTTP請求與響應

3.移動端抓包

  • 手機和電腦必須在同一個局域網(wǎng):
    1.手機和電腦連同一個WiFi
    2.手機連WiFi,電腦用網(wǎng)線連接開啟這個WiFi的無線路由
    3.電腦開熱點,手機連熱點
  • 開啟fiddler代理,Tools-Options-Connections , 勾選 Allow remote computers to connect(盡量能勾選的都勾上), 點擊OK
  • 查看自己網(wǎng)卡IP
  • 在移動端連接wifi,并且設置代理IP(電腦端網(wǎng)卡IP)與端口(8888)
  • 移動端訪問網(wǎng)頁輸入代理IP和端口,點擊FiddlerRoot certificate下載Fiddler的證書
  • 安裝證書(安裝方式不同設備會有區(qū)別,可以自己試探或者上網(wǎng)找教程,如果不能安裝顯示不能讀取證書可以試試去設置里搜索CA證書,驗證密碼后安裝)
  • 安裝證書成功后,可以用手機訪問應用,就可以看到截取到的數(shù)據(jù)包

4.Fiddler內(nèi)置命令與斷點

FIddler斷點功能就是將請求截獲下來,但是不發(fā)送,此時可以做一些更改操作。

  • QuickExec命令
命令 對應請求項 介紹 示例
? All 問號后邊跟一個字符串,可以匹配出包含這個字符串的請求 ?google
> Body 大于號后面跟一個數(shù)字,可以匹配出請求大小,大于這個數(shù)字請求 >1000
< Body 小于號跟大于號相反,匹配出請求大小,小于這個數(shù)字的請求 <100
= Result 等于號后面跟數(shù)字,可以匹配HTTP返回碼 =200
@ Host @后面跟Host,可以匹配域名 @www.baidu.com
select Content-Type select后面跟響應類型,可以匹配到相關(guān)的類型 select image
cls All 清空當前所有請求 cls
dump All 將所有請求打包成saz壓縮包,保存到“我的文檔\Fiddler2\Captures”目錄下 dump
start All 開始監(jiān)聽請求 start
stop All 停止監(jiān)聽請求 stop
  • 斷點命令
斷點命令
bpafter All bpafter后邊跟一個字符串,表示中斷所有包含該字符串的請求 bpafter baidu(輸入bpafter解除斷點)
bpu All 跟bpafter差不多,只不過這個是收到請求了,中斷響應 bpu baidu(輸入bpu解除斷點)
bps Result 后面跟狀態(tài)嗎,表示中斷所有是這個狀態(tài)碼的請求 bps 200(輸入bps解除斷點)
bpv / bpm HTTP方法 只中斷HTTP方法的命令,HTTP方法如POST、GET bpv get(輸入bpv解除斷點)
g / go All 放行所有中斷下來的請求 g

5.典型應用

  • web網(wǎng)頁、手機APP抓包

  • 修改服務請求與響應

  • 前端性能分析及優(yōu)化

  • 模擬弱網(wǎng)測試

三、應用場景

  • 通過抓包工具截取觀察網(wǎng)站的請求信息,更深入了解網(wǎng)站
  • 通過用抓包工具截取、觀察網(wǎng)站的請求與返回信息,幫助我們進行BUG的定位于描述
  • 通過抓包工具攔截修改請求信息,繞過界面的限制,測試服務端的功能

1.輔助定位bug

  • 抓到HTTP數(shù)據(jù)包
  • 檢查請求方式與接口地址是否有誤
  • 檢查返回的響應狀態(tài)是否正常
  • 點擊請求的WebForms,檢查接口傳遞參數(shù)
  • 點擊響應的JOSN檢查接口返回的響應數(shù)據(jù)

2.構(gòu)建模擬測試場景

  • 模擬發(fā)送請求,進行接口測試
    • 應用場景1:需求文檔中說明,某個接口限制同一個賬號只能請求一次,同一個設備只能請求一次
    • 應用場景2:存在頁面輸入限制,需要模擬特殊情況請求(例如特殊字符,空格等參數(shù)),測試程序處理機制
  • Mock接口返回數(shù)據(jù),測試程序
    • 應用場景1:需要驗證接口數(shù)據(jù)能否正常處理,但程序處于開發(fā)過程中,后臺無法對發(fā)送請求給出響應
    • 應用場景2:需要驗證程序針對404,500,502等不同狀態(tài)的處理機制

2.1模擬發(fā)送請求

  • Composer允許自定義請求發(fā)送到服務器,可以手動創(chuàng)建一個新的請求,也可以在會話表中,拖拽一個現(xiàn)有的請求
  • 點擊Composer
  • 設置請求方法,請求地址、協(xié)議
  • 設置請求header
  • 設置請求body
  • 發(fā)送請求
  • 查看響應

2.2模擬返回相應數(shù)據(jù)

  • AutoResponder允許攔截指定規(guī)則的請求,并返回本地資源或Fiddler資源,從而代替服務器響應。
  • 點擊AutoResponder
  • 選擇請求,點擊Add Rule添加規(guī)則
  • Rule Editor中選擇響應方式
  • Save
  • 勾選三個選項
    • Enable rules
    • Unmatched requests passthrough
    • Enable Latency

3.模擬弱網(wǎng)環(huán)境操作

進地鐵、上公交、進電梯等,如果app沒有對各種網(wǎng)絡異常進行兼容處理,那么用戶可能在日常生活中遇到APP閃退、ANR、數(shù)據(jù)丟失等問題。

  • 啟動模擬調(diào)制解調(diào)器速度來模擬弱網(wǎng)

    • Rules--Performance--Simulate Modem Speeds
  • Customize Rules(Ctrl+R)自定義規(guī)則

    • if (m_SimulateModem) {
                  // Delay sends by 300ms per KB uploaded.
                  oSession["request-trickle-delay"] = "300"; 
                  // Delay receives by 150ms per KB downloaded.
                  oSession["response-trickle-delay"] = "150"; 
              }
      
    • 在上述函數(shù)中用Math.random()方法可以模擬波動的網(wǎng)絡

    • if (m_SimulateModem) {
                  var t = int(Math.random()*500)
                  // Delay sends by 300ms per KB uploaded.
                  oSession["request-trickle-delay"] = ""+ ( 2 * t ); 
                  // Delay receives by 150ms per KB downloaded.
                  oSession["response-trickle-delay"] = "" + t; 
              }
      
  • 延遲參數(shù)

    • 網(wǎng)絡環(huán)境 上/下行帶寬(kbps) 上/下行丟包率(%) 上/下行延遲(ms) DNS延遲(ms) 備注
      2G 20/50 0/0 500/400 0
      3G 330/2000 0/0 100/100 0
      4G 40000/80000 0/0 15/10 0
      wifi 33000/40000 0/0 1/1 0
      帶寬有限環(huán)境 32/32 0/0 200/100 0
      低丟包率、低時延的環(huán)境(上行) 33000/40000 10/0 100/100 200 WiFi環(huán)境下即可設置測試
      低丟包率、高時延的環(huán)境(上行) 33000/40000 10/0 350/350 350 、、、
      低丟包率、低時延的環(huán)境(下行) 33000/40000 0/10 100/100 200 、、、
      低丟包率、高時延的環(huán)境(下行) 33000/40000 0/10 350/350 350 、、、
      低丟包率、低時延的環(huán)境 33000/40000 10/10 100/100 200 、、、
      低丟包率、高時延的環(huán)境 33000/40000 10/10 350/350 350 、、、
      高丟包率的環(huán)境(上行) 33000/40000 90/0 100/100 200 、、、
      高丟包率的環(huán)境(下行) 33000/40000 0/90 100/100 200 、、、
      高丟包率的環(huán)境 33000/40000 90/90 100/100 200 、、、
      網(wǎng)絡超時(響應) 33000/40000 0/100 100/100 200 、、、
      網(wǎng)絡超時(請求) 33000/40000 100/0 100/100 200 、、、
      網(wǎng)絡超時(完全丟包) 33000/40000 100/100 100/100 200 、、、
      無網(wǎng)(飛行模式或關(guān)閉網(wǎng)絡)

4.前端性能分析及優(yōu)化

  • 選中想查看的session列表
  • 點擊Statistics進行請求的性能數(shù)據(jù)分析
  • 點擊Collapse Chart即可查看所用語言的所占比
  • 點擊Timeline即可查看頁面各個元素的加載時間和順序

問題解決

Q1.Fiddler啟動后Chrome瀏覽器無法瀏覽網(wǎng)頁?

  1. 打開Tools--Options--HTTPS選項卡;
  2. 點擊Actions下拉選擇Trust Root Certificate,彈框選yes,彈框選是(到這一步可能就解決了);
  3. 點擊Actions下拉選擇Export Root Certificate to Desktop,將fiddler證書導出到桌面;
  4. 打開谷歌瀏覽器,設置--高級--安全--管理證書;
  5. 導入證書
  6. 重啟瀏覽器與fiddler。

Q2.如何屏蔽抓取特定端口?

在Fiddler中使用它,用Ctrl+R打開自定義規(guī)則,然后添加到OnBeforeRequest。

if (oSession.host=="localhost:9090"){
    oSession["ui-hide"] = "true";
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

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