一、Fiddler 介紹
Fiddler 是一個使用 C# 編寫的 http 抓包工具。它使用靈活,功能強大,支持眾多的 http 調試任務,是 web、移動應用的開發調試利器。
1,功能特點
- 同 Httpwatch、Firebug 這些抓包工具一樣,Fiddler 夠記錄客戶端和服務器之間的所有 HTTP 請求,可以針對特定的 HTTP 請求,分析請求數據、設置斷點等。
- 但 Fiddler 更為強大的是,它還可以修改請求的數據,甚至可以實現請求自動重定向,從而修改服務器返回的數據。
- Fiddler 使用也十分方便。在打開 Fiddler 的時候,它就自動設置好了瀏覽器的代理,通過改寫 HTTP 代理,讓數據從它那通過,來監控並且截取到數據。當關閉 Fiddler 的時候,它又自動幫你把代理還原。
2,下載安裝
直接去 Fiddler 的官網下載即可。地址:
http://www.telerik.com/fiddler
二、http 請求抓取
1,Fiddler 啟動后就自動開始工作了。
- 使用瀏覽器隨便訪問幾個頁面,左側區域就會將捕獲的結果顯示出來。
- 通過點擊左下角的圖標可以關閉/開啟抓包功能。
2,查看請求內容
雙擊某個會話請求,在右側的 Inspectors 選項卡中可以查看該會話的內容,上半部分是請求的內容,下半部分是響應的內容。
3,使用 Filters 過濾請求
由於 Fiddler 會抓取所有的 HTTP 請求,這樣會造成左邊的窗口不斷的更新,有時可能會對我們的調試造成干擾。我們可以通過過濾規則的設置,從而來過濾掉那些不想看到的請求。
(1)點擊 Fiters 選項卡,勾選左上角的 Use Filters 即可開啟過濾器。下方有兩個最常用的過濾條件:Zone 和 Host:
- Zone:指定只顯示內網(Intranet)或互聯網(Internet)的內容
- Host:指定顯示某個域名下的會話
(2)比如我們只想顯示與
hangge.com 的會話,可以這么設置。(如果有紅框中的文字,表示修改未生效,點擊即可。)
三、AutoResponder 用法(攔截指定請求,並返回自定義數據)
AutoResponder 允許你攔截指定規則的求情,並返回本地資源或 Fiddler 資源,從而代替服務器響應。這個在我們平時開放調試中也是很有用的:
- 比如在前端開發中,如果發現服務器上某個 css/JavaScript 文件有問題,直接上去改會影響生產環境的穩定。利用 Fiddler 的 AutoResponder 功能,我可以將需要修改的文件重定向到本地文件上,這樣就可以基於生產環境修改並驗證,確認后再發布。
- 再比如服務端提供了接口和數據格式給前端調用,可能由於某些原因,接口還未開發完畢、或者返回數據有異常。為了不影響開發進度,前端仍然可以繼續調用這個接口,然后通過 Fiddler 將請求轉向本地的數據文件上。
(1)比如 hangge.com 首頁用到了 jQuery,假設我們要修改這個 js。
(2)首先將 js 文件保存到本地(如果本地已經有這個文件,可以跳過這步)
(3)接着打開 AutoResponder 標簽設置,勾選前面兩個復選框,開啟 Fiddler 的請求自動重定向功能。
- 第一個復選框的作用是開啟或禁用自動重定向功能,我們就可以在下面添加重定向規則了。
- 第二個復選框框勾上時,不影響那些沒滿足我們處理條件的請求。
(4)下面就要創建重定向規則了,將目標是這個 js 的 HTTP 請求重定向到本地文件。我們可以通過“Add…”按鈕手動添加規則,不過這個 URL 已經出現在我們的 session 列表中,可以直接拖動過來。
(5)接着修改這個規則。點擊下方的下拉框,選擇“Find a file…”,就可以選擇本地的文件作為返回的 body 內容。
(6)這里我們選擇剛才保持下來的 js 文件。這樣我們的請求重定向就設置好了。
(7)試着修改下本地這個 js 文件。比如我們在開頭加了個 alert 語句。
(8)刷新頁面,重新訪問就可以看到效果了。(如果瀏覽器有緩存,要先清下緩存)
四、解密 HTTPS 的網絡數據
通常情況下,對於 HTTPS 請求,我們捕獲后是無法看到里面的數據。
不過 Fiddler 可以通過偽造 CA 證書來欺騙瀏覽器和服務器,從而實現解密 HTTPS 數據包的目的。大概原理就是在瀏覽器面前 Fiddler 偽裝成一個 HTTPS 服務器,而在真正的 HTTPS 服務器面前 Fiddler 又裝成瀏覽器。
(1)要開啟 HTTPS 解密,我們依次點擊菜單欄 Tools -> Telerik Fiddler Options
(2)在彈出窗口中,勾選 HTTPS 標簽頁下的 Decrypt HTTPS Traffic。這是會彈出個對話框詢問是否安裝證書,選擇 Yes 安裝即可。
(3)再次訪問 HTTPS 頁面,可以發現數據已經夠被成功解析了。
五、自定義請求發送到服務器
在 Composer 面板中,我們可以向服務器發送自定義請求,可以手動創建一個新的請求,也可以從會話表中,拖拽一個現有的請求。
使用時我們只需要提供簡單的 URLS 地址即可。當然還可以在 RequestBody 定制一些屬性,如模擬瀏覽器 User-Agent 等等。
六、抓取 iPhone / Android 設備的數據包
想要 Fiddler 抓取移動端設備的數據包,其實很簡單。只要設置代理,讓這些數據通過 Fiddler 即可。
(1)首先確保 PC 和手機是在同一個局域網下。打開 Fidder,點擊菜單欄中 Tools –> Telerik Fiddler Options
(2)勾選 Connections 選項卡中的“Allow remote computers to connect”允許遠程連接。
- 勾選后可能會要求重啟 Fiddler,那就重啟一下。
- 默認代理端口是 8888,可以不需要修改。
(3)將手機端的代理設置為 PC 的 IP 和端口(這里假設我們 PC 地址為 192.168.1.101)
(4)接着打開手機瀏覽器,訪問 PC 的地址+端口
(5)在打開的頁面中點擊“FiddlerRoot certificate”,下載並安裝證書。
(6)安裝完了證書,使用用手機訪問應用,就可以看到截取到的數據包了。(這里我使用百度外賣 App 隨便測試了下)
原文出自:www.hangge.com 轉載請保留原文鏈接:http://www.hangge.com/blog/cache/detail_1697.html