1. 程式人生 > >Fiddler 抓包軟體的安裝和使用

Fiddler 抓包軟體的安裝和使用

1. Fiddler 簡介 Fiddler 專用抓包工具,工作在應用層,只能對HTTP協議(包含HTTPS協議)進行抓取。 Fiddler 功能豐富,體積小巧,支援HTTP斷點除錯,且是一款免費的軟體。 Fiddler 是用 C# 編寫的HTTP協議除錯代理工具,它以代理伺服器的方式監聽你的電腦和網際網路之間的http通訊。執行Fiddler後,就會在本地電腦開啟8888埠,網路資料流通過Fiddler進行中轉時,可以對HTTP/HTTPS資料流進行記錄並加以分析,甚至還可以修改傳送或接收的資料。
工作原理是Fiddler在瀏覽器(或者其他使用HTTP協議的程序)和伺服器之間扮演代理的角色,所有的HTTP通訊,只要設定了系統代理,就要經過它。
Fiddler以8888埠開本地代理伺服器,只要你的HTTP通訊將代理設定為本地8888,Fiddler就能幫助你截獲資料,然後中轉給伺服器或者客戶端。它最大的一個特點是可以中途修改HTTP通訊的內容。
2. Fiddler 的下載與安裝
可以直接到 Fiddler 的官網下載,也可以   點選此處  下載。 下載完成後,雙擊安裝程式,按照提示安裝即可。安裝完成後,開啟Fiddler軟體,在瀏覽器中輸入  http://127.0.0.1:8888/ ,如果能夠訪問,就說明安裝成功。 在 Fiddler 軟體開啟的情況下,如果通過瀏覽器瀏覽網頁,Fiddler就會抓取到瀏覽器和伺服器之間互動的資料包。
開啟 Fiddler 軟體後,抓包預設是啟用的(如果想要關閉抓包功能,點選選單欄的File,取消Capture Traffic的勾選即可),一般不需要進行設定,在各種瀏覽器下 Fiddler 都能順利工作。實際上,Fiddler與瀏覽器也無關。如果在某種瀏覽器中開啟網頁時,Fiddler 並沒有抓取到HTTP通訊記錄,則只需檢查瀏覽器的代理設定,將瀏覽器的代理設定為“使用系統代理設定”即可。系統代理是本地的8888埠代理,它是瀏覽器的預設代理。
使用PHP的curl擴充套件庫,來模擬瀏覽器的HTTP請求時,curl層的HTTP請求無法被Fiddler抓取,因為curl請求預設是沒有使用代理的。如果想讓curl請求也能被Fiddler抓取,可以設定curl的選項,將 127.0.0.1:8888 作為本地 的代理伺服器,即加上如下的選項設定:
curl_setopt($ch,CURLOPT_PROXY,'127.0.0.1:8888'); // 設定本地系統代理伺服器 
3. Fiddler 的基本介面 Fiddler 最基本的功能就是抓包和觀察資料,下面簡單介紹它的介面。 Fiddler 的介面分為左右兩欄:
  • 左欄是Sessions記錄(注意:它不同於PHP中的session),即 HTTP 會話記錄,每個HTTP會話記錄了資料包的序號、狀態碼、協議型別、Host、URL、響應內容的長度、Caching、Content-Type、Process等基本資訊。
  • 右欄劃分為上下兩個部分,上面是HTTP請求時的資料,下面是HTTP響應時的資料。常用的三種檢視資料的方式為:Raw(HTTP協議標準格式)、Header(header頭格式)、HexView (十六進位制資料流)。

在Sessions欄裡,選擇某一條會話記錄後,右擊滑鼠,通過彈出的快捷選單可以對其執行儲存、標記、刪除、重放和註釋等操作。 下面介紹幾個常用的操作: 儲存:儲存HTTP會話資料,便於以後檢視或者做資源重定向。 標記:標記醒目的顏色方便檢視。 刪除:刪除不重要的會話記錄。 重放:再次執行該請求 註釋:給該會話記錄添加註釋,註釋將顯示在該Session的Comment列。
另外,在對HTTP協議進行分析時,對於image、css、javascript型別的靜態資源的請求通常無助於我們進行協議分析,但這類Session(會話請求)往往還比較多,這就干擾到了我們尋找需要的會話。故需要刪除這類會話記錄。可以通過滑鼠選擇後刪除,也可以通過Fiddler的命令視窗來選擇後刪除。
在Sessions欄的最下面有一個黑色的命令視窗,在命令視窗輸入 select image,會選中所有image型別的session,按delete鍵刪除;輸入 select css,會選中所有的css資源的session,按delete鍵刪除;輸入 select javascript,會選中所有的javascript資源的session,按delete鍵刪除。如果要刪除所有的session,在命令視窗輸入 cls,回車即可。
4. 使用 Fiddler 進行 HTTP 斷點除錯 Fiddler的斷點除錯功能分為兩種:After Responses(響應後斷點)和 Before Requests(請求前斷點)。預設是禁用除錯功能的。
(1)After Responses 響應後斷點的原理是:在伺服器響應到達Fiddler後,轉發給瀏覽器客戶端之前,設定斷點,這樣,我們就可以對響應的原始資料進行修改,然後,再將修改後的結果返回給客戶端。 操作方法如下: 首先,點選選單欄的 Rules → Automatic Breakpoints → After Responses,開啟響應後斷點除錯功能;其次,在瀏覽器中訪問某個URL,可看到響應一直被掛起;然後,到 Fiddler 右側的響應資料視窗,修改原始的(Raw)響應資料;最後,點選 Run to Completion,將修改後的響應資料返回給客戶端。
(2)Before Requests 請求前斷點的原理是:在瀏覽器客戶端把請求傳送給Fiddler後,轉發給伺服器之前,設定斷點,這樣,我們就可以修改HTTP請求相關的原始資料,然後,再將修改後的請求傳送給伺服器。 操作方法如下: 首先,點選選單欄的 Rules → Automatic Breakpoints → Before Requests,開啟請求前斷點除錯功能;其次,在瀏覽器中訪問某個URL,可看到請求一致被掛起;然後,到 Fiddler 右側的請求資料視窗,修改原始的(Raw)請求資料;最後,點選  Run to Completion,將修改後的請求傳送給伺服器。

這兩個功能對於除錯Ajax程式特別有用,比如:修改請求內容、GET資料、POST資料、header頭、cookie等等。

原文連結:https://blog.csdn.net/lamp_yang_3533/article/details/52497981