【抓包學校】Fiddler詳細教程


目錄

 

正文

轉摘自玲蟲師 

一、Fiddler簡介

  Fiddler 是一款免費的互聯網調試代理工具,原版軟件無中文版,但有漢化版。它不僅可以抓取你電腦甚至手機與互聯網的各種 http 通訊,同時還能查看他們進行分析。在必要的時候,你甚至可以修改(偽造)某些通訊實現前后端開發者調試的作用。其他作用比如解密 https 協議會話,測試網站的性能以及開發和使用第三方插件。

  它支持所有操作系統和瀏覽器,但一般對 win 平台支持較好.

 

  這是界面。具體操作之后再講。先說Fiddler的工作原理。

  Fiiddler 為什么能抓取你跟服務器交互的協議包呢?首先看這么一個圖:

  總的來說原理很簡單,看完圖之后大家應該有了很直觀的了解。

  打開fiddler的時候,它會自動給你的電腦創建一個系統代理,默認監聽端口為8888。Fiddler作為一個客戶端和服務器之間的橋梁,可以獲得它們之間通信的信息,這些信息進行解析之后以會話的形式呈現給我們。

  代理了之后會不會跟平時正常的上網有區別?其實你感覺不到有什么區別的,就是正常的訪問就可以了。唯一的區別是把這些訪問都顯示在了fiddler的會話面板上。我們把一個個會話稱為包,正是一個個數據包的發送和接收組成了我們的網絡訪問。

  擔心系統代理設置了回不來?沒關系,fiddler在關閉的時候會自動取消這個代理,恢復系統原貌。

二、不同代理模式的區別

 

Fiddler有不同的代理模式,分為以下兩種:

  1. 流模式(Streaming)
  2. 緩沖模式(Buffering)

流模式可以理解為一種實時通信的模式,有請求就有返回,也就是實時返回。

緩沖模式是等所有請求都到了再一起返回,也就是等所有數據都准備好了以后才返回給客戶端。

流模式更接近於瀏覽器本身真實的行為。

而緩沖模式可以控制最后的服務器響應。

在實際使用中我們可以根據具體的實際情況來選擇代理模式。

在界面上的切換操作很簡單,就是一個按鈕的按下的彈起的區別。

三、介紹及界面概述

3.1 Fiddler 界面概述

3.2 翻譯

3.2.1 主菜單

File文件:

  File--->Capture Traffic啟用或停止捕獲;

  File--->New Viewer 新窗口;

  File--->Load Archive 存檔;

  File--->Recent Archive 最近文檔;

  File--->Save保存;

         Save--->All Session... 全部會話;

         Save--->Selected   Session 選擇了的會話;

         Save--->Request   請求;

         Save--->Response 響應;

  File--->Import Sessions導入會話;

  File--->Export Sessions導出會話;

  File--->Exit退出;

 

Edit編輯:

  Edit--->Copy拷貝;

        Copy--->Session拷貝整個Session;

        Copy--->Just Url將選中session的url拷貝到剪貼板;

        Copy--->Headers Only拷貝頭信息,包括請求和返回的頭信息;

        Copy--->Full Summary將session列表顯示的信息及表頭復制到剪貼板,通過tab分割。便於在Excel或其他編輯器中查看編輯;

  Edit--->Remove移除;

        Remove--->Selected Sessions選擇會話;

        Remove--->Unselected Sessions反選會話;  

        Remove--->All Sessions全部會話;

  Edit--->Select All選擇全部;

  Edit--->Undelete恢復之前刪除的會話;

  Edit--->Paste as Sessions作為會話粘貼文件;

  Edit--->Mark標記所選的會話;

        Mark--->Strikeout失敗;

        Mark--->Red紅色;

        Mark--->Blue藍色;

        Mark--->Gold金色;

        Mark--->Green綠色;

        Mark--->Orange橙色;

        Mark--->Purple紫色;

        Mark--->Unmark未標記;

  Edit--->Unlock for Editing調為可編輯

  Edit--->Find Sessions查找會話

 

 Rules規則:

  Rules--->Hide Image Requests隱藏圖片請求;

  Rules--->Hide HTTPS CONNECTs隱藏HTTPS連接;

  Rules--->Automatic Breakpoints斷點控制;

        Automatic Breakpoints--->Before Requests請求之前;

        Automatic Breakpoints--->After   Responses  響應之后;

        Automatic   Breakpoints--->Disabled禁用;

        Automatic Breakpoints--->Ignore   Images忽略圖片;

  Rules--->Customize Rules打開Fiddler ScriptEditor;

  Rules--->Require Proxy Authentication密碼代理驗證;

  Rules--->Apply GZIP Encoding采用GZIP編碼;

  Rules--->Remove All Encodings刪除全部編碼;

  Rules--->Hide 304s隱藏304會話;

  Rules--->Request Japanese Content要求日語內容;

  Rules--->User-Agents支持把User-Agents請求頭設置或替換成指定值;

  Rules--->Performance提供影響web性能的簡單選項;

        Performance--->Simulate Modem   speeds模擬調制解調器速度;

        Performance--->Disable Caching禁止緩存

        Performance--->Cache Always   Fresh新的緩存

   

Tools工具:

    Tools--->Options選項;

    Tools--->WinINET Options WinINET選項;

    Tools--->Clear WinINET Cache-清除WinINET緩存;

      Tools--->Clear WinINET Cookies清除WinINET的Cookies;

      Tools--->TextWizard文字編碼解碼;

      Tools--->Compare Sessions比較會話;

        Tools--->New Session Clipboard新會話寫字板;

        Tools--->HOSTS hosts配置;

        Tools--->Reset Script重置腳本;

        Tools--->Sandbox沙箱;

        Tools--->View IE Cache查看IE緩存;   

 

 

 View視圖:

  View--->Show Toolbar顯示工具條

  View--->Default Layout默認布局

  View--->Stacked Layout堆疊布局

  View--->Wide Layout全部布局

  View--->Tabs制表符

        Tabs--->preferences偏好

        Tabs--->autosave自動保存

        Tabs--->apitest API測試

  View--->Statistics統計

  View--->Inspectors嗅探

  View--->Composer構造

  View--->Minimize to Tray關閉自托盤

  View--->Stay on Top前端顯示

  View--->Squish Session List會話列表格式

  View--->AutoScroll Session List自動滾動會話鏈表

  View--->Refresh刷新

  Help幫助:

  Help--->Help幫助

  Help--->Fiddler Book說明

  Help--->Discussions社區討論

  Help--->HTTP References HTTP的參考

  Help--->Troubleshoot Filters-故障排除

  Help--->Check For Updates檢測更新

  Help--->Send Feedback發送反饋

  Help--->Abou關於

 3.2.2 快捷菜單

給捕捉到的會話增加一個備注,不常用。選中會話,點下該按鈕,就可以增加備注了。

Replay--->重新發送選中請求。回放按鈕,比較常用。想重播會話,就可以點這個按鈕,在底部對該請求做了一次回放,快捷鍵是R。可以多次重放。

Remove--->刪除會話。清空監控面板的,可以過濾掉不同的請求,也可以清空全部的請求。

Go--->打斷點時使用

Stream--->點擊為流模式,不點擊為緩沖模式

緩沖模式:內容全部返回在發送到客戶端;可以控制響應,修改響應數據,但是時序圖有時候會出現異常;

流模式:收到內容立即發送給客戶端;更接近真實瀏覽器的性能,速度快,時序圖更准確(比如瀑布圖),但是不能控制響應;

如果不需要AutoResponse和Fileters功能的話,一般使用緩沖模式;

Decode--->解碼,默認勾選。幫助我們把http請求里面的東西解壓出來,在查看的時候更方便一些。

 

 

Keep:All sessions--->保持全部會話

Any Process--->任何進程,精准定位。幫我們過濾不想看到的進程發出的請求,只保留我們要看到的進程的請求。方法是比如只想看到谷歌瀏覽器請求,把靶心拖動到谷歌瀏覽器放開即可。

Find--->查找

Save--->保存

  截屏

秒表

Browse--->打開瀏覽器

Clear Cache--->清除緩存。可以快速清除緩存。

TextWizard--->編碼解碼小工具。可以快速編碼和解碼內容,很實用,點開后,選擇解碼方式就可以編解碼了。省去了使用字符集轉化的工具。

   Tearoff--->打開一個新窗口。可以把右側面板變成浮窗,想恢復關閉即可。

MSDN Search--->MSDN關鍵字查找。查的都是英文資料,中文環境很少用。

 3.2.3 會話列表

#--->圖標及序號

Result--->HTTP響應狀態碼

Protocol--->請求使用的協議

Host--->接受請求的服務器主機名和端口號

URL--->請求的服務器路徑的文件名,也包括GET參數

Body--->請求的大小,以byte為單位

Caching--->請求的緩存過期時間或緩存控制header等值;響應頭中Expires和Cache-Control字段的值

  Content-Type--->請求響應的類型

Process--->發出此請求的Windows進程及進程ID;

Comment--->注釋信息;

Custom--->用戶可以通過腳本設置自定義值;FiddlerScript所設置的ui-CustomColumn標志位的值

 

 

 --->正在向服務器發送請求

-->正在從服務器下載響應

--->請求停止於斷點處,允許對它進行修改

--->響應停止於斷點處,允許對它進行修改

--->請求使用HTTP HEAD方法,響應沒有body

--->請求使用POST方法向服務器發送數據

--->請求使用了HTTPCONNECT方法,使用HTTPS協議建立連接通道

--->響應是HTML內容

--->響應是圖片

--->響應是腳本文件

--->響應是CSS文件

--->響應是XML

--->響應是JSON

--->響應是音頻文件

--->響應是視頻文件

--->響應是Silverlight程序

--->響應是Flash應用程序

--->響應是字體文件

--->通用響應成功

--->響應是HTTP/300,301,302,303,307重定向

--->響應是HTTP/304,使用緩存文件

--->響應需要一個客戶端憑證

--->響應是一個Sever錯誤

--->會話被客戶端或fiddler或Sever終止

--->腳本文件

response是HTML或者XML。有時候會發現返回值是json,但實際上也是這個圖標,原因是返回值的Content-Type: text/html

HTTP狀態: 紅色表示錯誤,黃色表示認證

數據流類型: 灰色表示CONNECT

響應類型:紫色表示CSS,藍色表示HTML,綠色表示script,灰色表示

 3.2.4 會話右鍵

Decode Selected Sessions--->解碼選擇的session,一些Response body 會Encode。Decode后通常能解決亂碼的問題;

AtuoScroll Session List--->自動滾動 Session List。當不斷有新的session進入list時候,關閉此功能,更容易定位選擇某一個或多個session;

Comment--->為一個或多個session添加注釋;

Compare--->對比:選中兩條session右鍵,就會出現Compare選項。這個功能是通過第三方的軟件來實現,可以下載WinDiff.Exe放在Fiddler的安裝目錄下,或是下載WinMerge安裝,安裝時,注意將軟件添加到系統環境變量中;

COMETPeek--->命令會保留正在執行的響應的“快照”,在響應完成前就可以查看部分內容。當web應用采用COMET模式以流式向客戶端返回數據時,可以使用該命令。由於“流式”的含義就是永不結束,直有當服務端停止連接后,Fiddler才會返回響應;

Abort Session--->終止當前正在執行的請求;

Clone Response--->當Session列表中選中兩個Session,並且其中一個Session在斷點處中止,而另一個Session已經運行完成時才可用。該命令會把已經完成的Session的響應拷貝給暫停運行的Session;

Unlock For Editing--->使Session的請求和響應都可以在Inspector中編輯;

Inspect in New Windowns--->打開一個新的Session Inspector窗口;

Properties--->打開Session屬性窗口,顯示當前的Session信息

  Copy拷貝;

      Copy--->Just Url將選中session的url拷貝到剪貼板;

Copy--->This Column拷貝摘要,其中包括:請求方法,URL,響應狀態碼及狀態信息。如果是重定向的HTTP/3xx,還會有該請求Response header中Location字段;

Copy--->Terse Summary簡要;

Copy--->Headers Only拷貝頭信息,包括請求和返回的頭信息;

Copy--->Session拷貝整個Session;
      Copy--->Response DataURL拷貝響應的DataURI(一個特定資源的協議),格式規范:data:[<mime   type>][;charset=<charset>][;base64],<encoded data>,這項技術一般用於圖片內嵌頁面;
      Copy--->Full Summary將session列表顯示的信息及表頭復制到剪貼板,通過tab分割。便於在Excel或其他編輯器中查看編輯;

   Save保存:

Save--->Selected Sessions選擇Sessions;

Save--->Selected Sessions--->   in ArchiveZIP將選擇的sessions保存為SAZ格式壓縮文件;

Save--->Selected   Sessions--->as Text將所選Session保存為txt格式文件;

Save--->Selected Sessions--->   as Text(Headers only)將所選sessions的請求和響應頭一起保存為txt格式文件;

   Remove刪除:

Remove--->Selected Sessions刪除選中的sessions

Remove--->Unselected Sessions刪除未選中的sessions;

Remove--->All Session刪除所有sessions

  Filter Now快捷過濾:

選中一個session右鍵會出現Filter Now選項,Fiddler會根據你選擇的session快速生成隱藏/顯示條件;

當我們選則隱藏某一個條件后,session list會隱藏符合條件的session;

  Mark標記所選的會話:

Mark--->Strikeout失敗;

Mark--->Red紅色;

Mark--->Blue藍色;

Mark--->Gold金色;

Mark--->Green綠色;

Mark--->Orange橙色;

Mark--->Purple紫色;

Mark--->Unmark未標記;

  Replay重新請求此地址:

Replay--->Reissue Requests 將選中的請求以原來的形式重新發送。如果按住Shift鍵,可以鍵入重復次數。或是選中sessions后按Shift+R;

Replay--->Reissue   Unconditionally無條件的發送選中請求,告訴服務器不要返回HTTP/304響應,快捷鍵Shift+U;

Replay--->Reissue and Edit把選中的請求以原來的形式重新發送,在每個session中設置請求斷點,在請求被發送到服務器前,使用Fiddler的Inspector修改請求;

Replay--->Reissue and Verify把選中的請求以原來的形式重新發送,驗證Response狀態碼和Response body;

重新發送的請求會被標記出背景色,綠色代表驗證通過,紅色表示驗證失敗,在comments中會提示失敗原因和對比的session id;

Replay--->Reissue Sequentially將選中的請求重新發送,等待前一個響應回來后,在發送下一個;

Replay--->Reissue from Composer將選中的請求克隆到Fiddler右側的Composer模塊中(Composer后續博客講解);

Replay--->Revisit in IE將sessions的url在IE中打開。注意IE總是使用GET方法,而且用自己的header和cookie,不管session中提供了什么HTTP方法和請求頭;

  Select選擇:

Select--->Parent Request當前請求是從那個頁面來的,相當於當前請求頭中的Refere字段值。鼠標放在session上按P鍵可執行;

Select--->Child Requests與1相反;

Select--->Duplicate Requests選中Session列表中和當前的Session的URL和HTTP方法相同的所有Session;

Select--->Matching Values值匹配選擇,可以根據Session列表中的任意值匹配,鼠標放任意一列,點擊Alt+左鍵,就會匹配出相同值的session;

3.2.5 選項卡

Statidtics--->統計,對選中多個Sessions統計;

Inspectors--->檢查,請求頭和響應體

AutoResponder--->重新定向

Composer---> 模擬進行發送

FiddlerScript--->腳本

Log--->日志

Fiters--->過濾

Timeline--->瀑布流時間圖

 3.2.6 請求查看器

Headers--->請求頭信息顯示為一個分級視圖,包含了web客戶端信息、Cookie、傳輸狀態等;

TextView--->顯示POST請求的body部分為文本;

SyntaxView--->顯示腳本(安裝SyntaxView插件)

WebForms--->以直觀的界面顯示QueryString的值和Body的值,這里的Body應該是application/x-www-form-urlen-coded格式;

HexView--->請求內容的16進制顯示;

Auth--->顯示hearer中Proxy-Authorization和Authoriization信息;

Cookies--->以直觀的界面顯示Header中Cookie的值;

Raw--->將整個請求顯示為純文本;

JSON--->通過JOSN格式顯示;

XML--->如果請求的body是XML格式,就是用分級的XML樹來顯示它;

 3.2.7 響應查看器

Transformer--->響應信息的壓縮編碼格式;

Headers--->用分級視圖顯示響應的header;

TextView--->使用文本顯示相應的body;

SyntaxView--->顯示腳本(安裝SyntaxView插件)

ImageView--->響應內容如果是圖片則顯示圖片,左側灰色區域會顯示圖片的大小、寬高、文件格式等信息,在下方還可以選擇縮放模式:自動縮放、縮放以適應顯示區域大小、無縮放;

HexView--->響應內容的16進制顯示;

WebView--->顯示HTML格式,模擬網頁顯示;

Auth--->顯示hearer中Proxy-Authorization和Authoriization信息;

Caching--->緩存;

Cookies--->以直觀的界面顯示Header中Cookie的值;

Raw--->將整個響應顯示為純文本;

JSON--->通過JOSN格式顯示;

XML--->如果響應的body是XML格式,就是用分級的XML樹來顯示它;

四、Fiddler抓web網站請求

4.1手動設置方法一

  Tools--->WinINET Options--->連接--->局域網設置--->代理服務器勾選后“高級”--->服務器地址:127.0.0.1,端口8888;

4.2 手動設置方法二

①、File--->勾選Capture Traffic;     

    ②、點擊左下角Capturing進行選擇或取消;

4.3 自動設置步驟

  Tools---> Options--->Connections--->勾選Act as system proxy on startup(作為系統啟動代理)

五、瀏覽器內核(理解)

瀏覽器千千萬,使用fiddler抓包的時候瀏覽器該如何選擇呢?

我們的選擇原則是保證有幾種不同瀏覽器的內核。

復制代碼
復制代碼
瀏覽器內核又可以分成兩部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎。
渲染引擎 它負責取得網頁的內容(HTML、XML、圖像等等)、整理訊息(例如加入 CSS 等),以及計算網頁的顯示方式,然后會輸出至顯示器或打印機。
瀏覽器的內核的不同對於網頁的語法解釋會有不同,所以渲染的效果也不相同。 JS 引擎 則是解析 Javascript 語言,執行 javascript語言來實現網頁的動態效果。 最開始渲染引擎和 JS 引擎並沒有區分的很明確,后來 JS 引擎越來越獨立,內核就傾向於只指渲染引擎。有一個網頁標准計划小組制作了一個 ACID 來測試引擎的兼容性和性能。
內核的種類很多,如加上沒什么人使用的非商業的免費內核,可能會有10多種,但是常見的瀏覽器內核可以分這四種:Trident、Gecko、Blink、Webkit。
復制代碼
復制代碼

(1)Trident(IE內核)

  國內很多的雙核瀏覽器的其中一核便是 Trident,美其名曰 "兼容模式"。

  代表: IE、傲游、世界之窗瀏覽器、Avant、騰訊TT、獵豹安全瀏覽器、360極速瀏覽器、百度瀏覽器等。

  Window10 發布后,IE 將其內置瀏覽器命名為 Edge,Edge 最顯著的特點就是新內核 EdgeHTML。

(2)Gecko(firefox)

  Gecko(Firefox 內核): Mozilla FireFox(火狐瀏覽器) 采用該內核,Gecko 的特點是代碼完全公開,因此,其可開發程度很高,全世界的程序員都可以為其編寫代碼,增加功能。 可惜這幾年已經沒落了, 比如 打開速度慢、升級頻繁、豬一樣的隊友flash、神一樣的對手chrome。

(3) webkit(Safari)

  Safari 是蘋果公司開發的瀏覽器,所用瀏覽器內核的名稱是大名鼎鼎的 WebKit。

  現在很多人錯誤地把 webkit 叫做 chrome內核(即使 chrome內核已經是 blink 了),蘋果感覺像被別人搶了媳婦,都哭暈再廁所里面了。

  代表瀏覽器:傲游瀏覽器3、 Apple Safari (Win/Mac/iPhone/iPad)、Symbian手機瀏覽器、Android 默認瀏覽器,

(4) Chromium/Blink(chrome)

  在 Chromium 項目中研發 Blink 渲染引擎(即瀏覽器核心),內置於 Chrome 瀏覽器之中。Blink 其實是 WebKit 的分支。大部分國產瀏覽器最新版都采用Blink內核。二次開發。

(5) Presto(Opera)

  Presto(已經廢棄) 是挪威產瀏覽器 opera 的 "前任" 內核,為何說是 "前任",因為最新的 opera 瀏覽器早已將之拋棄從而投入到了谷歌懷抱了。

六、HTTPS以及Fiddler抓取HTTPS協議

6.1 淺談HTTPS

  我們都知道HTTP並非是安全傳輸,在HTTP基礎上使用SSL協議進行加密構成的HTTPS協議是相對安全的。目前越來越多的企業選擇使用HTTPS協議與用戶進行通信,如百度、谷歌等。HTTPS在傳輸數據之前需要客戶端(瀏覽器)與服務端(網站)之間進行一次握手,在握手過程中將確立雙方加密傳輸數據的密碼信息。網上有諸多資料,有些寫得過於晦澀難懂,尤其是需要密碼學的一些知識。我做了一下簡單的整理,刨除復雜的底層實現,單從理解SSL協議的角度宏觀上認識一下HTTPS。一言以弊之,HTTPS是通過一次非對稱加密算法(如RSA算法)進行了協商密鑰的生成與交換,然后在后續通信過程中就使用協商密鑰進行對稱加密通信。HTTPS協議傳輸的原理和過程簡圖如下所示:

  一共有8個步驟,我們針對每一步,具體看看發生了什么事:

復制代碼
復制代碼
第一步,客戶端發起明文請求:將自己支持的一套加密規則、以及一個隨機數(Random_C)發送給服務器。

第二步,服務器初步響應:服務器根據自己支持的加密規則,從客戶端發來的請求中選出一組加密算法與HASH算法,生成隨機數,並將自己的身份信息以證書(CA)的形式發回給瀏覽器。
CA證書里面包含了服務器地址,加密公鑰,以及證書的頒發機構等信息。這時服務器給客戶端的包括選擇使用的加密規則、CA證書、一個隨機數(Random_S)。 第三步,客戶端接到服務器的初步響應后做四件事情: (1)證書校驗: 驗證證書的合法性(頒發證書的機構是否合法,證書中包含的網站地址是否與正在訪問的地址一致等)。 (2)生成密碼:瀏覽器會生成一串隨機數的密碼(Pre_master),並用CA證書里的公鑰加密(enc_pre_master),用於傳給服務器。 (3)計算協商密鑰: 此時客戶端已經獲取全部的計算協商密鑰需要的信息:兩個明文隨機數 Random_C 和 Random_S 與自己計算產生的 Pre-master,計算得到協商密鑰enc_key。   enc_key=Fuc(random_C, random_S, Pre-Master) (4)生成握手信息:使用約定好的HASH計算握手消息,並使用協商密鑰enc_key及約定好的算法對消息進行加密。 第四步,客戶端將第三步產生的數據發給服務器: 這里要發送的數據有三條: (1)用公鑰加密過的服務器隨機數密碼enc_pre_master (2)客戶端發給服務器的通知,"以后我們都要用約定好的算法和協商密鑰進行通信的哦"。 (3)客戶端加密生成的握手信息。 第五步,服務器接收客戶端發來的數據要做以下四件事情: (1)私鑰解密:使用自己的私鑰從接收到的enc_pre_master中解密取出密碼Pre_master。 (2)計算協商密鑰:此時服務器已經獲取全部的計算協商密鑰需要的信息:兩個明文隨機數 Random_C 和 Random_S 與Pre-master,計算得到協商密鑰enc_key。 enc_key=Fuc(random_C, random_S, Pre-Master) (3)解密握手消息:使用協商密鑰enc_key解密客戶端發來的握手消息,並驗證HASH是否與客戶端發來的一致。 (4)生成握手消息使用協商密鑰enc_key及約定好的算法加密一段握手消息,發送給客戶端。 第六步,服務器將第五步產生的數據發給客戶端: 這里要發的數據有兩條: (1)服務器發給客戶端的通知,”聽你的,以后我們就用約定好的算法和協商密鑰進行通信哦“。 (2)服務器加密生成的握手信息。 第七步,客戶端拿到握手信息解密,握手結束。 客戶端解密並計算握手消息的HASH,如果與服務端發來的HASH一致,此時握手過程結束。 第八步,正常加密通信 握手成功之后,所有的通信數據將由之前協商密鑰enc_key及約定好的算法進行加密解密。
復制代碼
復制代碼

6.2 Fiddler抓取HTTPS協議原理

  我們都知道,Fiddler是個很好的代理工具,可抓取協議請求用於調試。關於Fiddler抓取HTTP協議的原理和配置比較簡單,對Fiddler和客戶端稍作配置,便能使得Fiddler輕易地獲取HTTP請求。但是由於HTTPS協議的特殊性,要進一步地配置Fiddler,我們首先要了解一下fiddler抓取HTTPS協議的原理才能更好地理解如何對fiddler進行配置。Fiddler本身就是一個協議代理工具,在上一節HTTPS原理圖上,客戶端與服務器端進行通信的過程全部都由Fiddler獲取到,也就是如下圖所示:

 

  我們看到Fiddler抓取HTTPS協議主要由以下幾步進行:

復制代碼
復制代碼
第一步,Fiddler截獲客戶端發送給服務器的HTTPS請求,Fiddler偽裝成客戶端向服務器發送請求進行握手 。
第二步,服務器發回相應,Fiddler獲取到服務器的CA證書, 用根證書公鑰進行解密, 驗證服務器數據簽名, 獲取到服務器CA證書公鑰。
然后Fiddler偽造自己的CA證書, 冒充服務器證書傳遞給客戶端瀏覽器。 第三步,與普通過程中客戶端的操作相同,客戶端根據返回的數據進行證書校驗、生成密碼Pre_master、用Fiddler偽造的證書公鑰加密,並生成HTTPS通信用的對稱密鑰enc_key。 第四步,客戶端將重要信息傳遞給服務器, 又被Fiddler截獲。Fiddler將截獲的密文用自己偽造證書的私鑰解開, 獲得並計算得到HTTPS通信用的對稱密鑰enc_key。
Fiddler將對稱密鑰用服務器證書公鑰加密傳遞給服務器。 第五步,與普通過程中服務器端的操作相同,服務器用私鑰解開后建立信任,然后再發送加密的握手消息給客戶端。 第六步,Fiddler截獲服務器發送的密文, 用對稱密鑰解開, 再用自己偽造證書的私鑰加密傳給客戶端。 第七步,客戶端拿到加密信息后,用公鑰解開,驗證HASH。握手過程正式完成,客戶端與服務器端就這樣建立了”信任“。
復制代碼
復制代碼

 

   在之后的正常加密通信過程中,Fiddler如何在服務器與客戶端之間充當第三者呢?

服務器—>客戶端:Fiddler接收到服務器發送的密文, 用對稱密鑰解開, 獲得服務器發送的明文。再次加密, 發送給客戶端。
客戶端—>服務端:客戶端用對稱密鑰加密,被Fiddler截獲后,解密獲得明文。再次加密,發送給服務器端。
由於Fiddler一直擁有通信用對稱密鑰enc_key, 所以在整個HTTPS通信過程中信息對其透明。

  從上面可以看到,Fiddler抓取HTTPS協議成功的關鍵是根證書(具體是什么,可Google),這是一個信任鏈的起點,這也是Fiddler偽造的CA證書能夠獲得客戶端和服務器端信任的關鍵。
  接下來我們就來看如果設置讓Fiddler抓取HTTPS協議。

6.3 Fiddler抓取HTTPS設置

  用火狐訪問 https 認證網站(如百度)會出現以下問題:

  處理步驟如下:

  tools >  Options > HTTPS 和 Connections

此時在桌面可以得到一個證書:

雙擊可看詳情

  得到證書之后需要去火狐瀏覽器添加。

 

  然后就可以訪問 https 認證的網站了。

七、抓取手機內容

7.1、常用設置

    設置步驟一:Tools---> Options--->HTTPS--->勾選Decrypt HTTPS traffic--->選擇…from remote clients only(從遠程客戶端)

    設置步驟二:Tools---> Options--->Connections--->設置Fiddler listens on port:8888--->勾選Allow remote computers to connect(允許遠程設備連接)

 

    設置步驟三:①.查看fiddler所在計算機的IP(cmd---> ipconfig或者點擊fiddler右上角Online)

 

 

 

    ②.手機上進行設置:同一個wifi下設置代理,服務器地址:計算機的IP(192.168.0.163),端口8888;

7.2、附加設置(常用設置后無法進行抓包)

  方法一:因為有些APP對安全上要求沒有那么高時候,不需要下載證書,但是有的APP對安全要求比較高,就需要下載證書,下載證書步驟:在手機瀏覽器(自帶瀏覽器,本人在嘗試中,UC出錯)輸入網址:

復制代碼
復制代碼
http://[FIDDLERSERVER]:[Port]/FiddlerRoot.cer
或者
[FIDDLERSERVER]:[Port],
例如:
http://192.168.0.163:8888/FiddlerRoot.cer
或者
192.168.0.163:8888
復制代碼
復制代碼

 

    安裝的證書在手機的位置如下,可以進行刪除、重新安裝;

 

方法二:Rules---> Customize Rules--->按Ctrl+F--->打開Find and Replace--->輸入查詢關鍵字:OnBeforeResponse--->在函數OnBeforeResponse中添加如下代碼

復制代碼
if (oSession.oRequest["User-Agent"].indexOf("iPhone/9.2.1")> -1 && oSession.HTTPMethodIs("CONNECT"))
{
oSession.oResponse.headers["Connection"] = "Keep-Alive";
}
復制代碼

八、設置斷點修改

8.1 斷點修改Request

8.1.1 Request全部中斷

設置中斷:Rules---> Automatic Breakpoints--->Before Requests

取消中斷:Rules---> Automatic Breakpoints--->Disabled

點擊下發紅色箭頭的位置進行中斷切換;

 

例1:打開http://news.baidu.com/--->設置請求斷點--->清空fillder抓包數據--->不輸入任何關鍵字,點擊http://news.baidu.com/頁面中“百度一下”--->在fiddler中設置“value=巧吧軟件測試”--->點擊“Run to Completion” --->點擊“Go” --->結果:“value=巧吧軟件測試”;

 

  Inspectors界面:Break on Response:發送請求,在響應數據回到Fiddler時再次中斷;Run to Completion:單條運行修改后的請求;

 

8.1.2 Request特定網站中斷

特定網站中斷設置:快速命令行輸入“bpu www.baidu.com+Enter”,只會中斷www.baidu.com;

特定網站中斷取消:快速命令行輸入“bpu+Enter”;

 

8.2 斷點修改Response

8.2.1 Response全部中斷

設置中斷:Rules---> Automatic Breakpoints--->After Response

取消中斷:Rules---> Automatic Breakpoints--->Disabled

 

  點擊下發紅色箭頭的位置進行中斷切換;

 

  例1_腳本替換:打開http://news.baidu.com/--->設置請求斷點--->清空fillder抓包數據--->刷新http://news.baidu.com/頁面--->在Response中修改內容--->點擊“Run to Completion” --->點擊“Go” --->結果:修改后的內容;

  例2_狀態碼替換:打開http://news.baidu.com/--->設置請求斷點--->清空fillder抓包數據--->刷新http://news.baidu.com/頁面--->在Response中選擇狀態碼--->選擇502_Unreachable.dat --->點擊“Run to Completion”--->點擊“Go” --->結果:狀態碼502內容;

8.2.2 Response特定網站中斷

特定網站中斷設置:快速命令行輸入“bpafter www.baidu.com+Enter”,只會中斷www.baidu.com;

特定網站中斷取消:快速命令行輸入“bpafter+Enter”;

8.2.3 Response查找或替換

 

8.3 其他斷點相關命令行

bps:特定http狀態碼時中斷,比如:bps 200;

bpv/bpm:在特定請求method時中斷,比如bpv GET或bpm POST;

g:等於Go

九、重定向AutoResponder

9.1. 文件及圖片替換(Enable rules)

目的:允許從本地返回文件,代替服務器響應,而不用將文件發布到服務器【可用正式環境驗證本地文件】

步驟一:抓頁面http://ir.baidu.com/phoenix.zhtml?c=188488&p=irol-irhome --->選擇session,右擊--->Save--->Response---> Response Body

 

步驟二:打開另存html文件--->修改內容

步驟三:AutoResponder--->勾選Enable rules--->選擇session--->點擊“Add Rule”

 

步驟四:Rule Editor--->第二個下拉框--->選擇Find a file… --->選擇修改后的html--->save;

 

步驟四:Rule Editor--->第二個下拉框--->選擇狀態碼--->save;

 

步驟五:清空fillder抓包數據--->刷新http://ir.baidu.com/phoenix.zhtml?c=188488&p=irol-irhome --->頁面--->查看結果;

9.2 未匹配到請求時正常響應(Unmatched requests passthrough)

 不勾選Unmatched requests passthrough時地址錯誤;

 

訪問其他網站會出錯。點上之后即可訪問其他網站。

9.3 設置延時(Enable Latency)

步驟:勾選Enable Latency --->出現Latency列--->選中某個文件--->右擊--->選擇Set Latency--->設置延遲時間(3000毫秒)--->save--->重新刷新http://ir.baidu.com/phoenix.zhtml?c=188488&p=irol-irhome頁面,設置的內容會發生3s的延遲;

 

9.4 URL匹配

EXACT開頭:表示完全匹配

regex開頭:表示用正則表達式來匹配

StringToMatch:字符串匹配

 

9.5 Test是否匹配

步驟:選中session--->點擊Test--->查看是否匹配上;

十、Fiddler過濾

10.1 User Fiters啟用

10.2 Action

  Action:Run Filterset now是否運行,Load Filterset加載,Save Filterset保存;

 

10.3 Hosts過濾

Zone:指定只顯示內網(Intranet)或互聯網(Internet)的內容;

Host:指定顯示某個域名下的會話;

-No Host Filter:無HOST過濾;

Hide the following Hosts:只顯示如下HOST;

Flag the following Hosts:加粗顯示如下HOST;

輸入多個HOST,多個之前用半角逗號或者回車分隔;

支持通配符:*,baidu.com;

 

步驟:選擇Hosts--->輸入過濾條件單條件(ir.baidu.com)或多條件(ir.baidu.com,www.baidu.com或ir.baidu.com+Enter+www.baidu.com)或通配符(*.baidu.com)--->Changes not yet saved--->選擇Ations中Run Filterset now;

 

10.4 Client Process過濾

客戶端進程過濾規則:

  Show only traffic from:你可以指定只捕獲哪個Windows進程中的請求;

  Show only Internet Explorer traffic:只顯示IE發出的請求;

  Hide Windows RSS platform traffic:隱藏Windows RSS平台發出的請求;

 

10.5 Request Headers過濾

請求header過濾規則:

  經常使用:Show only if URL contains;

  Flag requests with headers:標記帶有特定header的請求;

  Delete request headers:刪除請求header;

  Set request header設置請求的header;

 

10.6 Breakpoints

斷點設置規則:

  Break request on HTTP POST:給所有POST請求設置斷點;

  Break request on HTTP GET with QueryString:給所有帶參數的GET請求設置斷點;

  Break response on Content-Type:給特定的Content-Type設定斷點;

 

10.7 Response Status Code過濾

響應HTTP狀態過濾規則:

  Hide success(202,204,206):隱藏響應成功的session(202,204,206);

  Hide Authentication demands(401):隱藏未經授權被拒絕的session(401);

  Hide redirects(300,301,302,303,307):隱藏重定向的session(300,301,302,303,307);

  Hide Not Modified(304):隱藏無變更的session(304);

10.8 Response Type and Size

響應類型和大小過濾規則:

  Show all Content-Type:顯示所有響應類型;

  Hide smaller than ?KB:隱藏小於指定大小的session;

  Hide larger than ?KB:隱藏大於指定大小的session;

  Time HeatMap:獲得即時數據(綠色陰影代表響應時間在50毫秒以內;超過50毫秒但在300毫秒之內的響應條目沒有顏色;響應時間在300至500毫秒之間的會塗以黃色;超過500毫秒的用紅色底紋顯示);

  Block script files:阻止腳本文件,顯示為404;

  Block image files:阻止圖片文件;

  Block SWF files:阻止SWF文件;

  Block CSS files:阻止CSS文件;

10.9 Response Headers

響應header過濾規則:

  Flag response that set cookies:標記會設置cookie的響應;

  Flag response with headers:標記帶有特定header的響應;

  Delete response headers:刪除響應header;

  Set response header:設置響應的header;

10.10 會話列表:鼠標右擊

 

十一、Fiddler Script

11.1 安裝SyntaxView插件

使用Fiddler Script前需要安裝SyntaxView插件:

   方式1:Inspectors tab--->Get SyntaxView tab--->Download and Install SytaxView Now…

   方式2:http://getfiddler.com/FiddlerSyntaxSetup.exe

11.2 進入FiddlerScript頁面

方式1:直接點擊FiddlerScript頁簽;

 

方式2:Rules--->Customize Rules--->Fiddler ScriptEditor;

 

11.3 FiddlerScript腳本進行自定義修改

修改session樣式;

修改http請求和應答;

修改URL;

定制菜單:定制rule菜單的子菜單;定制tool菜單的子菜單;定制右鍵子菜單;

11.4 模擬慢速網絡

步驟一:Customize Rule修改腳本:上傳/下載1KB要delay多久

步驟二:Rules--->Performance--->啟用Simulate Modem Speeds

 

步驟三:重新刷新抓包網頁--->結果很慢;

十二、次要功能和第三方插件

12.1 替換HTTP Request Host

應用場景:進行開發時,線上去測試跳轉調試

替換命令:urlreplace news.baidu.com www.baidu.com

清除命令:urlreplace,需要同時清除瀏覽器緩存;

永久替代:Script腳本實現

12.2 配置Host

應用場景:線下和線上進行域名ip地址進行替換;

步驟:Tools--->HOSTS--->Host Remapp

12.3 Compose-Request發射器

12.4 HTTP統計圖

12.5 QuickExec命令行的使用

cls

select:select image

?.png

bpu、bpafter、bps、bpv、bpm

>size  <size

=status:=狀態碼

@host:匹配域名

12.6 TimeLine瀑布圖

選擇多個會話,從條形圖表中可以分別出哪些請求耗時最多;

不同顏色代表不同的元素類型的響應(淺綠色代表圖片,深綠色是JavaScript,紅色是CSS,其他為藍色);

其他符號:請求前面的紅色圓圈表示這個連接是新建的,綠色表示是復用的;

        黑色豎線,表示的是瀏覽器收到服務器響應的第一個字節這一時刻;

        向下的箭頭表示重定向,302錯誤;

        紅色感嘆號表示有錯誤發生,狀態為4XX或5XX;

        紅色的X,說明服務端響應完這個請求之后,斷開了連接;

        閃電表示這是Fiddler的“AutoResponder”的響應;

        軟盤圖標表示這個響應正文從本地獲得,304錯誤;

12.7 編碼小工具、查詢會話、編碼解碼

12.8 第三方插件

Syntax-Highlighring:代碼高亮插件;

JavaScript格式化插件:JS格式化;

WinDiff:會話比較功能;

Stave插件:目錄替換;項目配置管理;自定義顏色;上下行網速限制;

Willow:可以統計數據包;修改Host;請求重定向;編碼轉換;低網速模擬:慢速網絡模擬可視化;斷點調試;過濾HTTP請求;

12.9 官方文檔

http://www.telefik.com/fiddler

 http://www.360doc.com/content/16/0128/15/30056680_531241446.shtml  (關於接口)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM