1. 程式人生 > 實用技巧 >簡析Fiddler抓包工具

簡析Fiddler抓包工具

Fiddler介紹

  Fiddler是一款比較強大的web頁面除錯工具,用來記錄客戶端到伺服器之間的請求,包括http請求,跟https請求,會把請求整個過程全部記錄下來,而且允許你監視、設定斷點、甚至修改輸入輸出資料,比如修改某個請求返回,使其返回你給定的結果。當我們進行一些介面測試缺不知道介面的一些資訊,像介面request header,url,請求方式等,我們都可以通過Fiddler工具獲取到。

Fiddler工作原理

  Fiddler 是以代理web伺服器的形式工作的,它使用代理地址:127.0.0.1,埠:8888

  代理伺服器定義: Web 代理(Proxy Server)伺服器是網路的中間實體。


           代理位於 Web 客戶端和 Web 服 務器之間,扮演“中間人”的角色。
          HTTP 的代理伺服器既是 Web 伺服器又是 Web 客戶端。

  注意事項:Fiddler 在啟動的時候,會偷偷把Internet 選項中代理伺服器改成127.0.0.1,埠8888,Fiddler正常退出時會自動取消代理,如果Fiddler非正常退出時,代理沒有取消就會影響其他程式的訪問,所以在使用完Fiddler一定要正常將其退出。如下圖,點選File-Exit正常退出。

關於Fiddler抓包

  首先我們要了解Fiddler介面上都包含哪些內容,如下圖,主要分為四個區域,分別是會話列表,命令列,http請求資訊,http返回資訊

1.使用Fiddler抓包後,會話列表面板如下圖所示:

抓包工具面板功能

#:HTTP Request的順序,從1開始,按照頁面載入請求的順序遞增。

Result: HTTP響應的狀態 Protocol:請求使用的協議(如HTTP/HTTPS)

HOST:請求地址的域名 URL:請求的伺服器路徑和檔名,也包含GET引數

BODY:請求的大小,以byte為單位

Content-Type:請求響應的型別

Caching:請求的快取過期時間或快取控制header的值

Process:發出此請求的Windows程序及程序ID

Comments:使用者通過指令碼或者選單給此session增加的備註

custom:使用者可以通過指令碼設定的自定義值

2.Fiddler右邊面板介紹

Statistics頁籤

通過該頁籤, 使用者可以通過選擇多個會話來得來這幾個會話的總的資訊統計,比如多個請求和傳輸的位元組數。選擇第一個請求和最後一個請求, 可獲得整個頁面載入所消耗的總體時間。從條形圖表中還可以分別出哪些請求耗時最多, 從而對頁面的訪問進行訪問速度優化

inspectors頁籤

它提供headers、textview、hexview,Raw等多種方式檢視單條http請求的請求報文的資訊,它分為上下兩部分:上部分為HTTP Request(請求)展示,下部分為HTTPResponse(響應)展示

AutoResponse頁籤

Fiddler最實用的功能, 它可以抓取線上頁面儲存到本地進行除錯, 大大減少了線上除錯的困難, 可以讓我們修改伺服器端返回的資料, 例如讓返回都是HTTP404或者讀取本地檔案作為返回內容。

可設定開啟某網頁顯示自己想要的內容,比如抓取百度連結,點選addrule,設定如下所示:

到百度頁面重新整理即可顯示該圖片

composer頁籤

支援手動構建和傳送HTTP, HTTPS和FTP請求, 我們還可以從web session列表中拖曳session, 把它放到composer選項卡中, 當我們點選Execute按鈕, 把請求傳送到伺服器端。操作如下圖所示:

這樣設定傳送的請求,就不是瀏覽器發出的了,而是fiddler發出的,檢視inspectors裡面的資訊便可看出

log頁籤: 列印日誌

Filters頁籤

過濾器可以對左側的資料流列表進行過濾, 我們可以標記、 修改或隱藏某些特徵的資料流。

Timeline頁籤

時間軸,也稱為Fiddler的瀑布圖,展示網路請求時間的功能。 每個網路請求都會經歷域名解析、建立連線、傳送請求、接受資料等階段。把多個請求以時間作為 X 軸, 用圖表的形式展現出來, 就形成了瀑布圖。 在左側會話視窗點選一個或多個(同時按下 Ctrl 鍵),Timeline 便會顯示指定內容從服務端傳輸到客戶端的時間

五、Fiddler命令列工具

Fiddler的左下角有一個命令列工具叫做QuickExec,允許你直接輸入命令。

常見得命令有:

help: 開啟官方的使用頁面介紹, 所有的命令都會列出來

cls: 清屏 (Ctrl+x 也可以清屏)

select: 選擇會話的命令, 選擇所有相應型別select image、select css、select html

?sometext: 查詢字串並高亮顯示查詢到的會話列表的條目,?qq.com

>size: 選擇請求響應大小小於size位元組的會話

=status/=method/@host:查詢狀態、方法、主機相對應的session會話,=504,=get,@www.qq.com

quit:退出fiddler

Bpafter,Bps, bpv, bpm, bpu這幾個命令主要用於批量設定斷點

Bpafter xxx: 中斷 URL 包含指定字元的全部 session 響應

Bps xxx:中斷 HTTP 響應狀態為指定字元的全部 session 響應。

Bpv xxx:中斷指定請求方式的全部 session 響應

Bpm xxx:中斷指定請求方式的全部 session 響應,等同於bpv xxx

Bpu xxx:與bpafter類似。

六、Fiddler應用

1.手機抓包

①啟動Fiddler, 開啟選單欄中的Tools > Fiddler Options, 開啟“FiddlerOptions” 對話方塊

②在“Fiddler Options”對話方塊切換到“Connections” 選項卡, 然後勾選“Allowromote computers to connect” 後面的複選框, 然後點選“OK” 按鈕

③在本機命令列輸入:ipconfig, 找到本機的ip地址。

④開啟android裝置的“設定”->“WLAN”,找到你要連線的網路,在上面長按,然後選擇“修改網路”,彈出網路設定對話方塊,然後勾選“顯示高階選項”(不同的手機,設定方法有所不同)

⑤在“代理” 後面的輸入框選擇“手動”,在“代理伺服器主機名”後面的輸入框輸入電腦的ip地址,在“代理伺服器埠”後面的輸入框輸入8888, 然後點選“儲存” 按鈕

⑥然後啟動android裝置中的瀏覽器,訪問百度的首頁,在fiddler中可以看到完成的請求和響應資料

備註: 如果是Android模擬器中ip要填寫10.0.2.2,genymotion模擬器中ip要填寫:10.0.3.2,手機實機中ip填電腦的ip,埠就是burp或者fiddler監聽的埠 ,要處於同一網路下

2.過濾功能

①選擇Filters頁籤,勾選use Filters勾選 Request Headers 中的 Hide if url contains 過濾項

②在裡面輸入:REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav)(\?.*)?$

REGEX: 表示啟用正則表示式(?insx) 設定正則解釋的規則,忽略大小寫等。

此表示式表示過濾掉 url 中包括 css、ico、jpg 等字尾的請求

③勾選 Request Headers中的show only if URL contains,在裡面輸入

REGEX:(?insx).*\.?baidu.com/home.* 只顯示: baidu.com/Home

Fiddler過濾指定域名

第二個選項是隻監控以下網址,如只監控百度,在下面的輸入框裡填上www.baidu.com

“No Host Filter”不設定hosts過濾

“Hide The Following Hosts”隱藏過濾到的域名

“Show Only The Following Hosts”只顯示過濾到的域名

“Flag The Following Hosts”標記過濾到的域名

轉載:

http://www.cnblogs.com/hong-fithing/