Fiddler簡介


Fiddler簡介

1主菜單欄:菜單中幾乎可以啟動所有的fiddler功能

2工具欄:提供了很多常見的命令

3 Web sessions:顯示捕捉到的每個sessions的簡短信息,平常需要在這里選擇一個或多個session后再進行操作

4功能面板:提供了很多功能和選項卡

5 QuickExec(命令行工具):可以輸入簡單的命令

6狀態欄:展示了一些fiddler的配置信息

 

 

 

Web session列表

位於左側窗口,是fiddler中最重要的部分,顯示了每個session的摘要信息。可以排序

1 #:這是fiddler生成的ID

2 Result:響應的狀態碼

3 protocol:使用的協議httphttps

4 Host:服務器的主機名和端口號

5 URLURL的路徑

6 Bodyhttp響應中包含的字節數

7 Catching:跟緩存相關的字段的值

8 Content-Type:響應中Content-Type的值

9 Process:對應本地Windows的進程

 

 

 

 

 

 

1抓包

 

抓包==獲取http數據包的過程

 

 

 

開啟和關閉:

 

方法1

 

打開fiddler->工具欄點擊file->點擊Capture Traffic,開啟抓包或停止抓包(快捷鍵F12

 

方法2

 

單機fiddler左下角的“Capturing”按鈕來開始抓包或者停止抓包

 

 

 

 

捕獲請求,查看請求和響應報文:

打開fiddler,打開瀏覽器發送請求

fiddler界面中找到對應urlsession,點擊inspectors選項卡

inspectors選項卡中請求部分(上)和響應部分(下)均選擇Raw選項卡,這樣就能看到完整的http請求和響應報文了,由於是個get方法,所以http請求中沒有body

除了Raw之外其他選項卡可以查看請求和響應的其他部分

 

 

 

 

1.Fiddler抓包的原理:

fiddler本質上是一個代理服務器。它的默認工作端口是8888

打開fiddler,在菜單欄中點擊Tools->Fiddler options

 

在彈出的框中選擇Connections

 

 

 

代理服務器即是Web服務器又是Web客戶端,是網絡信息的中轉站,具有以下功能:

1共享網絡-可以共享IP

2提高訪問速度-具有緩沖作用

3突破了訪問速度-速度提升

4 隱藏身份-內部網用戶對外發布信息,用反向代理功能,保證內部安全性,起到隱藏身份目的

 

Fiddler 工作原理:

工作方式:Fiddler是以代理Web服務器的形式工作

代理地址:127.0.0.1

端口:8888

在瀏覽器和網絡服務器之間起到代理的作用:

Fiddler啟動的時候,會把internet選項中的代理修改為127.0.0.1,端口8888

Fiddler退出的時候,會自動在internet選項中取消代理,這樣就不會影響到別的程序

如果fiddler非正常退出,這時候因為fiddler沒有自動注銷,會造成網頁無法訪問,解決辦法是重新啟動fiddler

 

查看internet選項代理設置:

1先啟動fiddler

2打開控制面板——internet選項,選擇連接--局域網設置--高級,看到代理設置已被更改

 

3關閉fiddler,再查看代理設

*Fiddler可以捕獲任何程序發出來的http/https請求,只要這個程序支持web代理服務即可

只要在程序內設置代理服務器即可實現抓包*

 

fiddler解壓http響應:

抓包的過程中,會看到響應中是亂碼,點擊Response body is encoded Click to decode”按鈕可以解壓http響應。

 

 

 

 

Web通信安全:

http協議是不安全的容易被中間人攔截到

1只有雙方能看到通信內容

2 http請求內容和響應不被第三方篡改(加密算法:對稱加密、非對稱加密、DESRSA等)

對稱加密-密鑰同時扮演加密和解密的角色

每個Web服務器與每個客戶端使用不同的對稱加密算法(每條通信使用的加密算法不同)

3 https==加密后的httphttps=http+tls或者ssl證書,采用https的網站需要去數日證書認證機構申請證書(Certificate Authority,CA

 

Fiddler捕獲https會話

默認狀態下,fiddler不會捕獲https會話,需要設置

1啟動fiddler

2菜單欄中點擊Tools-Fiddler Option->https,選中“Capture https traffic”和“Decrypt https traffic”彈出對話框點“yes”,同時選中“Ignore server certificate errors”來忽略一些證書錯誤

 

 

 

 

3點擊Actions選擇信任證書后點擊OK保存設置,並在cmd命令行輸入ipconfig查看本地ip地址

 

4打開網頁輸入http://ip:8888訪問,下載並安裝證書

 

安裝后fiddler可以正常抓取https協議信息了

 

 

 

手動單獨瀏覽器安裝證書:

 

點擊下圖中Actions,並點擊export root certificate to desktop

 

導出

 

 

 

 

然后打開瀏覽器,選擇工具-選項-隱私與安全-證書,點擊查看證書,打開證書管理器,選擇“證書頒發機構”,點擊導入,選擇“fiddlerRoot.cer

 

點擊確定導入,之后瀏覽器就可以捕獲https的請求了

 

 

 

手機抓包

 

手機抓包要在手機的開發者模式下並且與電腦使用同一網絡,端口號為8888(與電腦配置的代理),訪問電腦IP:8888並在手機設置中安裝證書,操作流程與電腦端類似

 

 

查看windows本地安裝的證書:

 

點擊下圖中Actions,並點擊open windows certificate manager

 

 

 

 

 

 

2 HTTP請求

常見的http請求方法:get(查)、put(增)、post(改)、delete(刪)、head(只要響應頭)

Fiddler查看http響應header

點擊inspectors->request->headers

 

 

 

 

Cache相關的header 是用於緩存的header

Cookie是一種http header

Accept表示瀏覽器客戶端可以接受的媒體類型

Accept-encoding 跟壓縮有關,高速服務器,瀏覽器支持什么類型的壓縮

Accept-language 的作用是聲明瀏覽器自己接受的語言

User-agent 的最用是瀏覽器用來告訴服務器,客戶端使用的操作系統及版本,瀏覽器及版本,瀏覽器渲染引擎,瀏覽器語言,瀏覽器插件等

 

例如:fiddler實現修改user-agent,偽裝客戶端

1啟動fiddler

2點擊Rules->User-Agents,選擇ipad

 

3打開瀏覽器,輸入任意一個網站

 

4fiddler中,我們可以查看user-agent的值為ipad

 

 

 

 

 

 

Referer

referer:http協議頭中的Referer主要是來讓服務器判斷來源頁面,即用戶是從哪個頁面來的,網站通常用來統計用戶來源,查看用戶是用搜索頁面來的,還是從其他網站鏈接過來的,或是從書簽頁等訪問的,以便合理定位網絡。有時也被用作防盜鏈,即下載時判斷來源地址是不是在網站域名之內,否則就不能下載或顯示。很多網站就是通過Referer來判斷用戶是否能夠下載圖片的

 

1打開fiddler

 

2打開瀏覽器

 

3點擊網頁上的跳轉鏈接

 

4查看fiddler

 

 

 

 

Host:指定被請求的主機和端口號,通常從http url中提取出來

 

Fiddler查看http響應header

1打開fiddler

2打開網頁

 

3查看fiddler

 

 

 

 

網頁抓包

網頁組成:一個html,多個圖片,css文件,javascript文件,json文件

瀏覽器請求一個網頁的過程:

1輸入網址

2瀏覽器會發送一個http請求去獲取頁面布局的html==“父請求”

3瀏覽器會分析http響應中的html,如果發現html中引用了很多其他文件,比如圖片、css文件、js文件等,瀏覽器會自動再次發送很多http請求,去獲取圖片、css文件或者js文件。這些http請求叫做==“子請求”子請求的加載速度會影響網頁加載的總體速度

4當所有自請求的響應都返回后,瀏覽器會把1個父請求加上多個子請求渲染出來,這樣就形成了一個頁面,網頁就在瀏覽器上顯示出來

 

 

 

 

fiddler選擇請求

查找父請求:

先找到子請求,右鍵選擇select->parent request 或者快捷鍵P

 

 

 

 

 

查找子請求:

先找到父請求,右鍵選擇select->child request 或者快捷鍵C

 

根據父請求和子請求的加載時間可以看作做一個web頁面簡單的性能測試

Fiddler查看響應

http響應可能是一個html文檔,也可能是一個圖片

Raw可以查看完整的HTTP響應

 

如果HTTP響應是圖片,可以用imageview來查看

 

如果http響應是html文檔,可以用webview來查看

 

如果HTTP響應是json,可以用json來查看

 

 

 

 

Fiddler打斷點,修改HTTP報文

抓包+改包

1全局斷點

啟動fiddler 點擊菜單欄Rule->Automatic Breakpoint->Before Requests 或者快捷鍵F11

這樣會攔截所有的會話

 

 

 

 

取消全局斷點

啟動fiddler 點擊菜單欄Rule->Automatic Breakpoint->Disabled 或者快捷鍵shift+F11

2單個斷點,一直某個請求的URL地址,這時候只需要針對這一個請求打斷點調試,其他的請求不攔截

啟動fiddler 在左下角的quickexec命令行輸入命令:“bpu 域名/URL” 這種方法只會攔截輸入的域名網址,

要想消除單個斷點,可以在命令行輸入命令:bpu

 

Fiddler 修改http請求

例如:瀏覽器訪問www.baidu.com,則通過fiddler修改http請求,讓瀏覽器去訪問www.cnblog.com/superhin

1啟動fiddler,在菜單欄中點擊Rules->Automatic Breakpoints->Before Requests.

 

 

 

2打開瀏覽器,輸入www.baidu.com,這時候你會發現任務欄上的fiddler圖標在閃爍,說明fiddler攔截住了http請求

 

 

 

 

3回到fiddler界面,在菜單欄中點擊Rules->Automatic Breakpoints->Disabled(目標請求已經攔截成功,其余的請求放行)

 

4被攔截的http請求有一個紅色的T圖標,選中需要修改的http請求,選擇inspectors面板,使用Raw選項卡(必須要在Raw選項卡下才能修改)

 

5URL修改為“www.cnblogs.com/superhin,同時把host修改成“www.cnblogs.com

 

6 URL修改並跳轉成功

 

 

 

 

Fiddler設置斷點修改http響應

1全局斷點

啟動fiddler 點擊菜單欄Rule->Automatic Breakpoint->After Response

這樣會攔截所有的會話

 

 

 

 

取消全局斷點

啟動fiddler 點擊菜單欄Rule->Automatic Breakpoint->Disabled 或者快捷鍵shift+F11

 

使用Fiddler修改網頁的標題

1啟動fiddler設置全局斷點

 

2打開瀏覽器,輸入

https://weibo.com/u/3176010690?nick=%E5%B8%A6%E5%B8%A6%E5%A4%A7%E5%B8%88%E5%85%84&is_hot=1#_rnd1568892417818

 

3fiddler中選擇

https://weibo.com/u/3176010690?nick=%E5%B8%A6%E5%B8%A6%E5%A4%A7%E5%B8%88%E5%85%84&is_hot=1#_rnd1568892417818”,選中“inspectors”面板,Response下使用Raw選項卡(必須要在Raw選項卡下才能修改),並關閉全局斷點

 

 

 

 

4修改html代碼,然后單擊“Run to Completion”,查看網頁標題修改成功

 

 

 

 

 

fiddler偽造Referer

1啟動fiddler,設置全局斷點

 

 

 

 

2打開瀏覽器,輸入

https://weibo.com/u/3176010690?nick=%E5%B8%A6%E5%B8%A6%E5%A4%A7%E5%B8%88%E5%85%84&is_hot=1#_rnd1568892417818

 

Fiddler中會提示攔截到該請求,在Raw選項卡中修改http請求,添加一個“Referer:www.baidu.com

 

 

 

 

點擊綠色的Run to completion”放行,成功進入頁面

 

 

 

Fiddler中查看緩存的新鮮度

 

緩存(cache)http請求Header

 

1瀏覽器把緩存文件的最后修改時間通過headerIf-Modified-Since”告訴Web服務器

 

2瀏覽器把緩存文件的ETag通過HeaderIf-None-Match”告訴Web服務器

 

兩種方式

 

1:當瀏覽器客戶端像請求一個文檔,首先檢查本地緩存,發現存在這個文檔的緩存,獲取緩存中文檔的最后修改時間,通過“If-Modified-Since”發送http請求給Web服務器

 

2Web服務器收到http請求,將服務器的文檔修改時間(Last-Modified)跟http請求Header中的If-Modified-Since相比較。如果時間是一樣的,說明緩存還是最新的,Web服務器將發送狀態碼304Not Modified)給瀏覽器客戶端,告訴客戶端直接使用緩存里的版本

http請求中跟緩存相關的Header

 

 

名稱

釋義

Cache-Control:max-age=0

以秒為單位

If-Modified-Since:Mon,20 Dec 2018 08:38:01 GMT

緩存文件的最后修改時間

If-None-Match:”0693f67a67cc1:0”

緩存的文件的Etag

Cache-Control:no-cache

不使用緩存

Pragma:no-cache

不使用緩存

Cache-Control:public

響應被緩存,並且在多用戶間共享

Cache-Control:private

響應只能作為私有緩存,不能在用戶之間共享

Cache-Control:no-cache

提醒瀏覽器要從服務器提取文檔進行驗證

Cache-Control:no-store

絕對禁止緩存(用於機密/敏感文件)

Cache-Control:max-age=60

60s之后緩存過期(相對時間)

Date:Mon,20 Dec 2018 08:38:01 GMT

當前響應發送的時間

Expires:Mon,20 Dec 2018 08:38:01 GMT

緩存過期的時間(絕對時間)

Last-Modified:Mon,20 Dec 2018 08:38:01 GMT

服務器端文件的最后修改時間

ETag:”20biadd7ec1cd1:0”

服務器端文件的ETag

 

 

ETagEntity Tag(實體標簽)的縮寫,是根據實體內容生成的一段hash字符串(類似於MD5或者SHA1之后的結果),可以標識資源的狀態。當資源發生改變時,ETag也隨之發生變化。

 

ETag是服務端產生的,然后發送給瀏覽器客戶端。目的是為了解決一些Last-Modified無法解決的問題

 

1某些服務器不能精確得到文件的最后修改時間,這樣就無法通過最后修改時間來判斷文件是否更新了

 

2某些文件的修改非常繁瑣,在以秒為單位以下的時間內進行修改,而Last-Modified只能精確到秒

 

3一些文件的最后修改時間改變了,但是內容並未改變,我們不希望客戶端認為這個文件修改了

 

實例:啟動fiddler,打開博客園首頁,可以看到很多圖片或者CSS文件都使用了緩存。這些都是通過比較ETag的值來判斷文件是否更新

 

 

 

瀏覽器不使用緩存

快捷鍵:Ctrl+F5強制刷新瀏覽器,可以讓瀏覽器不使用緩存

 

 

 

 

直接使用緩存,不去服務器驗證

在地址欄里輸入網址然后按回車鍵瀏覽器會直接使用有效的緩存,而不會發送http請求去服務器驗證緩存,這種情況叫做緩存命中

(F5快捷鍵刷新瀏覽器,瀏覽器回去Web服務器驗證緩存)

公有緩存和私有緩存的區別:

Cache-Control:public”指可以公有緩存,緩存可以由數千名用戶共享。“Cache-Control:private”指只支持私有緩存,是單個用戶專用的

 

http壓縮的過程

1瀏覽器發送http請求給Web服務器,請求中的HeaderAccept-Encoding:gzip deflate(告訴服務器,瀏覽器支持gizp壓縮)

2Web服務器接到http請求后,生成原始的http響應,其中有原始的Content-TypeContent-Length

3Web服務器通過gzip來對http響應進行編碼,編碼后Header中有Content-TypeContent-Length(壓縮后的大小),並且增加了Content-Encodinggzip,然后把http響應發送給瀏覽器

4瀏覽器接到http響應后,根據Content-Encodinggzip來對http響應進行解碼,獲取到原始http響應后顯示出網頁

fiddler中,每次都要手動去decode實在是太麻煩,單機工具欄上的Decode按鈕,就可以自動解壓了

 

 

 

 

內容編碼類型

gzip表明屍體采用GUN zip編碼

Compress表明屍體采用UNIX的文件壓縮程序

Deflate表明時提示用zlib的格式壓縮的

Identity表明沒有對實體進行編碼:當沒有Content-Encoding header時,就默認為這種情況

Gzip/compress以及deflate編碼都是無損壓縮算法,用於減少傳輸報文的大小,不會導致信息損失,其中gzip通常效率最高,使用最為廣泛。

壓縮的好處

可以將純文本壓縮至原內容大小的40%,從而節省了60%的數據傳輸,

Gzip不足之處

jpeg這類文件用gzip壓縮的效果不夠好,gzip占用了一些服務器和客戶端的CPU

Gzip是如何壓縮的

Gzip壓縮是在一個文本文件中找出類似的字符串,並臨時替換他們,從而使整個文件變小,這種形式的壓縮對Web來說非常合適,因為HTMLCSS文件通常包含大量重復的字符串,例如空格,符號,標簽等

URL Encoding介紹

就是把所有非英文字母,數字字符都替換成百分號(%)后面頰兩位十六進制數,比如空額的編碼為“%20

POST中的主體在傳輸的是偶同樣會被轉義

Fiddler中的TextWizard功能面板可以對字符和字符串機型URL Encoding或者Decode

 

 

 

 

 

 

Fiddler使用技巧

 

Fiddler與其他軟件的比較

 

1可以通過fiddler script寫腳本來擴展功能,charles則不能

 

2開源免費

 

3跨平台(Windows Linux Mac

 

4支持多種瀏覽器

 

5wireshark支持更多的協議,主要是來監聽TCP/IP協議,直接與網卡進行數據報文交互,監聽http協議不方便也大材小用

 

 

 

Fiddler抓包失敗的解決方法

 

1確定是http協議還是https協議,如果是https協議,檢查證書的原因,錯了重新安

 

2檢查換瀏覽器的http代理設置是否正確,或者換一個瀏覽器嘗試

 

3檢查fiddler的捕獲開關是否打開

 

4檢查過濾的設置

 

5確定是否是捕獲Localhost的流量

 

 

 

Fiddler抓包建議

 

先清空session列表,然后再進行抓包

 

清空操作:工具欄“×”圖標,點后再點“remove all”或者命令行輸入“cls”命令后回車

 

抓到想抓的包后可以關閉抓包捕獲,以免再獲取更多的session

 

 

 

Fiddler異常退出后無法上網(沒注銷代理)

 

重啟開啟fiddler后再關閉

 

 

 

fiddler中查詢會話

 

菜單欄點擊Edit->Find Session 或者快捷鍵【Ctrl+F】打開“Find Sessions”對話框,輸入關鍵字查詢session,查詢到的session會以黃色顯示(漢字或者圖書字符很可能查詢不到,因為在http請求中被轉譯了)

 

 

 

Fiddler中保存抓到的包

 

1選擇將要保存的會話,然后點擊File->Save->Selected Sessions,保存后的后綴名是.saz,文件保存完整的http請求和http響應

 

2雙擊.saz文件,或者點擊fiddler菜單欄中的File->Load Archive,就能打開文件

 

 

 

Fiddler中編輯會話

 

Inspectors中編輯,上文有說到

 

 

 

過濾會話

 

找到User Filters”,可以啟動過濾功能

 

FiltersActions中,我們可以保存好當前的過濾配置,也可以加載已經保存好的過濾配置

 

 

 

 

常用快捷鍵:

快捷鍵

用途

CTRL+X

刪除所有的session

CTRL+A

選擇所有的session

ESC

不選擇任何的session

CTRL+I

反選session

Delete

刪除選擇的session

Shift+Delete

刪除未選擇的session

R

重放選擇的session(可以重放多個session

SHIFT+R

多次重放選擇的session(隨后會提示你輸入,重放幾次)

U

無條件的重放選擇的session(不會發送If-Modified-SinceIf-None-Match Headers

SHIFT+U

無條件地重放選擇的session(隨后會提示你輸入,重放幾次)

P

選擇“當前session”的“父session”(這個功能取決於Referer Header

C

選擇“當前session”的“子session

D

選擇“上次選擇的session

Insert

 

CTRL+1

CTRL+2

CTRL+3

CTRL+4

CTRL+5

CTRL+6

用粗體和顏色標記選擇的sessoin

M

給選擇的session添加注釋

 

QuickExec命令行的使用

1help:打開官方的使用頁面介紹,所有的命令都會列出來

2cls:清屏sessions

3select:選擇會話的命令

4?.png:用來選擇.png后綴的圖片

5bpu:截獲request

還可以urlreplace www.baidu.com www.cnblogs.com/superhin”替換掉host

 

fiddler比較會話的不同

位置:Tools->compare session

選中兩個session點擊上面位置的選項,否則置灰無法點擊

 

 

 

 

Fiddler插件

插件下載地址:http://www.telerik.com/fiddler/add-ons

 

前端調試javascript文件

使用AutoResponse模塊,在AutoResponder中,在RuleEditor中點擊“Find a file”選擇本地js文件,選中“Unmatched requests passthrough”放行匹配的合同談判請求,點擊save

在瀏覽器訪問對應的網址,查看js文件相應結果

 

 

 

 

替換網頁中的圖片

1啟動fiddler,使用瀏覽器訪問

https://weibo.com/u/3176010690?nick=%E5%B8%A6%E5%B8%A6%E5%A4%A7%E5%B8%88%E5%85%84&is_hot=1#_rnd1568892417818

 

2在瀏覽器中把一張圖片保存到本機中,命名為superh.jpg

 

3fiddler中,找到這個圖片的session,並拖拽到AutoResponse

 

4RuleEditor中,單機“Find a file..”,選擇本地的superh.jpg。選中Enable rules,激活規則,選中“Unmatched requests passthrough”,並且點擊Save

 

 

 

 

 

 

5刷新瀏覽器,可以查看到圖片已經被替換了

 

Fiddler中此模塊也可以進行mock測試,設定請求和響應返回的內容,然后通過瀏覽器進行訪問

 

 

手機弱網測試更改網速

通過修改fiddler script來實現

修改fiddler script:

上傳於下載的初始腳本內容為:

上傳upload“每上傳1KB數據,延時0.3

下載dowmload“每下載1KB數據,延時0.15秒”

(腳本中的數值越大速度越慢、越小下載速度越快

算法:1000/上傳(下載)速度=需要延遲的時間

例如:50kbit/s需要延遲200ms來接收數據

 

使用修改后的腳本數據

修改保存后勾選(修改保存后再次查看Simulate Modem Speeds,為未勾選狀態,勾選=啟用)

Rules->Performances->Simulate Modem Speeds

 

 

 

 

 

 

 

查看日志

 

 

Fiddler中的接口請求發送

 

 

Fiddler script

Fiddler script是一個可以自動修改http請求和http相應的腳本文件,不需要再手動去對請求和相應進行操作,屬於高級內容,它可以讓fiddler的擴展性更好,功能更加強大

 


免責聲明!

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



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