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

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,官方下載地址://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之後導致一些網絡無法訪問的原因之一。

Tags: