麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 編程應用 > 正文

Fiddler教程

2019-11-14 15:55:37
字體:
來源:轉載
供稿:網友
  • 參考 小坦克 http://www.companysz.com/TankXiao/archive/2012/02/06/2337728.html



1. 簡介

Fiddler(中文名稱:小提琴)是一個HTTP的調試代理,以代理服務器的方式,監聽系統的Http網絡數據流動, Fiddler可以也可以讓你檢查所有的HTTP通訊,設置斷點,以及Fiddle所有的“進出”的數據(我一般用來抓包),Fiddler還包含一個簡單卻功能強大的基于JScript .NET事件腳本子系統,它可以支持眾多的HTTP調試任務。


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

  • Fiddler_官方網站
  • Fiddler_官方文檔
  • Fiddler_官方視頻
  • Fiddler_官方插件



2. 工作原理

工作原理

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



3. HTTP協議簡介

3.1 什么是HTTP協議

協議是指計算機通信網絡中兩臺計算機之間進行通信所必須共同遵守的規定或規則,超文本傳輸協議(HTTP)是一種通信協議,它允許將超文本標記語言(HTML)文檔從Web服務器傳送到客戶端的瀏覽器,目前我們使用的是HTTP/1.1 版本。

3.2 URL詳解

URL(Uniform Resource Locator) 地址用于描述一個網絡上的資源, 基本格式如下

schema://host[:port#]/path/.../[?query-string][#anchor]

名稱解釋
scheme指定低層使用的協議(例如:http, https, ftp)
hostHTTP服務器的IP地址或者域名
port#HTTP服務器的默認端口是80,這種情況下端口號可以省略。如果使用了別的端口,必須指明,例如 http://www.test.com:8080/
path訪問資源的路徑
query-string發送給http服務器的數據
anchor

3.3 HTTP消息的結構

  • Request
    HTTP_1
    先看Request 消息的結構, Request 消息分為3部分,第一部分叫Request line, 第二部分叫Request header, 第三部分是body. header和body之間有個空行

第一行中的Method表示請求方法,比如"POST","GET", Path-to-resoure表示請求的資源, Http/version-number 表示HTTP協議的版本號,當使用的是"GET" 方法的時候, body是為空的
HTTPHead_1

  • Response
    HTTP_2
    我們再看Response消息的結構, 和Request消息的結構基本一樣。 同樣也分為三部分,第一部分叫Response line, 第二部分叫Response header,第三部分是body. header和body之間也有個空行
    HTTP_2

3.4 狀態碼

Response 消息中的第一行叫做狀態行,由HTTP協議版本號, 狀態碼, 狀態消息 三部分組成。
狀態碼用來告訴HTTP客戶端,HTTP服務器是否產生了預期的Response.
HTTP/1.1中定義了5類狀態碼, 狀態碼由三位數字組成,第一個數字定義了響應的類別

狀態碼解釋
1XX提示信息,表示請求已被成功接收,繼續處理
2XX成功,表示請求已被成功接收,理解,接受
3XX重定向,要完成請求必須進行更進一步的處理
4XX客戶端錯誤,請求有語法錯誤或請求無法實現
5XX服務器端錯誤,服務器未能實現合法的請求
  • 200 OK
    最常見的就是成功響應狀態碼200了, 這表明該請求被成功地完成,所請求的資源發送回客戶端
    StateCode_1

  • 302 Found
    重定向,新的URL會在response 中的Location中返回,瀏覽器將會自動使用新的URL發出新的Request

例如在IE中輸入, http://www.google.com. HTTP服務器會返回302, IE取到Response中Location header的新URL, 又重新發送了一個Request.
StateCode_2

  • 304 Not Modified
    代表上次的文檔已經被緩存了, 還可以繼續使用,例如打開博客園首頁, 發現很多Response 的status code 都是304
    [提示: 如果你不想使用本地緩存可以用Ctrl+F5 強制刷新頁面]
    StateCode_3

  • 400 Bad Request 客戶端請求與語法錯誤,不能被服務器所理解
  • 403 Forbidden 服務器收到請求,但是拒絕提供服務

  • 404 Not Found
    StateCode_4

  • 500 Internal Server Error 服務器發生了不可預期的錯誤
  • 503 Server Unavailable 服務器當前不能處理客戶端的請求,一段時間后可能恢復正常



4. 界面操作

4.1 主界面

主界面

Fiddler的主界面分為 工具面板、會話面板、監控面板、狀態面板,下面進行一一介紹。

4.2 工具面板

工具面板

  • 說明
    注釋、重新請求、刪除會話、繼續執行、流模式/緩沖模式、解碼、保留會話、監控指定進程、尋找、保存會話、切圖、計時、打開瀏覽器、清除IE緩存、編碼/解碼工具、彈出控制監控面板、MSDN、幫助

  • 兩種模式

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

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

會話面板

4.3 會話面板

會話面板

會話面板圖標

4.4 監控面板

監控面板

  • 統計報表

(1) 請求總數、請求包大小、響應包大??;

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

(3) HTTP狀態碼統計;

(4) 返回的各種類型數據的大小統計以及餅圖展現。
統計報表

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

時間軸

看到這張圖,你是否可以回答這些問題:

  1. 圖標的 Y 軸上顯示的是簡化后的 URL。為什么有些是綠色的,有些是黑色的?
  2. 為什么第一個請求用陰影線來表示,其它請求卻都是實心的?
  3. 請求條的不同顏色分別代表什么?
  4. 每個請求中的黑色豎線表示什么?
  5. 請求后面的圖標(如閃電和軟盤)代表了什么?
  6. 每個請求前面兩個小圓圈是什么,為什么有的是紅色,有的是綠色?
    下面將一一揭曉。

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

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

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

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

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

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

4.5 狀態面板

狀態面板

  • 控制臺
    Fiddler的左下角有一個命令行工具叫做QuickExec,允許你直接輸入命令。
    常見得命令有
命令解釋
help打開官方的使用頁面介紹,所有的命令都會列出來
cls清屏 (Ctrl+x 也可以清屏)
select選擇會話的命令
?.png用來選擇png后綴的圖片
bpu截獲request
bpafter截獲response



5. 常用功能

5.1 監聽HTTPS

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

HTTPS例子:
https://pay.tenpay.com/main/app/v1.0/trans_manage.cgi?OutPutType=JSON

對比文本

5.2 HOST切換

HOST

5.2 模擬各類場景

  • 通過GZIP壓縮,測試性能
  • 模擬Agent測試,查看服務端是否對不同客戶端定制響應
  • 模擬慢速網絡,測試頁面的容錯性
  • 禁用緩存,方便調試一些靜態文件或測試服務端響應情況
  • 根據一些場景自定義規則
    對比文本

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

5.3 Compare(對比文本)

對比文本

5.4 Composer(構造器)

請求構造顧名思義就是我們可以模擬請求,也就是說我們可以借助Fiddler的Composer 在不改動開發環境實際代碼的情況下修改請求中的參數值并且方便的重新調用一次該請求,然后相比較2次請求響應有何具體不同。任何一個請求參數只要是合法的取值再次調用后都會有相應的響應,那么你想要的任意一個合法請求組合自然也能夠按照你的意愿構造出來,然后再次調用以及查看返回數據,十分方便!

下面舉一個交易查詢請求構造的例子。首先進入交易查詢頁面抓包找到目標請求https://pay.tenpay.com/main/app/v1.0/trans_manage.cgi?OutPutType=JSON,雙擊該包在Inspectors標簽下查看返回數據為JSON格式,而xml格式一欄為空:
構造器_1

將該請求鼠標左鍵單擊拖入Fiddler右側Request Builder標簽內并修改原請求參數OutPutType=JSON為OutPu tType=XML,然后點擊Execute按鈕再次觸發調用請求,
構造器_2

雙擊這次請求包在Inspectors標簽下查看返回數據為XML格式,而JSON格式一欄為空:
構造器_3

5.5 Filters(過濾監控)

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

(1).
Filter_1

(2).
Filter_2

選項1解釋
No zone filter不設置hosts過濾
Show Only Intranet Hosts只顯示內網HOST
Show Only Internet Hosts只顯示外網HOST令
選項2解釋
No Host Filter不設置hosts過濾
Show Only The Following Hosts隱藏過濾到的域名
Show Only The Following Hosts只顯示過濾到的域名
Flag The Following Hosts標記過濾到的域名

5.5 AutoResponder(請求重定向)

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

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

(2)你也可以將多人同時維護的某個JS文件復制一份出來在本地,當你的開發調試收到他人調試代碼干擾時,可以將這個JS的調用重定向到本地無干擾的JS文件,進行無干擾開發,功能開發完成并調試OK之后再將你的代碼小心合入到開發環境中,這樣就可以避免受到他人干擾專心搞你的模塊開發,也就是說能夠將JS文件脫離開發環境卻不影響線上調試。

(3)你還可以將樣式文件或者圖片指向本地如果需要的話。開發過程中的很多頁面其實都是慘不忍睹的,究其原因很大程度上是因為缺少對應的樣式文件或者沒有圖片資源,所以樣式文件和圖片的重定向會對美感稍有要求的開發人員帶來福音。

重定向



6. 插件介紹

6.1 Format

Format_1

Format_1

6.2 Script

  • Fiddler Script 是用JScript.NET語言寫的,
    JScript.NET

  • 在這個方法中修改Request的內容, 我們用得最多,

    static function OnBeforeRequest(osession: Session)
  • 在這個方法中修改Response的內容,

    static function OnBeforeResponse(oSession: Session)
  • 添加IP Main方法中添加

    FiddlerObject.UI.lvSessions.AddBoundColumn("HostIP", 50, "x-hostIP");
  • 請求,響應延遲 在OnBeforeRequest 添加

    oSession["request-trickle-delay"]  = "3000"; oSession["response-trickle-delay"] = "3000";
  • 我們可以控制Session在Fiddler中顯示的樣式,把這段腳本放在OnBeforeRequest(oSession: Session) 方法下,并且點擊"Save script", 這樣所有的VEVb的會話都會顯示紅色.

      if (oSession.HostnameIs("www.companysz.com")) {            oSession["ui-color"] = "red";        }
  • Fiddler Script中修改Cookie
    Cookie其實就是request 中的一個header,注意:FiddlerScript不能直接刪除或者編輯單獨的一個cookie, 你需要用replace方法或者正則表達式的方法去操作cookie的string

    static function OnBeforeRequest(oSession: Session) {      if (oSession.HostnameIs('www.example.com')       && oSession.uriContains('pagewithCookie')        && oSession.oRequest.headers.Contains("Cookie"))      {          var sCookie = oSession.oRequest["Cookie"];      // 用replace方法或者正則表達式的方法去操作cookie的string     sCookie = sCookie.Replace("cookieName=", "ignoreme=");      oSession.oRequest["Cookie"] = sCookie; }
  • 刪除所有的cookie

    oSession.oRequest.headers.Remove("Cookie");
  • 新建cookie

    oSession.oRequest.headers.Add("Cookie", "username=testname;testpassWord=P@ssword1");
  • Fiddler Script中修改Request 中的body

    static function OnBeforeRequest(oSession: Session) {     if(oSession.uriContains("http://www.companysz.com/"))    {        // 獲取Request 中的body字符串        var strBody=oSession.GetRequestBodyAsString();    // 用正則表達式或者replace方法去修改string    strBody=strBody.replace("1111","2222");    // 彈個對話框檢查下修改后的body                   FiddlerObject.alert(strBody);    // 將修改后的body,重新寫回Request中    oSession.utilSetRequestBody(strBody);}}

VS插件:https://visualstudiogallery.msdn.microsoft.com/872d27ee-38c7-4a97-98dc-0d8a431cc2ed

6.3 三方插件

  • .NET可以開發

  • 插件管理
    IE



7. 瀏覽器抓包方式

7.1 IE

IE

7.2 Firefox

Firefox

7.3 Chrome

Chrome

7.4 VS

我們在用visual stuido 開發asp.net網站的時候也需要用Fiddler來分析HTTP, 默認的時候Fiddler是不能嗅探到localhost的網站。

在localhost后面加個點號,Fiddler就能嗅探到。

例如:原本ASP.NET的地址是 http://localhost:2391/Default.aspx, 加個點號后,變成 http://localhost.:2391/Default.aspx 就可以了
VS



8. 移動端抓包

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



9. 推薦書籍

  • 《Fiddler調試權威指南》是Fiddler的開發者Eric Lawrence編寫的一本權威的參考指南。全書分為10章和4個附錄,從認識Fiddler開始,介紹了基本技巧和概念、配置選項、Inspectors、擴展、數據流導入導出、FiddlerScript和FiddlerCore等主題;附錄部分還給出了故障排除和命令行等有用的參考信息。

  • 《Fiddler調試權威指南》適合Web開發人員和Web測試人員閱讀參考,也適合想要學習和掌握Fiddler的讀者閱讀。通過《Fiddler調試權威指南》,你將學會如何利用Fiddler調試Web相關的應用,掌握如何調試HTTPS數據流,學會如何在流行的設備上使用Fiddler,甚至掌握更多高級的擴展功能。



10. 其他抓包工具

同類的工具有 : HttpWatch, Firebug,Chrome自帶調試工具,WireShark



11. 總結

通過以上的介紹,你應該已經發現fiddler其它強大的功能。fiddler絕對是開發利器。
  • Fiddler能記錄所有客戶端和服務器的HTTPHTTPS請求,允許你監視、設置斷點,甚至修改輸入輸出數據,Fiddler包含了一個強大的基于事件腳本的子系統,并且能使用.NET語言進行擴展;
  • 你對HTTP協議越了解,你就能越掌握Fiddler的使用方法,你越使用Fiddler,就越能幫助你了解HTTP協議,兩者關系緊密、相輔相成;
  • 強大圖形呈現,拖拽操作,豐富的插件。
  • 使用Fiddler無論對Coder還是Tester來說,都是非常有用的工具。

上一篇:VS遠程調試

下一篇:JSON與XML比較

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久色在线 | 久久老司机| 免费看毛片网站 | 特级毛片免费视频 | 成人在线免费观看小视频 | 久久国产不卡 | 黄www片 | 一区二区三区欧美精品 | 成码无人av片在线观看网站 | 成人午夜免费看 | 国产一区二区国产 | 精品在线视频播放 | 欧美成人黄色小视频 | 精品国产精品久久 | 伊人午夜| 4480午夜 | 激情网站在线观看 | 福利免费观看 | 国产精品久久久久久婷婷天堂 | 蜜桃精品视频在线观看 | av在线直播观看 | 黄色男女视频 | 国产成人在线免费视频 | 久久国产精 | 毛片免费在线视频 | 色av成人天堂桃色av | 国产免费一区二区三区 | 久久久久久久久久久久免费 | 欧美日韩精品一区二区三区蜜桃 | 国产精品成人一区二区三区电影毛片 | av日韩一区二区三区 | 看黄在线 | 久久91亚洲精品久久91综合 | 亚洲看片网 | 欧洲黄视频| 视频久久免费 | 美女性感毛片 | 欧美黄色三级视频 | 亚洲一区二区三区在线免费观看 | 午夜色片 | 国产 视频 一区二区 |