Web浏覽器和Web伺服器之間是通過HTTP協定互相通信的。HTTP協定用途非常廣泛,是任何IT從業人員都需要掌握 ,作為測試人員,掌握HTTP協定顯得尤為重要。
1、什麼是HTTP協定
協定是指雙方進行通信所必須共同遵守的約定。超文本傳輸協定(HyperText Transfer Protocol, HTTP)是網際網路上應用最廣泛的一種網絡協定,它允許将超文本标記語言(HTML)文檔從Web伺服器傳送到用戶端的浏覽器。
2 、HTTP協定工作原理
我們平常上網的時候,在浏覽器的位址欄輸入url位址,然後就可以想看到相關的内容,這是什麼原理呢?

當我們輸入url後,浏覽器就給web伺服器發送了一個http請求,伺服器接收到http請求後進行處理,生成相應的傳回結果,然後發送給浏覽器,浏覽器解析http相應中的html,然後我們就在浏覽器上看到了相關頁面。
這裡可以引申出一個非常常見的面試題:當我們在浏覽器url位址欄輸入一個位址後,會發生一些什麼事情?
-- 當然,這個肯定不止發送一個請求然後拿到響應結果這麼簡單,就好比考試時候的應用題,你回答這麼一句簡單的話,肯定拿不到滿分,具體如何去回答,等後續深入學習之後,相信螢幕前的你就會知道答案了。
在通過上面一張圖了解了http協定的工作原理後,那麼如何去檢視http請求和響應的資料包(封包)的具體内容呢?這裡可以借助一個工具,叫Fiddler。
3 、Fiddler的介紹
Fiddler是一款非常強大web調試工具,能記錄用戶端和伺服器之間的http和https請求的資訊,并且可以設定斷點,修改輸入輸出資料等,是一個非常好用的抓包工具。使用C#語言開發,能使用.NET進行擴充。
Fiddler分為以下幾個版本:
Fiddler2:基于.Net Framework2.0架構開發的,适用于比較老的作業系統,比如XP系統,目前基本被淘汰。
Fiddler4:基于.Net Framework4.0架構開發,使用win7、win10等win系統
Fiddler Everywhere:支援macOS, Windows, and Linux,功能正在逐漸完善中,日常抓包需求可以滿足。
官網下載下傳位址:https://www.telerik.com/fiddler (官網下載下傳慢的,可複制下載下傳連結貼到迅雷裡面下載下傳,親測有效)
Fiddler主界面包括以下幾個區域:
(1)主菜單欄:菜單中幾乎可以啟動所有的Fiddler功能。
(2)工具欄:提供了很多常見的指令和快捷操作等。
(3)Web Sessions清單(會話清單):顯示捕捉到的每個Session的簡短資訊。平常都需要在這裡選擇一個或者多個Session後再進行操作。
(4)功能面闆:這裡有很多頁籤,提供了很多功能。我們常用的是Inspectors頁籤。
(5)QuickExec:指令行工具,可以輸入簡單的指令,例如輸入cls可以清空Web Sessions。
(6)狀态欄:上面顯示了Fiddler的一些配置資訊,以及左下角是否開啟抓包的狀态顯示。
Inspectors頁籤下可以檢視HTTP請求和HTTP響應的封包結構。其中Raw頁籤可以檢視完整的消息,Headers頁籤隻檢視消息中的Header。
Fiddler視窗的左邊是Web Sessions清單,是Fiddler中最重要的部分,顯示了每個Session的摘要資訊。Fiddler中的大部分操作都需要在Web Sessions清單中選擇一個或者多個Session,再進行其他操作。Web Sessions清單中的表頭可以排序。選中某個Sessions可以進行相關内容複制、備注、請求重發等操作。
一個Session包含了一個HTTP請求和一個HTTP響應,Web Sessions清單欄中包含的資訊如下:
#:這是Fiddler生成的ID(最好是按順序排列)。
Result:響應的狀态碼。
Protocol:使用的協定HTTP或者HTTPS。
Host:伺服器的主機名和端口号。
URL:URL的路徑。
Body:HTTP響應中包含的位元組數。
Caching:跟緩存相關的字段的值。
Content-Type:響應中Content-Type的值。
Process:對應本地Windows的程序。
Comments: 備注資訊
一般把捕獲http資料包的過程稱之為抓包。
方法一、在Fiddler中單擊File->Capture Traffic(快捷鍵是F12)來開始抓包或者停止抓包。
方法二、單擊Fiddler左下角的“Capturing”按鈕來開始抓包或者停止抓包。
4 、Fiddler抓包的原理
Fiddler的本質是一個代理伺服器,預設的工作端口是8888。
Web代理伺服器是網絡的中間實體,代理位于Web用戶端和Web伺服器之間,扮演着中間人的角色:
Web代理具有以下功能。
共享網絡。可以滿足區域網路大量使用者同時共享上網的需求。
提高了通路速度。因為大部分的代理伺服器都有緩沖功能,可以直接讀取。
突破了通路限制。當通路權限受到限制時,可以使用有權限的代理伺服器。比如工作中常用的堡壘機,跳闆機等。
隐藏身份。内部網的使用者要對外釋出資訊,就需要使用代理伺服器的反向代理功能。這樣就不會影響内部網絡的安全性能,起到隐藏身份的目的。
5 、Fiddler的工作原理
Fiddler是以代理web伺服器的形式工作的,當我們開啟fiddler後,會偷偷的把Internet選項中的代理修改為127.0.0.1,端口:8888(可自行在fiddler的Tools-Options菜單下進行更改),關掉Fiddler後,會自動取消代理。
6、注意事項:
Fiddler開啟後,如果非正常退出,可能會導緻電腦代理關閉失敗,可重新開機Fiddler試試。
如果電腦上安裝了其他的代理軟體,會影響到抓包。比如,有時候要通路谷歌,會用到VPN或者在谷歌浏覽器上安裝谷歌助手的插件 ,插件開啟後,其工作原理也是開啟了一個代理服務在工作,會影響到抓包。