Fiddler使用指南


Fiddler使用指南

簡介

Fiddler是位於客戶端和服務器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能夠記錄客戶端和服務器之間的所有 HTTP請求,可以針對特定的HTTP請求,分析請求數據、設置斷點、修改請求的數據,甚至可以修改服務器返回的數據,功能非常強大,是web調試的利器。

既然是代理,也就是說:客戶端的所有請求都要先經過Fiddler,然后轉發到相應的服務器,反之,服務器端的所有響應,也都會先經過Fiddler然后發送到客戶端。使用了Fiddler之后,web客戶端和服務器的請求如下所示:

Fiddler界面簡介

主界面包括幾大塊:菜單欄、session欄、右上的request欄和右下的response欄。主要講一下session欄、request欄和response欄。

session欄

  • 有11列。每一列的意思都比較好懂。
    #:http request的順序,從1開始。
    result:http響應狀態碼
    protocol:請求使用的協議(如HTTP/HTTPS/FTP)
    host:請求地址的域名
    url:請求服務器的路徑和文件名,包括GET參數
    body:請求的大小,以byte為單位
    caching:請求的緩存過期時間或緩存控制header等值
    content-type:請求響應的類型
    process:發出此請求的windows進程及進程ID
    comments:用戶通過腳本或者右鍵菜單給此session增加的備注
    custom:用戶通過腳本設置的自定義值

  • 圖標的意義
    第一列的圖標其實代表了各種不同的意義。
    具體如下
    :response是HTML或者XML。有時候會發現返回值是json,但實際上也是這個圖標,原因是返回值的Content-Type: text/html
    :response是腳本文件
    :response是css

  • 保存抓包

request欄

這一欄包括statistics,inspector,autoresponder,composer,log,filters

  • statistics
    這一欄主要是耗時和流量大小統計
    統計選項卡的一些信息含義如下解釋:
    Request Count: 選中的session數;
    Unique Hosts: 流量流向的獨立目標主機數。如果所有選中的流量都發送到相同的服務器上,則不會顯示該字段。
    Bytes sent: HTTP請求頭和請求體中向外發送的字節總數。后面括號中分別給出了頭和body各自的字節數。
    Bytes received: HTTP請求頭和請求體中接收到的所有字節數。在全部計數后面的括號中給出了請求頭和請求體各自的字節數。
    Requests started at: Fiddler接收到的第一個請求的第一個字節的時間點。
    Responses completed at: Fiddler發送到客戶端的最后一個響應的最后一個字節的時間點。
    Sequence(clock) duration: 第一個請求開始到最后一個響應結束之間的 “時鍾時間”。
    Aggregate session duration: 所有選中的session從請求到響應之間的時間的和。
    DNS Lookup time: 所有選中的session解析DNS所花費的時間的總和。
    TCP/IP Connect duration: 所有選中session建立TCP/IP連接所花費的時間總和。
    HTTPS Handshake duration: 所有選中session在HTTPS握手上所花費的時間總和。
    Response Codes: 選中session中各個HTTP響應碼的計數。
    Response Bytes by content-type: 選中session中響應的各個Content-Type的字節數。
    Estimated Performance: 選中的流量在不同語種(local)地區和連接方式下所需時間的初步估計。

  • inspector
    可以詳細查看請求的 Headers、Cookies,並且可以對請求體格式化,以 WebForms、JSON、Raw 等方式查看。具體每種方式的區別可以自己感受一下。一般來說,想要查看請求的參數的話,WebForms 的方式就挺直觀的。點擊Raw就能看到原始的請求頭部信息。

  • autoresponder
    這個地方可以模擬服務端返回值。顧名思義,當瀏覽器發出的請求滿足你設置的匹配條件的話,Fiddler 就自動響應了,並不需要走網絡。

  • composer
    模擬向服務端發送請求,用於測試服務端接口是否正確。

response欄

Headers:響應頭。比如 Content-Type、Access-Control-Allow-Origin 等這些屬性都在這個 tab 展示。
Cookies:查看由服務端帶回來的 cookie。
JSON:將返回的內容以 JSON 格式顯示。這個很有用,特別是當服務端返回的內容本身就是 JSON 的時候。
RAW:查看返回的原始數據

QuickExec

重點實在是因為它太有用了。它位於Fiddler左下角,有個 QuickExec 的提示,非常顯眼。官網介紹

其實,當你看到它的時候,就已經會了第一個命令,輸入時help
輸入help會帶你到命令行的幫助頁,上面列舉了所有可用的命令。不是很多,而且都很直觀。這里同樣把常用的列一下。
?sometext:高亮包含匹配文字的會話。比如 ?/foo 就可以把所有包含 /foo 的請求都找出來。
其他的高亮功能還有:=(匹配請求方法或狀態碼)、@(匹配host)、select(匹配MIME)。
clear:清空會話面板。
keeponly:清空會話面板,僅保留指定的MIME類型。比如 keeponly json 就能篩選出所有返回 json 的會話。
go:放行所有的斷點。

設置斷點

按照之前介紹的,在狀態欄啟用斷點(無論是請求斷點,還是響應斷點)后,所有的請求都會中斷。
事實上,一個網頁加載時,會觸發很多異步請求。
而在上一節其實留了斷點的命令行沒有介紹。斷點即 breakpoint,所有跟斷點相關的都是以 bp 為前綴。
bpu:請求時斷點,比如 bpu /foo
bpafter:響應時斷點,比如 bpafter /foo
bps:攔截狀態碼,比如 bps 404
bpm:攔截方法,比如 bpm post
用不帶參數的命令可以清除斷點,比如 bpafter 可以清除所有的響應斷點。
url 的匹配方式是判斷“字符串是否包含”,比如 bpu /foo 會攔截所有包含 /foo 的請求。
以上命令不帶參數時,相當於去掉斷點
如果忘了這些命令,在命令行輸入 bp ,敲回車,就能看到提示了。bp is short for breakpoint,這個能記住嗎?

模擬請求

右側的 Composer 窗口可以模擬發送請求。
剛打開這個窗口的時候,應該是一片空白。你可以從左側會話列表拖一個會話過去,這樣就有預填的信息了,修改一下參數,點“Execute”,piu,一條請求就發送出去了。
接着在會話列表就可以查看服務端的返回值。前面有介紹

模擬返回值

想要模擬返回值,首先要設置響應斷點。
bpafter qcssmd
當滿足條件的響應回來時,選中該會話,就可以看到如圖所示的面板。選擇 Raw 視圖(其他也可以,Raw 可以修改更多的內容),可以搜索XD大俠,發現有兩個地方,我們發現第二個地方是

<h1><a id="Header1_HeaderTitle" class="headermaintitle" href="http://www.cnblogs.com/qcssmd/">XD大俠</a></h1>

然后我們修改XD大俠為XD大俠222,然后單擊“Run to Completion”,就能把修改后的返回值送還給瀏覽器了。

還可以添加自動化:
選中想要攔截的請求,比如 http://www.cnblogs.com/qcssmd/
然后在 Request 面板選擇 AutoResponder
再選擇 “Add Rule”
在最下面的里面填你的返回內容的txt文件路徑
然后 “Save”
此時會彈出一個對話框,跟 Response 面板的布局一樣,在上面可以編輯返回值。
或者你直接把定義好的返回內容保存成文件,在剛才那個下拉框中選擇該文件就行了。這里我是直接把改好的文件另存為txt文件,然后讓他自動導向這里,然后運行,就會出現之前一樣的結果。

Filter

假如我只關心某個域名下的抓包,其他的我都不在意。這時可以利用filter,讓Fiddler只顯示我們篩選的包。避免無效的請求打擾我們。


免責聲明!

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



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