🔥《吐血整理》保姆級系列教程 - 玩轉 Fiddler 抓包教程 (2)-初識 Fiddler 讓你理性認識一下

北京-宏哥發表於2024-12-03

1.前言

  今天的理性認識主要就是講解和分享 Fiddler 的一些理論基礎知識。其實這部分也沒有什麼,主要是給小夥伴或者童鞋們講一些實際工作中的場景,然後隆重推出我們的豬腳(主角)-Fiddler。

1.1 工作場景

做 app 測試,你是否有過這樣的經歷?

1.後端開發同事在除錯解決 bug 時 ,總找你拿著手機點點點,然後他在後臺看資料是否異常。(一個上午,一不小心過去了)

2.前端開發同事在除錯解決 bug 時,也找你過來幫忙造幾個資料,於是你辛辛苦苦造了個資料,他點一下,資料用完了,bug 沒解決。於是乎又找你造資料。(一個下午,又一不小心過去了)

3.你曾經是否遇到過這種情況,當你發現一個 bug 提交給前端開發時,他說是後端返回資料的問題。於是你找到後端開發,他說是前端資料提交的問題,讓你找前端開發。(一個晚上過去了,bug 沒解決。。。)

這個時候就有請我們的主角-Fiddler 開始閃亮登場。前邊這些他可以通通解決。

溫馨提示:全程乾貨、內容比較多,建議新手朋友可以先點贊+收藏再慢慢觀看! 😇

2.簡介

  在這個網路資訊時代裡,電腦保安始終是一個讓人揪心的問題,網路安全則有過之而無不及。許多電腦高手 經常利用 Fiddler 可以作為代理的這個功能去抓取會話並進行修改達到自己想要的目的。Fiddler 是一個強大並且跨平臺的 HTTP(S) 抓包神器,你可別拿去做壞事。它的英文名叫:Fiddler,中文名叫:小提琴。Fiddler 是一個 HTTP 協議除錯代理工具。它能夠記錄並檢查所有你的電腦和網際網路之間的 HTTP、FTP、HTTPS 的資料包。透過設定斷點,使用者還可以修改 “進出” Fiddler 的資料。由於 Fiddler 具備強大的資料抓包和修改功能,所以 Fiddler 廣泛應用 Web 滲透測試領域。

Fiddler 是最強大最好用的 Web 除錯工具之一, 它能記錄所有客戶端和伺服器的 http 和 https 請求。允許你監視、設定斷點、甚至修改輸入輸出資料。Fiddler 包含了一個強大的基於事件指令碼的子系統,並且能使用.net 語言進行擴充套件。換言之,你對 HTTP 協議越瞭解,你就能越掌握 Fiddler 的使用方法。你越使用 Fiddler,就越能幫助你瞭解 HTTP 協議。Fiddler 無論對開發人員或者測試人員來說,都是非常有用的工具。

Fiddler 是以 web proxy 代理伺服器的形式工作的 , 它也是一個 http 協議資料抓包與除錯代理工具,它能夠記錄和檢查當前你的電腦和網際網路之間的 http 訊息, 也就是說可以將網路傳輸傳送與接受的資料包進行截獲、重發、編輯、轉存等操作 還可以用來檢測網路安全。

3.抓包

  抓包(packet capture):用特定的工具獲取客戶端與服務端傳送和返回的資料包。目的是分析資料包的內容與協議,從而來判斷是否符合設計要求。其實就是將網路傳輸傳送與接收的資料包進行截獲、重發、編輯、轉存等操作,也用來檢查網路安全

4.什麼情況下需要抓包?

1.開發要你重現 bug,擷取資料,定位問題的時候

2.判斷一個問題是前端 bug 還是後端 bug 的時候

3.開發要你做介面測試,但又不沒給你介面文件的情況--》方法,介面地址,傳遞引數,頭部,返回內容

4.在不修改任何環境的情況下,修改返回的結果,即通常說的 mock--》模擬介面

5.為什麼要學習 Fiddler?

宏哥從三個角度給小夥伴們或者童鞋們來解剖一下:

5.1Fiddler 本身優勢

1、功能強大,其他工具有的功能它也有,其他工具沒有的功能它也有,支援 http,https,ftp 等協議;

2、完全免費,長期免費。

3、所有的瀏覽器可以使用,所有的平臺都可以使用。就衝著這三點,就值得擁有。

5.2 同類產品對比

除了 Fiddler 還有哪些能抓包?

抓包工具:wireshark、fiddler、httpwatch、charles、chrome 開發者工具 (F12),各工具的對比,

說到抓包工具,有 Fiddler、Charles、HttpWatch、WIRESHARK 等知名、不知名的......當然工具沒有強弱好壞之分,只是看在什麼場景下使用更為適合!Fiddler 和同種型別的抓包工具對比,如下圖所示:

從上圖我們可以看出:我們為什麼選擇 Fiddler 進行抓包,可以看一下它的比較。

  首先第一個 Fiddler 它的優勢,獨立執行,第二個支援移動裝置(是否能抓移動 APP 的包,)在這一塊的話 wireshark、httpwatch 就不支援,因此在這一塊就可以排除掉前連個,因為我們有時候去進行測試的時候,除了測 web 端,也會要去測 app 端,在企業裡經常去要做的事情。

  然後 Fiddler 是免費的,charles 是收費的。當然我知道大家都能夠各顯神通,做壞事的時候,記得帶上你的負罪感。

  當然你選擇這個免費工具的前提是,它滿足你的需求,能夠解決你的問題,並不是說我隨便找一個不能解決我問題的工具,這個肯定是不行的,至於說在這一塊想去用一下 wireshark、httpwatch 可以自行去下載使用,我們今天主要分享 Fiddler。(需要軟體測試相關安裝包,可以微信公眾號主頁點選領取資料,安裝包,教程都給你準備好了,免費)

5.3 使用者

  在測試中,不管是做手工測試,還是介面測試,我們都需要檢視後端返回的資料。有的時候,我們也需要除錯,或者 mock 一下後端的返回,來驗證前端是否達到預期。為了捕獲這些請求,抓包工具不可少。熟練掌握一些抓包工具,可以方便我們測試,除錯,分析問題。

  不管是在開發、還是在測試階段中,“抓包” 都是定位 bug 的主要方法之一。特別是當你提交 bug 給對應的開發同學,如果沒有 “鐵證”,他們通常都拒絕修改。甚至還會高傲的對你說 “你抓個包看看,是不是後臺或者介面的問題啊,憋有事沒事給我提 bug~”。這個時候,Fiddler 就可以幫助你快速打臉回去了~當然,打臉不是目的,幫助開發同學快速精準的定位 bug 原因,才是王道!

6.Fiddler 是什麼?

那麼 Fiddler 究竟是什麼?能幹什麼呢?

《度娘寶典》如是說:
  Fiddler 是一個 http 協議除錯代理工具,它能夠記錄並檢查所有你的電腦和網際網路之間的 http 通訊,設定斷點,檢視所有的 “進出” Fiddler 的資料(指 cookie,html,js,css 等檔案,這些都可以讓你胡亂修改的意思)。 Fiddler 要比其他的網路偵錯程式要更加簡單,因為它不僅僅暴露 http 通訊還提供了一個使用者友好的格式。

6.1 宏哥推薦的原因  

1.安裝配置簡單,快速上手(別說鹹魚,菜鳥都會~);基本功能強大,新手必備(簡直不要太好用~);

2.能記錄所有客戶端(PC 端和手機客戶端)和伺服器間的 Http 和 Https 請求,可監視、設定斷點、修改 response 和 request,模擬低速網速環境,還能夠使用.net 框架語言擴充套件)

7.Fiddler 支援和不支援的功能

  宏哥經常會遇到的一些小夥伴或者童鞋們的私信或者留言的問題類似於:“宏哥,我可以使用 Fiddler 來完成 XXX 嗎?Fiddler 適用於很多場景中。但是,對於一些場景,Fiddler 是不合適的。絕大多數情況下,人們所使用的是 Fiddler 的少數幾個功能。一下將簡單說明 Fiddler 所適用的場景。

7.1Fiddler 支援功能的不完整列表

1.檢視幾乎所有的瀏覽器、客戶端應用或者服務之間的 web 資料流。監控我們瀏覽器所有的 http/https 的資訊和流量,也就是所有的請求或者響應,所有的流量都可以監聽。

2.手動或者自動修改任意的請求或者響應。當監聽擷取到 http 請求之後,就可以做一些檢視 分析瀏覽器請求的內容細節,就可以偽造一些請求 偽造一個伺服器的響應都是可以的!

3.解密 https 資料流以便檢視和修改

4.歸檔捕獲到的資料流,支援不同計算機上載入這些資料

5.給客戶端應用 “回放(play back)” 先前捕獲到的響應,即使當前伺服器處於離線狀態。

6.絕大多數 PC 和各種裝置之間的 Web 資料流的除錯,包括 Mac/Linux 系統、智慧手機和平板電腦。

7.掛接到(chain to)上游代理伺服器,包括 TOR 網路(TOR 是專門防範對流量探嗅分析的軟體專案。它透過由遍及全球的中繼所組成的分散式網路轉發通訊,可以實現匿名訪問網路。)

8.還可以測試網站的效能

9.作為反向代理執行,在不需要配置客戶端計算機或者裝置的情況下,在服務端捕獲的資料流。

10.全域性、區域性斷點功能!

11.第三方外掛

7.2Fiddler 不支援功能的不完整列表

Fiddler 是一個非常靈活強大的工具,但某些功能目前還不支援。

1.除錯非網路協議資料流

(1)Fiddler 支援 HTTP、HTTPS 和 FTP 資料流以及相關協議,如 HTML5 WebSockets 和 ICY 流。

(2)Fiddler 無法監測或修改基於其他協議的資料,如 SMTP、POP3、Telnet、IRC 等。

2.處理超大請求和響應

(1)超過 2GB 的請求,Fiddler 無法處理

(2)超過 2GB 的響應,Fiddler 的處理能力有限

(3)Fiddler 使用系統記憶體和頁面檔案(pagefile)來儲存會話資料。儲存大量的會話或者超大的請求和響應會導致效能急劇下降。

3.“神奇” 地修復網站的錯誤(bug)

(1)Fiddler 可以用來協助識別網路問題,但通常不能獨立修復這些 bug。

8.Fiddler 應用場景

Fiddler 的應用場景也很廣泛,具體應用場景如下:

1.介面除錯

2.介面測試

3.線上環境除錯

4.web 效能分析

5.判斷前後端 bug

6.開發環境 hosts 配置

7.mock 模擬測試

8.弱網斷網測試

要知道 Fiddler 作為系統代理,所有的來自網際網路服務的 http(https)請求在到達目標 Web 伺服器之前都會經過 Fiddler,同樣的,所有的 Http(https)響應都會在返回客戶端之前也會經過 Fiddler。

9.Fiddler 部署

9.1Fiddler 環境部署

1.下載 Fiddler,官方下載地址:https://www.telerik.com/download/fiddler填寫好電子郵箱和國家地區 點選 Download for windows 就可以下載了。如下圖所示:

2.安裝:傻瓜式安裝,一直點下一步,直達完成為止。安裝成功會顯示如下介面,如下圖所示:

9.2Fiddler 更新

1.Fiddler 在啟動時,會自動查詢是否有新版本。當發現有新版本時,會有更新提示。如下圖所示:

2.點選 “Yes” 按鈕,Fiddler 會啟動瀏覽器,下載最新的安裝程式。下載完成後,關閉正在執行的 Fiddler,手動安裝新下載的程式。如果點選的是 “Next Time” 下一次安裝這個按鈕,下一次啟動 Fiddler 時,它會自動下載安裝最新版本。如果點選 “No”,彈出的對話方塊就會關閉,不會安裝新的版本,下一次啟動 Fiddler 時,還會彈出這個提示。

3.Fiddler 提示更新,傻瓜式更新,一直點下一步,直達完成為止。更新成功會顯示如下介面,如下圖所示:

9.3Fiddler 退出

可能有的小夥伴覺得沒有必要介紹 Fiddler 退出,這麼簡單我直接關閉不就直接退出了,但是有時候你的退出操作卻是不正常的退出操作,這個就會產生一系列的問題。當 Fiddler 是以代理伺服器形式工作的,預設 ip 地址是 127.0.0.1:8888,如果 Fiddler 是非正常退出,那麼仍會佔用埠,導致其他網頁訪問失敗,因此大家退出 Fiddler 的時候,要點選 File,點選 Exit,正常退出 Fiddler,而不是直接點選右上角的叉號關閉。如下圖所示:

9.4Fiddler 解除安裝

可以使用控制皮膚中的 “新增/刪除” 來解除安裝 Fiddler。解除安裝後,系統並不會被清理乾淨,因此解除安裝無法解決配置問題。

10.Fiddler 工作原理

  在介紹 fiddler 使用方法之前,我想先介紹一下 fiddler 原理,明白原理後,使用起來會更得心應手。

  Fiddler 是位於客戶端和伺服器端之間的 HTTP 代理, 它能夠記錄客戶端和伺服器之間的所有 HTTP(S) 請求,可以針對特定的 HTTP(S) 請求,分析網路傳輸的資料,還可以設定斷點、修改請求的資料和伺服器返回的資料。
  Fiddler 在客戶端與伺服器之間建立一個代理伺服器,Fiddler 工作於七層中的應用層,能夠捕獲透過的 HTTP(S) 請求。Fiddler 啟動後會自動將代理伺服器設定成本機,預設埠為 8888。Fiddler 不僅能記錄 PC 上瀏覽器的網路請求資料,還可以記錄同一網路中的其他裝置的 HTTP(S) 請求資料。資料傳遞流程大致如下圖所示:

  由上圖可以看出,Fiddler 使用代理方式,讓客戶端所有資料流都發給它,然後由 fiddler 轉發給目標 server,目標 server 的回包發給 fiddler,再由 fiddler 轉發給客戶端。所以不管是 Request 還是 Respone 資料包都經過了 fiddler,fiddler 能進行截獲和分析。正是他這樣架構優勢,才有其其他工具無法做到的強大功能,其不光是支援這些IE, Chrome, Safari, and Opera瀏覽器的抓包,還支援一些客戶端的 http(s) 抓包,前提是這些 client 支援 http 代理配置。

10.1 圖解

1) 客戶端向伺服器傳送 HTTP(S) 請求時,請求會先經過代理 Fiddler 代理伺服器。
2) Fiddler 代理伺服器擷取客戶端的請求報文,再轉發到伺服器,轉發之前可以做一些請求報文引數修改的操作。
3) 伺服器處理完請求以後返回響應報文,Fiddler 代理伺服器會擷取伺服器的響應報文。
4) Fiddler 處理完響應報文後再返回給客戶端。

Fiddler 的原理簡單點說就是透過改寫 HTTP 代理然後讓網路資料從 Fiddler 這邊透過 這樣子來監控並且擷取到網路資訊資料。當你開啟 Fiddler 的時候, 就已經設定好了瀏覽器的代理了。當你關閉的時候,它會自動的幫你把代理還原。這裡還要清楚一點的就是 瀏覽器預設走的是我們的系統代理,其實這裡的代理監聽 就是在 請求和響應之間插了一腳, 讓 fiddler 成為系統代理。

1.在你安裝好 Fiddler 之後啟動,並可以開啟選單欄中的 *Tools--->options--->Connections * ,如下圖所示:

2.從上圖可以看到:有一句Act as system proxy on startup意思就是 (在啟動時充當系統代理),並且預設監聽埠設定為了 8888。Fiddler 就是一箇中間的 proxy(代理伺服器),如下圖所示:

3.檢視自己電腦系統是否在啟動 Fiddler 後,開啟了代理,如下圖所示:

4.當正常退出 fiddler 的時候,再次檢視系統手動設定代理選項就會被清空並關閉,如下圖所示:

11.小結

注意:這個 Fiddler 工具是基於.NET Framework 的 ,因為 Fiddler 是 c# 開發的,如果是比較老的 windows 系統要保證執行環境!☺️Fiddler 的安裝方法也很簡單 獲取到安裝包之後,直接選擇安裝路徑 或 無腦下一步就可以了!☺️

Fiddler 是以代理 WEB 伺服器的形式工作的,瀏覽器與伺服器之間透過建立 TCP 連線以 HTTP 協議進行通訊,瀏覽器預設透過自己傳送 HTTP 請求到伺服器,本地使用代理地址:127.0.0.1, 埠:8888.而當 Fiddler 開啟會自動設定系統代理, 正常退出的時候它會自動登出代理,這樣就不會影響別的程式。但是如果 Fiddler 非正常退出,這時可能會因為 Fiddler 沒有自動登出,而會造成網頁無法訪問。

解決的辦法是重新啟動下 Fiddler,然後正常退出就可以了, 這也是有很多新手安裝了 Fiddler 之後導致一些網路無法訪問的原因之一。

相關文章