不知道讀者在使用 Fiddler 軟件時,是否考慮過 Fiddler 是怎樣抓包的,原理是什么?
Fiddler 本質上是一個 Web 代理服務器,默認的工作端口是 8888。查看端口方式為,點擊菜單 “Tools”,選擇“Options...” 菜單項,如下圖:
在打開的 “Options” 配置框的 “Connections” 選項卡,如下圖:
什么是 Web 代理服務器?
Web 代理(Web Proxy Server)服務器是網絡的中間實體。Web 代理位于 Web 客戶端和 Web 服務器之間,扮演 “中間人” 的角色。HTTP 代理服務器既是 Web服務器又是 Web客戶端。如下圖:
上圖中,瀏覽器發起請求到 Fiddler 代理服務器,然后由 Fiddler 代理服務將請求轉發給真實的服務器。服務器收到請求后,進行各種處理,然后將響應返回給 Fiddler 代理服務器,Fiddler 代理服務器再將響應返回給瀏覽器。
既然瀏覽器的請求和服務器的響應均要通過 Fiddler 代理服務器來轉發,在進行轉發之前,我們可以對請求/響應報文進行任何操作。例如:修改請求參數、修改響應數據、在請求發送到服務器之前打斷點、在響應到達瀏覽器之前打斷點、創建Mock服務等等。
代理服務器的作用
(1)共享網絡:能解決僅僅有一條線路、一個公有 IP 的問題。在公有 IP 資源嚴重不足的情況下,可以滿足局域網大量用戶同時共享上網的需求。
(2)提高了訪問速度:因為大部分的代理服務器都有緩存功能,可以直接從緩存讀取,無須再連接到遠程 Web 服務器,下載訪問資源。這可以加快訪問網站的速度、節約帶寬資源。
(3)突破訪問限制:當訪問權限受到限制時,可以使用有權限的代理服務器去訪問受限資源。
(4)隱藏身份:內部網絡的用戶要對外發布信息,就需要使用代理服務器的反向代理功能。這樣就不會影響內部網絡的安全性能,起到隱藏身份的目的。
Fiddler 工作原理
在了解工作原理前,我們先看看一個具體實例。詳細步驟如下:
(1)打開 Fiddler 軟件,處于抓包狀態的 Fiddler 監聽的端口是 8888,如下圖:
(2)打開 “控制面板”,選擇 “Inte.NET選項”。選擇 “連接” 選項卡,然后點擊 “局域網設置(L)” 按鈕,如下圖:
在局域網設置彈框中,選擇 “高級” 按鈕。如下圖:
打開“代理設置”彈框,如下圖:
從上圖中可知,其實 Fiddler 已經自動將系統 HTTP 和 HTTPS 代理設置為 127.0.0.1:8888 了。如果我們瀏覽器默認使用的是系統代理,那么 Fiddler 就能正常抓包了。
但是,Firefox 瀏覽器是個例外,它可以手動配置是否使用系統代理設置,如果設置不是使用系統代理設置,則 Fiddler 將抓不到 Firefox 瀏覽器的包。如下圖:
如果我們此時將 Fiddler 關閉,再次查看 “Internet選項” 關于局域網的設置。如下圖:
上圖中,已經沒有配置代理服務器信息了,即不走代理,Fiddler 也就不能抓包了。
通過上面的例子的分析,應該明白為什么 Fiddler 能夠抓包了吧!!
Fiddler 抓包的原理和我們生活中快遞代收點類似,快遞員將我們的快遞放在代收點(如果我們快遞沒有使用膠帶等封口,那么代收點是不是可以任意查看、替換我們快遞中的東西,這就類似HTTP;如果我們快遞使用膠帶等封了口的,那么代收點就不能隨意查看快遞中是什么、甚至替換,這就類似HTTPS),我們有時間就到代收點去取快遞。