Fiddler抓包工具使用方法

Fiddler是最強大最好用的Web調試工具之一, 它能記錄全部客戶端和服務器的http和https請求。容許你監視、設置斷點、甚至修改輸入輸出數據。Fiddler包含了一個強大的基於事件腳本的子系統,而且能使用.net語言進行擴展。換言之,你對HTTP 協議越瞭解,你就能越掌握Fiddler的使用方法。你越使用Fiddler,就越能幫助你瞭解HTTP協議。Fiddler不管對開發人員或者測試人員來講,都是很是有用的工具。css

2、Fiddler的工做原理

Fiddler 是以代理web服務器的形式工做的,它使用代理地址:127.0.0.1,端口:8888。 當Fiddler退出的時候它會自動註銷, 這樣就不會影響別的程序。不過若是Fiddler非正常退出,這時候由於Fiddler沒有自動註銷,會形成網頁沒法訪問。 解決的辦法是從新啓動下Fiddler。html

我的理解:fiddler是一個抓包工具,當瀏覽器訪問服務器會造成一個請求,此時,fiddler就處於請求之間,當瀏覽器發送請求,會先通過fiddler,而後在到服務器;當服務器有返回數據給瀏覽器顯示時,也會先通過fiddler,而後數據纔到瀏覽器中顯示,這樣一個過程,fiddler就抓取到了請求和響應的整個過程。android

正常退出方式:web

Fiddler界面

3、http協議介紹

協議是指計算機通訊網絡中兩臺計算機之間進行通訊所必須共同遵照的規定或規則,超文本傳輸協議(HTTP)是一種通訊協議,它容許將超文本標記語言(HTML)文檔從Web服務器傳送到客戶端的瀏覽器。正則表達式

HTTP協議的主要特色

1.支持客戶/服務器模式
2.簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。 請求方法經常使用的有GET、HEAD、POST。 每種方法規定了客戶與服務器聯繫的類型不一樣。因爲HTTP協議簡單, 使得HTTP服務器的程序規模小,於是通訊速度很快。
3.靈活:HTTP容許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
4.無鏈接: 無鏈接的含義是限制每次鏈接只處理一個請求。 服務器處理完客戶的請求, 並收到客戶的應答後, 即斷開鏈接。 採用這種方式能夠節省傳輸時間。
5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺乏狀態意味着若是後續處理須要前面的信息,則它必須重傳,這樣可能致使每次鏈接傳送的數據量增大。另外一方面,在服務器不須要先前信息時它的應答就較快。瀏覽器

 

HTTP協議之請求

http請求由三部分組成,分別是:請求行、消息報頭、請求正文緩存

 

請求方法有多種, 各個方法的解釋以下:服務器

GET請求獲取Request-URI所標識的資源網絡

POST在Request-URI所標識的資源後附加新的數據session

HEAD請求獲取由Request-URI所標識的資源的響應消息報頭

PUT請求服務器存儲一個資源, 並用Request-URI做爲其標識

DELETE請求服務器刪除Request-URI所標識的資源

TRACE請求服務器回送收到的請求信息,主要用於測試或診斷

CONNECT保留未來使用

OPTIONS請求查詢服務器的性能,或者查詢與資源相關的選項和需求

應用舉例:

GET方法在瀏覽器的地址欄中輸入網址的方式訪問網頁時, 瀏覽器採用GET方法向服務器獲取資源,eg:GET /form.html HTTP/1.1 (CRLF)

POST方法要求被請求服務器接受附在請求後面的數據, 經常使用於提交表單。

 

HTTP協議之響應

在接收和解釋請求消息後,服務器返回一個HTTP響應消息。

HTTP響應也是由三個部分組成,分別是:狀態行、消息報頭、響應正文

 

狀態代碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值:

1xx:指示信息--表示請求已接收,繼續處理

2xx:成功--表示請求已被成功接收、理解、接受

3xx:重定向--要完成請求必須進行更進一步的操做

4xx:客戶端錯誤--請求有語法錯誤或請求沒法實現

5xx:服務器端錯誤--服務器未能實現合法的請求

 

常見狀態代碼、狀態描述、說明:

200 OK //客戶端請求成功

400 Bad Request //客戶端請求有語法錯誤, 不能被服務器所理解

401 Unauthorized //請求未經受權,這個狀態代碼必須和WWW-Authenticate報頭域一塊兒使用

403 Forbidden //服務器收到請求,可是拒絕提供服務

404 Not Found //請求資源不存在,eg: 輸入了錯誤的URL

500 Internal Server Error //服務器發生不可預期的錯誤

503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間後可能恢復正常

4、Fiddler抓包解析

1.使用Fiddler抓包後,會話列表面板以下圖所示:

 

抓包工具面板功能

# :HTTP Request的順序,從1開始,按照頁面加載請求的順序遞增。

Result : HTTP響應的狀態 Protocol:請求使用的協議(如HTTP/HTTPS)

HOST:請求地址的域名 URL:請求的服務器路徑和文件名,也包含GET參數

BODY:請求的大小,以byte爲單位

Content-Type:請求響應的類型

Caching:請求的緩存過時時間或緩存控制header的值

Process:發出此請求的Windows進程及進程ID

Comments :用戶經過腳本或者菜單給此session增長的備註

custom:用戶能夠經過腳本設置的自定義值

 

2.Fiddler右邊面板介紹

Statistics頁籤

經過該頁籤, 用戶能夠經過選擇多個會話來得來這幾個會話的總的信息統計,好比多個請求和傳輸的字節數。選擇第一個請求和最後一個請求, 可得到整個頁面加載所消耗的整體時間。從條形圖表中還能夠分別出哪些請求耗時最多, 從而對頁面的訪問進行訪問速度優化

inspectors頁籤

它提供headers、textview、hexview,Raw等多種方式查看單條http請求的請求報文的信息,它分爲上下兩部分:上部分爲HTTP Request(請求)展現,下部分爲HTTPResponse(響應)展現

AutoResponse頁籤

Fiddler最實用的功能, 它能夠抓取在線頁面保存到本地進行調試, 大大減小了在線調試的困難, 可讓咱們修改服務器端返回的數據, 例如讓返回都是HTTP404或者讀取本地文件做爲返回內容。

可設置打開某網頁顯示本身想要的內容,好比抓取百度連接,點擊add rule,設置以下所示:

到百度頁面刷新便可顯示該圖片

composer頁籤

支持手動構建和發送HTTP, HTTPS和FTP請求, 咱們還能夠從web session列表中拖曳session, 把它放到composer選項卡中, 當咱們點擊Execute按鈕, 把請求發送到服務器端。操做以下圖所示:

這樣設置發送的請求,就不是瀏覽器發出的了,而是fiddler發出的,查看inspectors裏面的信息即可看出

log頁籤: 打印日誌

Filters頁籤

過濾器能夠對左側的數據流列表進行過濾, 咱們能夠標記、 修改或隱藏某些特徵的數據流。

Timeline頁籤

時間軸,也稱爲Fiddler的瀑布圖,展現網絡請求時間的功能。 每一個網絡請求都會經歷域名解析、創建鏈接、發送請求、接受數據等階段。把多個請求以時間做爲 X 軸, 用圖表的形式展示出來, 就造成了瀑布圖。 在左側會話窗口點擊一個或多個(同時按下 Ctrl 鍵),Timeline 便會顯示指定內容從服務端傳輸到客戶端的時間

5、Fiddler命令行工具

Fiddler的左下角有一個命令行工具叫作QuickExec,容許你直接輸入命令。

常見得命令有:

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

cls : 清屏 (Ctrl+x 也能夠清屏)

select : 選擇會話的命令, 選擇全部相應類型select image、select css、select html

?sometext : 查找字符串並高亮顯示查找到的會話列表的條目,?qq.com

>size : 選擇請求響應大小小於size字節的會話

=status/=method/@host:查找狀態、方法、主機相對應的session會話,=504,=get,@www.qq.com

quit:退出fiddler

 

Bpafter,Bps, bpv, bpm, bpu這幾個命令主要用於批量設置斷點

Bpafter xxx: 中斷 URL 包含指定字符的所有 session 響應

Bps xxx:中斷 HTTP 響應狀態爲指定字符的所有 session 響應。

Bpv xxx:中斷指定請求方式的所有 session 響應

Bpm xxx:中斷指定請求方式的所有 session 響應,等同於bpv xxx

Bpu xxx:與bpafter相似。

6、Fiddler應用

1.手機抓包

①啓動Fiddler, 打開菜單欄中的 Tools > Fiddler Options, 打開「FiddlerOptions」 對話框

②在「Fiddler Options」對話框切換到「Connections」 選項卡, 而後勾選「Allowromote computers to connect」 後面的複選框, 而後點擊「OK」 按鈕

③在本機命令行輸入: ipconfig, 找到本機的ip地址。

④打開android設備的「設置」 ->「WLAN」,找到你要鏈接的網絡,在上面長按,而後選擇「修改網絡」,彈出網絡設置對話框,而後勾選「顯示高級選項」(不一樣的手機,設置方法有所不一樣)

⑤在「代理」 後面的輸入框選擇「手動」,在「代理服務器主機名」後面的輸入框輸入電腦的ip地址,在「代理服務器端口」後面的輸入框輸入8888, 而後點擊「保存」 按鈕

⑥而後啓動android設備中的瀏覽器,訪問百度的首頁,在fiddler中能夠看到完成的請求和響應數據

 

備註: 若是是Android模擬器中ip要填寫10.0.2.2,genymotion模擬器中ip要填寫:10.0.3.2,手機實機中ip填電腦的ip,端口就是burp或者fiddler監聽的端口 ,要處於同一網絡下

2.過濾功能

①選擇Filters頁籤,勾選use Filters勾選 Request Headers 中的 Hide if url contains 過濾項

②在裏面輸入:REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav)(\?.*)?$

REGEX: 表示啓用正則表達式(?insx) 設置正則解釋的規則,忽略大小寫等。

此表達式表示過濾掉 url 中包括 css、ico、jpg 等後綴的請求

③勾選 Request Headers中的show only if URL contains,在裏面輸入

REGEX:(?insx).*\.?baidu.com/home.* 只顯示: baidu.com/Home

 

Fiddler過濾指定域名

第二個選項是隻監控如下網址,如只監控百度,在下面的輸入框裏填上www.baidu.com

「No Host Filter」不設置hosts過濾

「Hide The Following Hosts」隱藏過濾到的域名

「Show Only The Following Hosts」只顯示過濾到的域名

「Flag The Following Hosts」標記過濾到的域名

相關文章
相關標籤/搜索