【爬蟲】網頁抓包工具--Fiddler

lhrbest發表於2018-12-19


【爬蟲】網頁抓包工具--Fiddler


Fiddler基礎知識

  • Fiddler是強大的抓包工具,它的原理是以web代理伺服器的形式進行工作的,使用的代理地址是:127.0.0.1,埠預設為8888,我們也可以透過設定進行修改。

  • 代理就是在客戶端和伺服器之間設定一道關卡,客戶端先將請求資料傳送出去後,代理伺服器會將資料包進行攔截,代理伺服器再冒充客戶端傳送資料到伺服器;同理,伺服器將響應資料返回,代理伺服器也會將資料攔截,再返回給客戶端。

  • Fiddler可以抓取支援http代理的任意程式的資料包,如果要抓取https會話,要先安裝證照。

HTTP協議

  • 要分析Fiddler抓取的資料包,我們首先要熟悉HTTP協議。HTTP即超文字傳輸協議,是一個基於請求與響應模式的、無狀態的、應用層的協議,絕大多數的Web開發,都是構建在HTTP協議之上的Web應用。

  • HTTP的工作過程:當我們請求一個超連結時,HTTP就開始工作了,客戶端先傳送一個請求到伺服器,請求內容包括:協議版本號、請求地址、請求方式、請求頭和請求引數;伺服器收到請求後做相應的處理,並將響應資料返回到客戶端,響應內容包括:協議版本號、狀態碼和響應資料。前端根據響應資料做相應的處理,就是最終我們看到的內容。這些過程是HTTP自動完成的,我們只是輸入或點選請求地址,然後檢視前端給我們展示的內容。更多關於HTTP協議的介紹請參考:http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html

  • 請求方式常用的有:GET、PUT、POST、DELETE。

  • HTTP狀態碼主要分為5類:以1開頭的代表請求已被接受,需要繼續處理;以2開頭的代表請求已成功被伺服器接收、理解、並接受;以3開頭的代表需要客戶端採取進一步的操作才能完成請求;以4開頭的代表了客戶端看起來可能發生了錯誤,妨礙了伺服器的處理;以5開頭的代表了伺服器在處理請求的過程中有錯誤或者異常狀態發生,也有可能是伺服器意識到以當前的軟硬體資源無法完成對請求的處理。

  • 常見的主要有:200:伺服器成功處理了請求;404:未找到資源;500:內部伺服器錯誤;503:伺服器目前無法為請求提供服務;302:請求的URL已臨時轉移;304:客戶端的快取資源是最新的,要客戶端使用快取。

  • 每個狀態碼的詳細介紹請參考:%E7%8A%B6%E6%80%81%E7%A0%81/5053660?fr=aladdin

Fiddler的使用

  • Fiddler是一個很好用的抓包工具,可以將網路傳輸傳送與接收的資料包進行截獲、重發、編輯等操作。也可以用來檢測流量。

  • Fiddler安裝後,設定的埠預設為8888,當Fiddler啟動後,預設將IE的代理設為了127.0.0.1:8888,而其他如火狐瀏覽器需要手動設定代理後才可以抓包。設定內容如圖:

  •  

1)要使用Fiddler進行抓包,首先需要確保Capture Traffic是開啟的(安裝後是預設開啟的),勾選File->Capture Traffic,也可以直接點選Fiddler介面左下角的圖示開啟和關閉抓包。

2)所以基本上不需要做什麼配置,安裝後就可以進行抓包了。那麼我們怎麼分析抓到的這些資料包呢?如圖所示的區域為資料包列表,要分析這些資料包,首先要了解各欄位的含義。

#:順序號,按照抓包的順序從1遞增

Result:HTTP狀態碼       

Protocol:請求使用的協議,如HTTP/HTTPS/FTP等

HOST:請求地址的主機名或域名

URL:請求資源的位置

Body:請求大小

Caching:請求的快取過期時間或者快取控制值

Content-Type:請求響應的型別

Process:傳送此請求的程式ID

Comments:備註 

Custom:自定義值

3) 每個Fiddler抓取到的資料包都會在該列表中展示,點選具體的一條資料包可以 在右側選單點選Insepector檢視詳細內容 。主要分為請求(即客戶端發出的資料)和響應(伺服器返回的資料)兩部分。

 4)HTTP Request Header:以百度為例,檢視請求百度主頁這條資料包的請求資料,從上面的Headers中可以看到如下內容:

請求方式 :GET

協議 : HTTP/1.1

Client 頭域:

Accept: text/html, application/xhtml+xml, image/jxr, */*                              ---------瀏覽器端可以接受的媒體型別

Accept-Encoding: gzip, deflate                                                                   --------- 壓縮方法

Accept-Language: zh-CN                                                                           --------- 語言型別

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393                               --------- 客戶端使用的作業系統和瀏覽器的名稱和版本

COOKIE頭域 :將cookie值傳送給伺服器

Transport 頭域:

Connection:當網頁開啟完成後,客戶端和伺服器之間用於傳輸HTTP資料的TCP連線是否關閉。keep-alive表示不會關閉,客戶端再次訪問這個伺服器上的網頁,會繼續使用這一條已經建立的連線;close表示關閉,客戶端再次訪問這個伺服器上的網頁,需要重新建立連線。

HOST:主機名或域名,若沒有指定埠,表示使用預設埠80.

  5)HTTP Response Header:繼續以百度為例,如圖所示:

協議 :HTTP/1.1

狀態碼 :200

Cache頭域:
Cache-Control: private                                                --------- 此響應訊息不能被共享快取處理,對於其他使用者的請求無效

Date: Sat, 05 Aug 2017 04:37:43 GMT                       --------- 生成訊息的具體時間和日期

Expires: Sat, 05 Aug 2017 04:37:42 GMT                   --------- 瀏覽器會在指定過期時間內使用本地快取

Cookie/Login 頭域:

Set-Cookie: BDSVRTM=264; path=/                            --------- 把cookie傳送到客戶端
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=1425_21097_22157; path=/; domain=.baidu.com

Entity頭域

Content-Length: 202740                                               --------- 正文長度
Content-Type: text/html;charset=utf-8                          --------- 告知客戶端 伺服器 本身響應的物件的型別和字符集

Miscellaneous 頭域:
Bdpagetype: 2

Bdqid: 0x99791efd00036253

Bduserid: 2577220064
Server: BWS/1.1                                                            --------- 指明HTTP伺服器的軟體資訊

X-Ua-Compatible: IE=Edge,chrome=1
Security頭域:
Strict-Transport-Security: max-age=172800                 ---------基於安全考慮而需要傳送的引數, 關於這個引數的解釋,請參考:

Transport頭域:

Connection: Keep-Alive

6)TextView:顯示請求或響應的資料。

7)WebForms:請求部分以表單形式顯示所有的請求引數和引數值;響應部分與TextView內容是一樣的。

8)Auth:顯示認證資訊,如Authorization

9)Cookies:顯示所有cookies

10)Raw:顯示Headers和Body資料

11)JSON:若請求或響應資料是json格式,以json形式顯示請求或響應內容

12)XML: 若請求或響應資料是xml格式, 以xml形式顯示請求或響應內容

13)上面是以百度主頁為例,百度主頁採用的是GET請求,在TextView中沒有請求body,我們再 無憂行網站登入介面為例,它是一個POST請求,除了請求頭外,在TextView中多了請求資料。這也是GET請求和POST請求的一個區別。GET請求是將請求引數放在url中,而POST請求一般是將請求引數放在請求body中。

 

 

總結:透過Fiddler可以抓取請求和響應引數,透過對引數進行分析,可以定位是前端還是後臺問題。例如我們在測試登入介面時,輸入了正確的手機號和密碼,但前端提示“請輸入正確的使用者名稱和密碼”;僅僅透過介面提示我們只能描述bug表象,但不能分析出問題原因。假設透過抓包我們發現是由於前端引數名錯誤或引數值為空,從而導致後臺報錯。這個時候我們將bug指向前端開發人員,並將引數資料和介面文件中對應的報文資料作為附件上傳,是不是可以提高bug的解決效率呢?Fiddler在實際的功能測試中有很大的作用,一方面幫助我們更好的瞭解某個業務中客戶端和伺服器端是透過哪些介面進行請求的,從而更好的瞭解程式碼邏輯;另一方面,我們還可以透過響應資料判斷哪裡出現了問題,例如可能伺服器程式掛了,導致前端報“伺服器故障”,這時我們透過抓包發現響應資料返回502,這時我們可以手動去重啟服務或是聯絡運維重啟服務,從而提高問題的解決效率。

 

Fiddler工具使用介紹二

在上一篇中介紹了Fiddler的基本使用方法。透過上一篇的操作我們可以直接抓取瀏覽器的資料包。但在APP測試中,我們需要抓取手機APP上的資料包,應該怎麼操作呢?

Andriod配置方法:

1)確保手機和Fiddler所在主機在同一個區域網中

2)獲取Fiddler所在主機的ip地址,透過cmd命令進入命令編輯器,輸入ipconfig -all,找到IPv4地址,記下該地址

 

3)對手機所連線的無線網路進行設定,點選WLAN,長按與Fiddler所在主機在同一個區域網的wifi,長按點選【修改網路】,選中【顯示高階選項】,代理設定為手動,輸入代理伺服器的主機名和埠後儲存。代理伺服器的主機名即2)中的IPv4地址,埠為Fiddler上配置的埠(預設為8888),可以到Fiddler選單欄中【Tool】-【Fiddler Option】的【Connections】中檢視。

 

4)在手機瀏覽器上輸入:地址:埠(例如:http://192.168.11.29:8888),點選【FiddlerRoot certificate】下載安裝Fiddler證照。

 

5)若在瀏覽器上無法開啟該地址,需要做兩項檢查:一、確保在瀏覽器、wifi中配置的代理與Fiddler所在主機地址和Fiddler中配置的埠,三者保持一致;二、確保在Fiddler-【Tools】-【Fiddler Option]-[Connection]中【Allow remote computers to connect】已經勾選上,若沒有勾選,則需要勾選後儲存並重啟Fiddler。

 

6)這時我們開啟手機上的瀏覽器或APP,可以在Fiddler上看到手機上的資料包了。

 IOS配置方法:

1)基本與andriod的配置方法一致,除了安裝證照方式與andriod略有不同,另外ios在下載證照後,需要手動信任證照。設定方法:開啟【設定】-【通用】-【關於本機】-【證照信任證照】,找到對應的證照,啟用即可。

HTTPS抓包

上面都是針對HTTP協議進行抓包的設定,那麼HTTPS需要進行什麼配置呢?

1)開啟Fiddler-【Tools】-【Fiddler Option】,切換到HTTPS選項卡,勾選【Capture HTTPS CONNECTs】和【Decrypt HTTPS traffic】,然後點選【Actions】-【Trust Root Certificate】,然後按照提示一路yes,直到彈框提示“Trust Cert success”點選確定後,重啟Fiddler就可以抓取HTTPS協議的資料包了。

Fiddler過濾會話

我們在使用Fiddler進行抓包時,發現只要是使用了Fiddler代理伺服器的所有HTTP/HTTPS資料包都會在Fiddler資料列表中顯示出來,但有時我們只關注從某個或某些伺服器發出的請求,不想要看到其他伺服器的資料包,應該怎麼進行設定呢?我們都知道Fiddler是一款強大的抓包工具,我們可以透過設定來過濾只篩選出我們想要的資料包。

1)在右側選單中,找到Fittlers選項,共有9個部分進行設定

 

2)Use Filters:勾選則表示使用過濾,不勾選則表示不進行過濾

3)Actions:有四個選項,Run Filterset now:立即執行過濾設定;Load Filterset:載入儲存的過濾設定;Save Filterset:儲存過濾設定;help:幫助

4)Hosts:該設定項有兩個選項

  • 第一個下拉框是隻顯示內網或者外網選項

  • 第二個下拉框是根據主機名資訊顯示或者隱藏或者標記指定請求

5)Client Process:有三個選項,Show only traffic from:根據程式資訊進行過濾,選擇後,將只顯示由該程式發出的請求;Show only Internet Explorer traffic:只關心由IE瀏覽器發出的請求;Hide traffic from Service Host:隱藏來自service host(即由 svchost.exe 程式發出)的請求

6)Request Headers:有五個選項,Show only if URL contains:可以透過正規表示式過濾請求地址中包含或不包含的內容,例如REGEX:\.(js|css|js\?.*|css\?.*)$(隱藏所有js和css請求);Hide if URL contains:與Show only if URL contains相反,一個是顯示,一個是隱藏;Flags requests with headers:支援 指定某個http請求頭名稱, 如果在web session列表中存在該請求頭,會加粗顯示該session ;Delete requests headers:與Flags requests with headers類似,這裡是 如果包含該請求頭,則刪除該請求頭;Set request header:將HTTP請求頭更新為所輸入的值。

7)Breakpoints:斷點設定,有四個選項。Break request on POST:對POST請求設定斷點;Break request on GET with query string:會為所有方法為GET且URL中包含了給定查詢條件的請求設定斷點;Break on XMLHttpRequest:對所有能夠確定是透過XMLHTTPRequest物件傳送的請求設定斷點;Break response on Content-Type:會為所有響應頭Content-Type中包含了指定文字的響應設定響應斷點。

8)Response Status Code:根據響應狀態碼設定斷點。

9)Response Type and Size:有幾種型別, 一類 是根據響應資料的型別顯示或隱藏; 一類 是根據響應資料的大小 顯示或隱藏 一類 是根據響應所需要的時間設定背景顏色;一類是根據檔案型別進行限制。

  • type有以下幾種型別:

  • Time HeatMap核取方塊會基於伺服器返回給定響應所需要的時間為每個session設定背景顏色。

10)Response Headers:與Request Headers不同的是,這塊區域是針對響應資料的頭部進行過濾。

這麼多設定項,比較常用的就是1.2.3部分。透過過濾設定,可以快速的幫助我們找到我們需要抓包分析的資料包,從而提高效率,避免過多的資料包資訊干擾我們找到正確的資料包。


我們知道Fiddler是位於客戶端和伺服器之間的代理,它能夠記錄客戶端和伺服器之間的所有 HTTP請求,可以針對特定的HTTP請求,分析請求資料、設定斷點、除錯web應用、修改請求的資料,甚至可以修改伺服器返回的資料,功能非常強大,是web除錯的利器。前面我們介紹瞭如何使用Fiddler進行抓包和分析,以及如何抓取APP上的資料包。這裡我們介紹下如何修改請求和響應資料,也就是設定斷點。

對request設定斷點

1)透過選單選項或快捷鍵F11進行設定,如圖

當我們設定斷點後,進行HTTP請求,資料包順序列會有中斷的標記,單擊該資料包可以看到在右側會增加一行操作欄。這個時候我們在前端是沒有正常載入網頁的,點選【Run to Completion】後可以返回響應資料。

 

接下來為了看我們的斷點設定是否生效,我們以登入為例子進行測試。登入無憂行網站,輸入正確的使用者名稱和密碼,點選登入。我們斷點規則設定為before request,然後將密碼清空,看看伺服器給我們返回了什麼響應資料。

 

 

繼續以登入為例子,這次我們將手機號改成非移動賬號進行登入。

 

 

 由此可見,我們的斷點已經設定成功,並且成功修改了HTTP的請求資料。

 2)透過選單選項或快捷鍵進行設定時,會將所有的HTTP請求都設定斷點,但有時我們只想針對某個伺服器發出的請求設定斷點,應該怎麼操作呢?Fiddler是支援命令操作的,我們可以透過“bpu 伺服器地址”命令來對特定的請求設定斷點。

在下圖所示的位置輸入命令,然後回車執行。

這個時候從該伺服器發出的所有請求都會被中斷,而從其他伺服器發出的請求可以正常響應。

如果要清除原來的斷點,可以在命令列輸入“bpu”,就會清除所有的斷點。

對response設定斷點

1)同樣的也可以透過選單選項或快捷鍵alt+F11進行設定

2)透過命令“bpafter 伺服器地址”

我們也用一個例項來驗證透過設定斷點修改響應資料。以百度主頁為例,我們攔截到響應資料中的title值為”百度一下,你就知道“,我們將響應資料中的title改成”test百度一下,你就知道“,然後在前端看看最終展示的是什麼資料。

透過幾個例項,更好的幫助我們理解斷點的含義,也鞏固了Fiddler作為代理伺服器的概念。接下來我們再來說說,Fiddler另一個很實用的功能:Fiddler的編碼和解碼。

 Fiddler的編碼和解碼

1)響應body解碼

有時候我們在Fiddler上看到響應資料是幾個亂碼字元,首先我們可以點選,上方黃色提示區域直接進行解碼。如下面的兩個圖所示。

 

 

2)請求和響應資料解碼

有的時候,基於安全性考慮,開發人員會將請求和響應的body根據一定規則進行解碼。如果是普通的編碼規則,我們可以直接透過Fiddler操作進行解碼。例如在登入百度網站的時候,有個引數的值是一個url地址,這個url經過urlEncode進行轉碼了。我們就可以將該引數透過urlDecode進行解碼。

首先,找到這個引數,選中後右鍵選擇【send to TextWizard】

然後,在【transform】中找到【URLDecode】,欄位值就被成功解碼,我們就可以很清楚的看到裡面有哪些引數以及引數的值是什麼了。

上面都是解碼的例子,編碼在實際運用中很少,就不介紹了。另外裡面還有很多其他的編碼/解碼方法,就不一一舉例啦~~




Fiddler 抓包工具總結

序章

Fiddler是一個蠻好用的抓包工具,可以將網路傳輸傳送與接受的資料包進行截獲、重發、編輯、轉存等操作。也可以用來檢測網路安全。反正好處多多,舉之不盡呀!當年學習的時候也蠻費勁,一些蠻實用隱藏的小功能用了之後就忘記了,每次去網站上找也很麻煩,所以蒐集各大網路的資料,總結了一些常用的功能。

 

Fiddler 下載地址 :

Fiddler 離線下載地址:  密碼:5skw

下載Fiddler要FQ,我費了好大得勁才翻出去下載到…

win8之後用“Fiddler for .NET4”而win8之前用“Fiidler for .NET2”比較好

image

1. Fiddler 抓包簡介

Fiddler是透過改寫HTTP代理,讓資料從它那透過,來監控並且擷取到資料。當然Fiddler很屌,在開啟它的那一瞬間,它就已經設定好了瀏覽器的代理了。當你關閉的時候,它又幫你把代理還原了,是不是很貼心。。。

image

 

1) 欄位說明

Fiddler想要抓到資料包,要確保Capture Traffic是開啟,在File –> Capture Traffic。開啟後再左下角會有顯示,當然也可以直接點選左下角的圖示來關閉/開啟抓包功能。

image

Fiddler開始工作了,抓到的資料包就會顯示在列表裡面,下面總結了這些都是什麼意思:

image

名稱

含義

#

抓取HTTP Request的順序,從1開始,以此遞增

Result

HTTP狀態碼

Protocol

請求使用的協議,如HTTP/HTTPS/FTP等

Host

請求地址的主機名

URL

請求資源的位置

Body

該請求的大小

Caching

請求的快取過期時間或者快取控制值

Content-Type

請求響應的型別

Process

傳送此請求的程式:程式ID

Comments

允許使用者為此回話新增備註

Custom

允許使用者設定自定義值

圖示

含義

clip_image001[13]

請求已經發往伺服器

clip_image002[4]

已從伺服器下載響應結果

clip_image003[4]

請求從斷點處暫停

clip_image004[4]

響應從斷點處暫停

clip_image005[4]

請求使用 HTTP 的 HEAD 方法,即響應沒有內容(Body)

clip_image006[4]

請求使用 HTTP 的 POST 方法

clip_image007[4]

請求使用 HTTP 的 CONNECT 方法,使用 HTTPS 協議建立連線隧道

clip_image008[4]

響應是 HTML 格式

clip_image009[4]

響應是一張圖片

clip_image010[4]

響應是指令碼格式

clip_image011[4]

響應是 CSS 格式

clip_image012[4]

響應是 XML 格式

clip_image013[4]

響應是 JSON 格式

clip_image014[4]

響應是一個音訊檔案

clip_image015[4]

響應是一個影片檔案

clip_image016[4]

響應是一個 SilverLight

clip_image017[4]

響應是一個 FLASH

clip_image018[4]

響應是一個字型

clip_image019[4]

普通響應成功

clip_image020[4]

響應是 HTTP/300、301、302、303 或 307 重定向

clip_image021[4]

響應是 HTTP/304(無變更):使用快取檔案

clip_image022[4]

響應需要客戶端證照驗證

clip_image023[4]

服務端錯誤

clip_image0244

會話被客戶端、Fiddler 或者服務端終止

 

 

2). Statistics 請求的效能資料分析

好了。左邊看完了,現在可以看右邊了

隨意點選一個請求,就可以看到Statistics關於HTTP請求的效能以及資料分析了(不可能安裝好了Fiddler一條請求都沒有…):

image

 

3). Inspectors 檢視資料內容

Inspectors是用於檢視會話的內容,上半部分是請求的內容,下半部分是響應的內容:

image

 

4). AutoResponder 允許攔截指定規則的請求

AutoResponder允許你攔截指定規則的求情,並返回本地資源或Fiddler資源,從而代替伺服器響應。

看下圖5步,我將“baidu”這個關鍵字與我電腦“f:\Users\YukiO\Pictures\boy.jpeg”這張圖片繫結了,點選Save儲存後勾選Enable rules,再訪問baidu,就會被劫持。

這個玩意有很多匹配規則,如:

1. 字串匹配(預設):只要包含指定字串(不區分大小寫),全部認為是匹配

字串匹配(baidu) 是否匹配
匹配
匹配
匹配

 

2. 正規表示式匹配:以“regex:”開頭,使用正規表示式來匹配,這個是區分大小寫的

字串匹配(regex:.+.( jpg  |  gif  |  bmp  ) $) 是否匹配
bmp &bar 不匹配
gif 匹配
bmp 匹配
Gif 不匹配

image

image

 

4). Composer 自定義請求傳送伺服器

Composer允許自定義請求傳送到伺服器,可以手動建立一個新的請求,也可以在會話表中,拖拽一個現有的請求

Parsed模式下你只需要提供簡單的URLS地址即可(如下圖,也可以在RequestBody定製一些屬性,如模擬瀏覽器User-Agent)

image

 

 

5). Filters 請求過濾規則

Fiters 是過濾請求用的,左邊的視窗不斷的更新,當你想看你係統的請求的時候,你重新整理一下瀏覽器,一大片不知道哪來請求,看著礙眼,它還一直重新整理你的螢幕。這個時候透過過濾規則來過濾掉那些不想看到的請求。

image

勾選左上角的Use Filters開啟過濾器,這裡有兩個最常用的過濾條件:Zone和Host

1、Zone 指定只顯示內網(Intranet)或網際網路(Internet)的內容:

image

 

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

image

如果框框為黃色(如圖),表示修改未生效,點選紅圈裡的文字即可

 

 

6). Timeline 請求響應時間

在左側會話視窗點選一個或多個(同時按下 Ctrl 鍵),Timeline 便會顯示指定內容從服務端傳輸到客戶端的時間:

image

 

 

2. Fiddler 設定解密HTTPS的網路資料

Fiddler可以透過偽造CA證照來欺騙瀏覽器和伺服器。Fiddler是個很會裝逼的好東西,大概原理就是在瀏覽器面前Fiddler偽裝成一個HTTPS伺服器,而在真正的HTTPS伺服器面前Fiddler又裝成瀏覽器,從而實現解密HTTPS資料包的目的。

解密HTTPS需要手動開啟,依次點選:

1. Tools –> Fiddler Options –>  HTTPS

image

2. 勾選Decrypt HTTPS Traffic

image

3. 點選OK

image

 

3. Fiddler 抓取Iphone / Android資料包

想要Fiddler抓取移動端裝置的資料包,其實很簡單,先來說說移動裝置怎麼去訪問網路,看了下面這張圖,就明白了。

image

可以看得出,移動端的資料包,都是要走wifi出去,所以我們可以把自己的電腦開啟熱點,將手機連上電腦,Fiddler開啟代理後,讓這些資料透過Fiddler,Fiddler就可以抓到這些包,然後發給路由器(如圖):

image

1. 開啟Wifi熱點,讓手機連上(我這裡用的360wifi,其實隨意一個都行)

image

2. 開啟Fidder,點選選單欄中的 [Tools] –> [Fiddler Options]

image

3. 點選 [Connections] ,設定代理埠是8888, 勾選 Allow remote computers to connect, 點選OK

image

4. 這時在 Fiddler 可以看到自己本機無線網路卡的IP了(要是沒有的話,重啟Fiddler,或者可以在cmd中ipconfig找到自己的網路卡IP)

image

image  

5. 在手機端連線PC的wifi,並且設定代理IP與埠(代理IP就是上圖的IP,埠是Fiddler的代理埠8888)

image

 

6. 訪問網頁輸入代理IP和埠,下載Fiddler的證照,點選下圖FiddlerRoot certificate

image

【注意】:如果開啟瀏覽器碰到類似下面的報錯,請開啟Fiddler的證照解密模式(Fiddler 設定解密HTTPS的網路資料)

No root certificate was found. Have you enabled HTTPS traffic decryption in Fiddler yet?

208B4A022896FE5008CFDBD54105185D            13D99A1D77D5528F3EFBA0C3DEA3BD28

FDE79CDC9CB62CC6CF68F98C33CB281A            8F268C0A1192E2DF41BD0F5DEFD525D9

 

7. 安裝完了證照,可以用手機訪問應用,就可以看到擷取到的資料包了。(下圖選中是布卡漫畫的資料包,下面還有QQ郵箱的)

image

 

4. Fiddler 內建命令與斷點

Fiddler還有一個藏的很深的命令框,就是眼前,我用了幾年的Fiddler都沒有發現它,偶爾在別人的文章發現還有這個小功能,還蠻好用的,整理下記錄在這裡。

FIddler斷點功能就是將請求截獲下來,但是不傳送,這個時候你可以幹很多事情,比如說,把包改了,再傳送給伺服器君。還有balabala一大堆的事情可以做,就不舉例子了。

image

命令

對應請求項

介紹

示例

?

All

問號後邊跟一個字串,可以匹配出包含這個字串的請求

?google

>

Body

大於號後面跟一個數字,可以匹配出請求大小,大於這個數字請求

>1000

<

Body

小於號跟大於號相反,匹配出請求大小,小於這個數字的請求

<100

=

Result

等於號後面跟數字,可以匹配HTTP返回碼

=200

@

Host

@後面跟Host,可以匹配域名

@

select

Content-Type

select後面跟響應型別,可以匹配到相關的型別

select image

cls

All

清空當前所有請求

cls

dump

All

將所有請求打包成saz壓縮包,儲存到“我的文件\Fiddler2\Captures”目錄下

dump

start

All

開始監聽請求

start

stop

All

停止監聽請求

stop

斷點命令  

bpafter

All

bpafter後邊跟一個字串,表示中斷所有包含該字串的請求

bpafter baidu(輸入bpafter解除斷點)

bpu

All

跟bpafter差不多,只不過這個是收到請求了,中斷響應

bpu baidu(輸入bpu解除斷點)

bps

Result

後面跟狀態嗎,表示中斷所有是這個狀態碼的請求

bps 200(輸入bps解除斷點)

bpv / bpm

HTTP方法

只中斷HTTP方法的命令,HTTP方法如POST、GET

bpv get(輸入bpv解除斷點)

g / go

All

放行所有中斷下來的請求

g

 

示例演示:

?

image

>

image

<

image

=

image

@

image

select

image

cls

image

dump

image

 

斷點命令:

斷點可以直接點選Fiddler下圖的圖示位置,就可以設定全部請求的斷點,斷點的命令可以精確設定需要截獲那些請求。如下示例:

image

命令:

bpafter

image     image

bps

image

image

 

bpv

image

image

 

g / go

image

image



fiddler配置及使用教程

本文基於 Fiddler4 講解基本使用

fiddler抓包原理

注意:Fiddler 是以代理web伺服器的形式工作的,它使用代理地址:127.0.0.1,埠:8888。當Fiddler退出的時候它會自動登出,這樣就不會影響別的 程式。不過如果Fiddler非正常退出,這時候因為Fiddler沒有自動登出,會造成網頁無法訪問。解決的辦法是重新啟動下Fiddler。

配置

開啟Fiddler  Tool->Fiddler Options->HTTPS 。  (配置完後記得要重啟Fiddler).

選中"Decrpt HTTPS traffic",    Fiddler就可以截獲HTTPS請求,第一次會彈出證照安裝提示,若沒有彈出提示,勾選Actions-> Trust Root Certificate

另外,如果你要監聽的程式訪問的 HTTPS 站點使用的是不可信的證照,則請接著把下面的 “Ignore servercertificate errors” 勾選上。

證照安裝提示:

點選Yes,留意一下紅框裡面的內容,DO_NOT_TRUST_FiddlerRoot ,這個就是證照的名稱。 

點選是。 

點選確定,這樣Fiddler證照就已經新增成功了。

檢視一下證照,Actions—>open windows certificate Manager 

可以證照已經新增進去了,證照名稱就是之前提醒大家留意的,【DO_NOT_TRUST_FiddlerRoot】

 

 手機端抓包配置

 

fiddler監聽埠預設是 8888,你可以把它設定成任何你想要的埠。勾選上 “Allow remote computersto connect” ,允許遠端裝置連線。

為了減少干擾,可以去掉 “Act assystem proxy on startup” 。

手機端(客戶端)設定

首先檢視電腦的 IP 地址,確保手機和電腦在同一個區域網內

Android 手機上的配置

將 Fiddler 代理伺服器的證照導到手機上才能抓這些 APP 的包。匯入的過程:開啟瀏覽器,在位址列中輸入代理伺服器的 IP 和埠(即電腦的IP加fiddler的埠),會看到一個Fiddler 提供的頁面,然後確定安裝就好了

瀏覽器輸入下載證照.png

開啟 WiFi 設定頁面,選擇要連線的 wifi ,並且長按,在彈出的對話方塊中,選擇“修改網路”。在接下來彈出的對話方塊中,勾選“顯示高階選項”。在接下來顯示的頁面中,點選“代理”,選擇“手動”。代理伺服器主機名設為 PC 的 IP ,代理伺服器埠設為 Fiddler 上配置的埠 8888,點”儲存”。

手機配置代理.png

蘋果手機上的配置

蘋果手機上的配置其實跟 Android 手機基本是一樣的。如圖

至此已配置完成。

Fiddler的使用

檢視功能區域

會話的概念:一次請求和一次響應就是一個會話。

fiddler主介面

 

下面挑幾個快捷功能區中常用幾項解釋,其他功能自己嘗試:

快捷功能區

1:給會話新增備註資訊
2:重新載入當前會話
3:刪除會話選項
4:放行,和斷點對應,後面詳細講解
5:響應模式。也即是,當Fiddler拿到遠端的response後是快取起來一次響應給客戶端還是以stream的方式直接響應。
6:解碼。有些請求是被編碼的,點選這個按鈕後可以根據響應的編碼格式自動解碼。
7:查詢會話。
8:儲存會話。
9:截圖。截圖後,會以會話的方式返回一個截圖。

接著來看看會話列表

 

#欄圖示說明

快捷鍵

刪除一條會話,可以在選中會話後,按del刪除,如若要清空列表,可以用Ctrl+X

左鍵點選單條HTTP請求,可以在右側的tab皮膚中看到如下資訊:

1. Statistic。

關於HTTP請求的效能和其他資料分析:

 

我們可以從中看出一些基本效能資料:如DNS解析的時間消耗是8ms,建立TCP/IP連線的時間消耗是8ms等等資訊。

2. Inspectors

提供headers、textview、hexview,Raw等多種方式檢視單條http請求的請求報文的資訊,分為上下兩個部分,上半部分是請求頭部分,下半部分是響應頭部分。對於每一部分,提供了多種不同格式檢視每個請求和響應的內容。

a、ImageView標籤 

JPG 格式使用 ImageView 就可以看到圖片,選擇一條Content-Type是image/jpeg的回話,點選TextView

 

b、TextView 標籤

HTML/JS/CSS 使用 TextView 可以看到響應的內容。選擇一條Content-Type是text/html的回話,點選TextView

 

c、Raw標籤

Raw標籤可以檢視響應報文和響應正文,但是不包含請求報文

d、Auth標籤

Auth則可以檢視授權Proxy-Authorization 和 Authorization的相關資訊

e、Cookies標籤

Cookies標籤可以看到請求的cookie和響應的set-cookie頭資訊。

3.AutoResponder標籤

Fiddler 的AutoResponder tab允許你從本地返回檔案,而不用將http request 傳送到伺服器上。

下邊直接說他的使用方式把:

使用的是手機上邊的百度手機助手的棋牌遊戲介面。

1、首先看圖 (我們來重定向第一個歡樂鬥地主這個圖片)

2、開啟Fiddler,然後點選棋牌遊戲進入上邊這個介面,就能發現會請求當前顯示的這五張圖片

 這個時候我們切換到AutoResponder這個介面,點選滑鼠左鍵,把要重定向的這個session會話拖動到AutoResponder介面中

選擇了我們要返回的圖片以後,然後點選save。

然後關掉應該,清楚應用快取,然後在開啟,點選棋牌遊戲,可以看到

這是實現了替換其中一個,也許你會說,是不是本來就是那樣啊,那麼在介紹一個根據別的規則來進行重定向。

 

我們透過重定向向,把所有的百度手機助手中的圖片都替換成剛才的小頭像。

 

前便的操作時一樣的,拖過來以後我們可以點選Save前邊的倒的小三角,然後就可以看到,裡邊有很多規則,現在我們選擇

第一個:這是一個正規表示式。

然後在選擇剛才的那個頭像圖片,然後save。

清除快取,重新開啟,可以看下圖:

可以看到,所有的jpg格式的都變成了我們的頭像了。

關於重定向還有很多,剩下的就需要自己慢慢研究了。

小結:AutoResponder功能是Fiddler最實用的功能之一,Rule可以自由地設定,可以使用搜尋(預設)、精確匹配(EXACT)、正規表示式匹配(REGEX)。處理方式可以選擇使用檔案,也可以選擇合適的時間暫停資料流(*bpu、*bpafter),人工干預。透過以上幾個步驟,我們演示了怎樣將HTTP請求重定向到本地的檔案,進行除錯, 這在我們診斷跟蹤一些js檔案但卻不能修改js檔案時非常有用。 比 如:在用瀏覽器測試P頁面時,P頁面引入了一個js資原始檔R.js,由於R.js檔案在伺服器S上,而我此時又不能登入S伺服器(沒有S伺服器的帳 號),此時我們就可以透過瀏覽器將R.js檔案下載到本地,然後對本地的R.js檔案進行調整,最後透過設定Fiddler,將R.js檔案的請求使用本 地的R.js檔案。

4.Composer 自定義請求傳送伺服器

Composer允許自定義請求傳送到伺服器,可以手動建立一個新的請求,也可以在會話表中,拖拽一個現有的請求

Parsed模式下你只需要提供簡單的URLS地址即可(如下圖,也可以在RequestBody定製一些屬性,如模擬瀏覽器User-Agent)

 

5.斷點請求/響應

 

如圖,箭頭所指的位置時可以點選的。共三種狀態:
空白:不設定斷點。
箭頭向上:表示斷點請求。此時客戶端的請求是無法直接到達目標伺服器的,需要手動控制。
箭頭向下:表示斷點響應。此時目標伺服器的響應是無法直接到達客戶端的,需要手動控制。

還有一種打斷點的方式

在命令列中輸入命令: 

bpu   (斷點請求)

bpuafter (斷點響應)

這種方法只會中斷

斷點請求並修改

如圖,操作步驟:

  1. 設定斷點請求,訪問網頁

  2. 點選對應的會話

  3. 檢視請求報文資訊

  4. 修改請求內容

  5. 完成斷點,放行,把該請求傳送給目標伺服器。

圖中Break On Response表示把請求發給伺服器,但是伺服器的響應被fiddler攔截,此時可以修改響應內容(和斷點響應類似)。

斷點響應並修改

和斷點請求操作類似,只是在響應區域修改報文資訊即可。
在斷點響應時,請注意超時時間。

6.過濾域名

Fiddler抓包可以完成我們移動開發者的除錯測試需求。但是多餘的網頁請求和手機的其他連結影響我們手機開發的需求。所以我們需要排除其他無用的包,只關注我們指定的域名的請求包。

開啟fiddler,找到Filters選項並點選開啟。如圖所示

預設情況下,這個頁面是灰色的,代表預設不過濾任何請求。現在我們勾選  Use Filters  。

一般常用的有三種過濾條件:

1.域名過濾,只顯示特定域名的記錄:

*.baidu.com表示所有的百度二級域名會話;*baidu.com表示一級域名+二級域名的會話。設定好了後一定要點選Actions生效;

2.型別過濾,一般對各種圖片、CSS、JS這類的靜態素材也不需要看的情況下,直接全部過濾掉

 .*\.(bmp|css|js|gif|ico|jp?g|png|swf|woff) 

需要過濾多少自己直接加入就好了

3.根據返回狀態碼,比如只想顯示200的狀態,其他的不顯示

Fiddler 的內建命令

?

問號(?)後邊跟一個字串,Fiddler 將所有會話中存在該字串匹配的全部高亮顯示(下圖輸入的是 ?google.com)

溫馨提示:匹配的字串是 Protocol、Host 和 URL 中的任何子字串。

> 和 <

大於號(>)和小於號(<)後邊跟一個數值,表示高亮所有尺寸大於或小於該數值的會話。

比如我輸入 >5000,按下回車後結果如下:

溫馨提示:你可以直接輸入 >5k 表示你想高亮所有尺寸大於 5KB 的會話。

=

等於號(=)後邊可以接 HTTP 狀態碼或 HTTP 方法,比如 =200 表示高亮所有正常響應的會話。

下圖輸入了 =POST,表示希望高亮所有 POST 方法的會話:

@

@ 後邊跟的是 Host,比如我想高亮所有魚C論壇的連線,我可以 @bbs.fishc.com

溫馨提示:下邊 bpafter、bps、bpv、bpm 和 bpu 用於設定斷點。

會話被中斷下來之後,點選頁面上方的 Go 按鈕放行當前中斷下來的會話,但新的匹配內容還是會被斷下來,輸入命令但不帶參數列示取消之前設定的斷點。

bpafter

bpafter 後邊跟一個字串,表示中斷所有包含該字串的會話。

比如我想中斷所有包含 fishc 的響應,那麼我輸入 bpafter fishc,然後在瀏覽器輸入 bbs.fishc.com,發現並沒有收到伺服器響應,因此都給 Fiddler 斷下來了:

bps

bps 後邊跟的是 HTTP 狀態碼,表示中斷所有為該狀態碼的會話。

bpv 或 bpm

bpv 或 bpm 後邊跟的是 HTTP 方法,表示中斷所有為該方法的會話。

bpu

跟 bpafter 類似,區別:bpu 是在發起請求時中斷,而 bpafter 是在收到響應後中斷。

cls 或 clear

清除當前的所有會話。

dump

將所有的會話打包成 .zip 壓縮包的形式儲存到 C 盤根目錄下。

g 或 go

放行所有中斷下來的會話。

hide

將 Fiddler 隱藏。

show

將 Fiddler 恢復。

urlreplace

urlreplace 後邊跟兩個字串,表示替換 URL 中的字串。比如 urlreplace baidu fishc 表示將所有 URL 的 baidu 替換成 fishc。

溫馨提示:直接輸入 urlreplace 不帶任何參數列示恢復原來的樣子。

start

Fiddler 開始工作。

stop

Fiddler 停止工作。

quit

關閉 Fiddler。

select

select 後邊跟響應的型別(Content-Type),表示選中所有匹配的會話。

比如希望 Fiddler 選中所有的圖片,可以使用 select image;

而 select css 則選中所有的 css 檔案;

當然,select htm 就是選中所有的 html 檔案啦~

allbut 或 keeponly

跟 select 類似,不過 allbut 和 keeponly 會將所有無關的會話刪除。

比如我只想看圖片,那麼我可以 keeponly image,表示將所有與圖片無關的會話刪除:

!dns

後邊跟一個域名,執行 DNS 查詢並在右邊的 LOG 欄列印結果:

!listen

設定其他監聽的埠,預設是 8888。。



【Fiddler學習】Fiddler教程,比較經典全面(轉)

簡介

Fiddler(中文名稱:小提琴)是一個HTTP的除錯代理,以代理伺服器的方式,監聽系統的Http網路資料流動,Fiddler可以也可以讓你檢查所有的HTTP通訊,設定斷點,以及Fiddle所有的“進出”的資料(我一般用來抓包),Fiddler還包含一個簡單卻功能強大的基於JScript .NET事件指令碼子系統,它可以支援眾多的HTTP除錯任務。

Fiddler官方網站提供了大量的幫助文件和影片教程,這是學習Fiddler的最好資料

工作原理

 

工作原理

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

主介面

 

主介面


Fiddler的主介面分為 工具皮膚、會話皮膚、監控皮膚、狀態皮膚

工具皮膚

 

工具皮膚

說明註釋、重新請求、刪除會話、繼續執行、流模式/緩衝模式、解碼、保留會話、監控指定程式、尋找、儲存會話、切圖、計時、開啟瀏覽器、清除IE快取、編碼/解碼工具、彈出控制監控皮膚、MSDN、幫助

兩種模式

  • 緩衝模式(Buffering Mode)Fiddler直到HTTP響應完成時才將資料返回給應用程式。可以控制響應,修改響應資料。但是時序圖有時候會出現異常

  • 流模式(Streaming Mode)Fiddler會即時將HTTP響應的資料返回給應用程式。更接近真實瀏覽器的效能。時序圖更準確,但是不能控制響應。

會話皮膚

 

會話皮膚

 

會話皮膚圖示

監控皮膚

 

監控皮膚

  • 統計報表

  1. 請求總數、請求包大小、響應包大小。

  2. 請求起始時間、響應結束時間、握手時間、等待時間、路由時間、TCP/IP、傳輸時間。

  3. HTTP狀態碼統計。

  4. 返回的各種型別資料的大小統計以及餅圖展現。

 

統計報表

  • 時間軸

每個網路請求都會經歷域名解析、建立連線、傳送請求、接受資料等階段。把多個請求以時間作為 X 軸,用圖表的形式展現出來,就形成了瀑布圖。在Fiddler中,只要在左側選中一些請求,右側選擇Timeline標籤,就可以看到這些請求的瀑布圖

 

時間軸

  • 綠色的請求表示這是一個“有條件的請求”。HTTP 協議定義了 5 個條件請求頭部,最常見的兩個是“If-Modified-Since”和“If-None-Match”。伺服器根據這兩個頭部來驗證本地快取是否過期,如果過期則正常返回資源的最新版本;否則僅返回 304 Not Modified,瀏覽器繼續使用本地快取。包含條件請求頭部的請求用綠色顯示,否則用黑色。

  • 有陰影線的請求是緩衝模式下的請求,實心的是流模式下的請求。Fiddler 提供了緩衝(Buffering)和流(Streaming)兩種抓包模式:緩衝模式下,Fiddler 會在響應完成時才將資料返回給應用程式(通常是瀏覽器),這種模式下可以控制響應,方便地修改響應內容;流模式下,Fiddler 會實時返回響應資料給瀏覽器,但沒辦法控制響應。一般使用流模式,瀑布圖會更真實一些。這兩種模式可以透過 Fiddler 的工具欄選擇。特別的,透過 Fiddler 的“AutoResponder”功能返回的響應,只能是緩衝模式。

  • 請求條的不同顏色對應著不同型別的響應,根據響應頭的 MIME Type 來歸類。如淺綠色表示圖片型別的響應;深綠色是 JavaScript;紫色是 CSS;其它都是藍色。

  • 請求中的黑色豎線,表示的是瀏覽器收到服務端響應的第一個位元組這一時刻。這個時間受 DNS 解析、建立連線、傳送請求、等待服務端響應等步驟的影響。

  • 請求條後面的圖示表示響應的某些特徵。如軟盤圖示表示這個響應正文從本地獲得,也就是說服務端返回了 304;閃電錶示這是 Fiddler 的“AutoResponder”的響應;向下的箭頭表示響應是 302,需要重定向;紅色感嘆號說明這個請求有錯誤發生(狀態碼是 4XX 或 5XX)。特別的,如果請求條後面有一個紅色的X,說明服務端響應完這個請求之後,斷開了連線。出現這種情況一般有兩種可能:HTTP/1.0 的響應中沒有 Connection: Keep-Alive;或者是 HTTP/1.1 的響應中包含了 Connection: close。使用持久連線可以省去建立連線的開銷,也可以減小 TCP 慢啟動和其它擁塞控制機制帶來的影響,總之是好處多多。

  • 請求前面的紅色圓圈表示這個連線是新建的,綠色表示是複用的。上面的圓圈表示的是瀏覽器到 Fiddler 的連線,下面的圓圈是 Fiddler 到服務端的連線。

狀態皮膚

 

狀態皮膚


控制檯Fiddler的左下角有一個命令列工具叫做QuickExec,允許你直接輸入命令。
常見得命令有:

命令 解釋
help 開啟官方的使用頁面介紹,所有的命令都會列出來
cls 清屏 (Ctrl+x 也可以清屏)
select 選擇會話的命令
?.png 用來選擇png字尾的圖片
bpu 截獲request
bpafter 截獲response

Request訊息的結構

 

Request訊息的結構

Response訊息的結構

 

Response訊息的結構

常用功能

  • 監聽HTTPS

Fiddler不僅能監聽HTTP請求而且預設情況下也能捕獲到HTTPS請求,Tool -> Fiddler Option -> HTTPS下面進行設定,勾選上“Decrypt HTTPS traffic”,如果不必監聽伺服器端得證照錯誤可以勾上“Ignore server certification errors”,也可以跳過幾個指定的HOST來縮小或者擴大監聽範圍。

 

監聽HTTPS

  • HOST切換

 

HOST

  • 模擬各類場景

  • 透過GZIP壓縮,測試效能

  • 模擬Agent測試,檢視服務端是否對不同客戶端定製響應

  • 模擬慢速網路,測試頁面的容錯性

  • 禁用快取,方便除錯一些靜態檔案或測試服務端響應情況

  • 根據一些場景自定義規則


     

    自定義規則

  • 低網速模擬有時出於相容性考慮或者對某處進行效能最佳化,在低網速下往往能較快發現問題所在也容易發現效能瓶頸,可惜其他除錯工具沒能提供低網速環境,而強大的Fiddler考慮到了這一點,能夠進行低網速模擬設定Rules > Performance > Stimulate Modem Speeds。

  • Compare(對比文字)


     

    對比文字

  • Composer(構造器)

請求構造顧名思義就是我們可以模擬請求,也就是說我們可以藉助Fiddler的Composer 在不改動開發環境實際程式碼的情況下修改請求中的引數值並且方便的重新呼叫一次該請求,然後相比較2次請求響應有何具體不同。任何一個請求引數只要是合法的取值再次呼叫後都會有相應的響應,那麼你想要的任意一個合法請求組合自然也能夠按照你的意願構造出來,然後再次呼叫以及檢視返回資料。

 

Paste_Image.png


將該請求滑鼠左鍵單擊拖入Fiddler右側Request Builder標籤內並修改原請求引數OutPutType=JSON為OutPu tType=XML,然後點選Execute按鈕再次觸發呼叫請求

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/947566-5aaac0b84a397c58.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

雙擊這次請求包在Inspectors標籤下檢視返回資料為XML格式,而JSON格式一欄為空:

 

Paste_Image.png

  • Filters(過濾監控)

對一個重新載入的頁面進行抓包,如果包的條目過多而你需要關注的就那麼幾項的話,可以使用Fiddler的過濾器Filters進行抓包,那麼抓包時只會抓取你希望抓到的那些包。切換到Filters標籤勾選Use filter,以便啟用過濾器,這樣下面的各種過濾方式就可以進行選擇了。


 

Filter_1

![Filter_2](http://upload-images.jianshu.io/upload_images/947566-b6ed61685e13315e.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • AutoResponder(請求重定向)

所謂請求無非就是需要呼叫到的一些資源(包括JS、CSS和圖片等),所謂重定向就是將頁面原本需要呼叫的資源指向其他資源(你能夠控制的資源或者可以引用到的資源)。

  1. 你可以將前臺伺服器的諸多或者某個資源在本地做個副本,如果正常網路訪問環境下該資源出現了BUG而導致開發環境崩潰時,可以先將這個資源的請求重定向到本地副本,這樣就可以繼續進行開發除錯你的頁面,從而大量節省資源維護的等待時間。

  2. 你也可以將多人同時維護的某個JS檔案複製一份出來在本地,當你的開發除錯收到他人除錯程式碼干擾時,可以將這個JS的呼叫重定向到本地無干擾的JS檔案,進行無干擾開發,功能開發完成並除錯OK之後再將你的程式碼小心合入到開發環境中,這樣就可以避免受到他人干擾專心搞你的模組開發,也就是說能夠將JS檔案脫離開發環境卻不影響線上除錯。

  3. 你還可以將樣式檔案或者圖片指向本地。

![重定向](http://upload-images.jianshu.io/upload_images/947566-18f9c105596ef543.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

移動端抓包

Fiddler不但能截獲各種瀏覽器發出的HTTP請求, 也可以截獲各種智慧手機發出的HTTP/HTTPS請求。
Fiddler能捕獲IOS,Andriod,WinPhone,裝置發出的請求,同理,也可以截獲IPad, MacBook的等裝置發出的HTTP/HTTPS。
前提條件是:安裝Fiddler的機器,跟Iphone 在同一個網路裡, 否則IPhone不能把HTTP傳送到Fiddler的機器上來。

具體操作步驟如下:

  • Fiddler設定開啟Fiddler, Tools-> Fiddler Options。(配置完後記得要重啟Fiddler).

  •  

     

    選中"Allow remote computers to connect". 是允許別的機器把HTTP/HTTPS請求傳送到Fiddler上來

     

    APP

  • 獲取Fiddler所在機器的IP

  • 安裝Fiddler證照這一步是為了讓Fiddler能捕獲HTTPS請求。 如果你只需要截獲HTTP請求, 可以忽略這一步

  • 首先要知道Fiddler所在的機器的IP地址: 假如我安裝了Fiddler的機器的IP地址是:192.168.1.104開啟IPhone 的Safari, 訪問  http://192.168.1.104:8888 , 點"FiddlerRoot certificate" 然後安裝證照

     

    APP_1


     

    APP_2

     

  •  

     

    開啟IPhone, 找到你的網路連線, 開啟HTTP代理, 輸入Fiddler所在機器的IP地址(比如:192.168.1.104) 以及Fiddler的埠號8888

     

    APP_3

參考資料

 

下面開始分析主介面的功能區:

1、Fiddler選單欄,上圖黑色部分,包括捕獲http請求,停止捕獲請求,儲存http請求,載入本地session、設定捕獲規則等功能。

2、Fiddler的工具欄,上圖黃色部分,包括Fiddler針對當前view的操作(暫停,清除session,decode模式、清除快取等)。

3、Web Session皮膚,上圖紅色部分,主要是Fiddler抓取到的每條http請求(每一條稱為一個session),主要包含了請求的url,協議,狀態碼,body等資訊,詳細的欄位含義如下圖所示:

#欄圖示說明

另外,注意請求的host欄位。可以看到有來自多個 的子域名的響應,說明在大型網站的 中,大多需要多個子域名,這些子域名可能是單獨用於快取靜態資源的,也可能是專門負責媒體資源的,或者是專門負責資料統計的(如pingback)

右鍵單擊其中的一條請求。可以選擇的操作有:save(儲存請求的報文資訊,可以是請求報文,可以是響應報文),將整條會話作為txt儲存到桌面,當然你可以儲存為zip,可以看到整個回話的內容如下:

 

4、詳情和資料統計板,針對每條http請求的具體統計(例如傳送/接受位元組數,傳送/接收時間,還有粗略統計世界各地訪問該伺服器所花費的時間)和資料包分析。如inspector皮膚下,提供headers、textview、hexview,Raw等多種方式檢視單條http請求的請求報文的資訊:

選擇單條回話,右鍵save->selected Sessions->as Txt,開啟相關的檔案

如果想要重新傳送某些請求,可以選中這些請求,然後點選工具欄中的 ,然後就可以重新傳送選中的這些請求。

5、詳情和資料統計板

(1)、inspector皮膚

提供headers、textview、hexview,Raw等多種方式檢視單條http請求的請求報文的資訊,分為上下兩個部分,上半部分是請求頭部分,下半部分是響應頭部分。對於每一部分,提供了多種不同格式檢視每個請求和響應的內容。

a、ImageView標籤 

JPG 格式使用 ImageView 就可以看到圖片,選擇一條Content-Type是image/jpeg的回話,點選TextView

 

b、TextView 標籤

HTML/JS/CSS 使用 TextView 可以看到響應的內容。選擇一條Content-Type是text/html的回話,點選TextView

 

c、Raw標籤

Raw標籤可以檢視響應報文和響應正文,但是不包含請求報文

d、Auth標籤

Auth則可以檢視授權Proxy-Authorization 和 Authorization的相關資訊

e、Cookies標籤

Cookies標籤可以看到請求的cookie和響應的set-cookie頭資訊。

 

(2)、AutoResponder標籤

Fiddler比較重要且比較強大的功能之一。可用於攔截某一請求,並重定向到本地的資源,或者使用Fiddler的內建響應。可用於除錯伺服器端程式碼而無需修改伺服器端的程式碼和配置,因為攔截和重定向後,實際上訪問的是本地的檔案或者得到的是Fiddler的內建響應。當勾選allow autoresponser 並設定相應的規則後(本例中的規則是將 http://blog.csdn.net/aaa 的請求攔截到本地的檔案),如下圖所示

 

(2)、Statistics皮膚

HTTP請求的效能和其他資料分析

我們可以從中看出一些基本效能資料:如DNS解析的時間消耗是8ms,建立TCP/IP連線的時間消耗是8ms等等資訊。

(3)、composer皮膚

可以模擬向相應的伺服器傳送資料的過程(不錯,這就是灌水 的基本原理,也可以是部分http flood的一種方式)。

(3)、Filters皮膚

Filter標籤則可以設定Fiddler的過濾規則,來達到過濾http請求的目的。最簡單如:過濾內網http請求而只抓取internet的http請求,或則過濾相應域名的http請求。Fiddler的過濾器非常強大,可以過濾特定http狀態碼的請求,可以過濾特定請求型別的http請求(如css請求,image請求,js請求等),可以過濾請求報文大於或則小於指定大小(byte)的請求

 

一、Fiddler是什麼?

    Fiddler是一個 除錯代理工具,它能夠記錄並檢查所有你的電腦和網際網路之間的http通訊,設定斷點,檢視所有的進出Fiddler的資料。 Fiddler 要比其他的網路偵錯程式要更加簡單,因為它不僅僅暴露http通訊還提供了一個使用者友好的格式。

二、Fiddler抓包原理

三、Fiddler軟體簡介(參考:http://blog.csdn.net/gld824125233/article/details/52621456)

   安裝完成之後,點選啟動Fiddler,Fiddler介面如下:

   

1.Fiddler開關

         介面左下角或點選F12控制Fiddler開關,開關是“Capturing”;

        

2.啟動之後Fiddler代理永遠是開著的;

3.瀏覽器代理設定

(1)IE或360瀏覽器代理都是自動開啟的;

         代理檢視方式:瀏覽器選單欄上:工具—>Internet選項—>連線—>區域網設定—>高階代理。

        

         Fiddler開啟之後,代理自動修改;

(2)火狐瀏覽器

         火狐瀏覽器啟動之後,Fiddler沒有反應,是因為火狐代理是自己獨立的,不會像IE、360那樣自動改變;

         代理設定: ——>選項——>高階——>網路——>連線——>設定——>手動配置代理——>Http代理和埠輸入(與Fiddler代理埠保持一致);

(3)谷歌瀏覽器代理設定

         工具——>設定——>拖動頁面到底部,點選:顯示高階設定按鈕——>網路——>更改代理伺服器設定——>點選:區域網設定——>高階——>進入代理伺服器設定;

         谷歌和IE都是用的系統代理。

4.Fiddler自己的埠:

         檢視方式:Tools——>TelerikFiddler Options——>Connections下的Fiddler listens on port:8888,8888就是我們Fiddler預設的埠號;

         Fiddler預設埠號是8888(文章中有圖說明埠號是哪一個),如果要修改, 修改之後要重啟Fiddler

5.Fiddler抓包格式

         Fiddler只能抓取Http和https格式的,但是預設只能抓取http,想要抓取https我們的設定一下,步驟見下:

          Tools——>Telerik Fiddler Options——>HTTPS下,勾選:CaptureHTTPS CONNECTs Decrypt HTTPS traffic 、ignore server certificate errors(unsafe)——>點選OK, 彈出證照之後直接確認就行。

6.Fiddler遠端機制

         Fiddler是代理機制,所以我們也可以實現遠端操作,Fiddler預設只開啟本地,若要抓取遠端需要開啟遠端設定。

         設定: Tools——>TelerikFiddler Options——>Connections——>勾選Allow remote computers connect,此時就可以遠端操作;

7.Fiddler遠端例項

         我直接用另一臺電腦,遠端捕獲我自己電腦。

(1)另一臺電腦相關設定

         另一臺電腦上安裝Fiddler並啟動,查詢另一臺電腦的IP,開始——>執行或(win+R)——>輸入cmd,然後輸入ipconfig,檢視IP和Fiddler埠號,並記錄:

         Ip為:192.168.103.171,Fiddler埠號為:8888;

(2)我的電腦相關設定

         點選瀏覽器,以搜狐瀏覽器來說,修改代理

         http代理為:另一個機子上的IP,埠值為Fiddler的埠

 

(3)結果

         在我本地瀏覽器點選,另一個機子中Fiddler上捕獲的資料介面見下:

(4)說明

         指定代理之後,無論Fiddler開關是關閉還是開啟,資料都會傳輸過來,見上圖。

         本地遠端其他機子,方法一致,就是講要遠端的機子代理改為本地電腦IP+Fiddler埠號即可。

 

轉自:http://blog.csdn.net/gld824125233/article/details/52621456











About Me

........................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub( http://blog.itpub.net/26736162 )、部落格園( http://www.cnblogs.com/lhrbest )和個人weixin公眾號( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文部落格園地址: http://www.cnblogs.com/lhrbest

● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址:

........................................................................................................................

● QQ群號: 230161599 (滿) 、618766405

● weixin群:可加我weixin,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友 646634621 ,註明新增緣由

● 於 2018-12-01 06:00 ~ 2018-12-31 24:00 在魔都完成

● 最新修改時間:2018-12-01 06:00 ~ 2018-12-31 24:00

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

........................................................................................................................

小麥苗的微店

小麥苗出版的資料庫類叢書 http://blog.itpub.net/26736162/viewspace-2142121/

小麥苗OCP、OCM、高可用網路班 http://blog.itpub.net/26736162/viewspace-2148098/

小麥苗騰訊課堂主頁 https://lhr.ke.qq.com/

........................................................................................................................

使用 weixin客戶端 掃描下面的二維碼來關注小麥苗的weixin公眾號( xiaomaimiaolhr )及QQ群(DBA寶典)、新增小麥苗weixin, 學習最實用的資料庫技術。

........................................................................................................................

歡迎與我聯絡

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2285735/,如需轉載,請註明出處,否則將追究法律責任。

相關文章