概述
Fiddler是做什么的,能幫助我們做什么?
1、能夠監聽http/httpS的流量,可以截獲從瀏覽器或者客戶端軟件向服務器發送的http/https請求;
2、對截獲之后的請求,我們還能夠查看請求中的內容;
3、偽造請求。不僅可以偽造客戶端的請求,還能夠偽造服務器的響應。——該功能能夠方便我們進行前后端的調式。
4、測試網站的性能;
5、解密https的外部會話。因為https本身是一種加密的協議,通過fiddle我們可以進行解密操作;
6、提供第三方擴展插件,滿足更多需求。
工作原理
需要經過fiddler的代理服務器代為轉發請求與響應。
如何實現?
首先啟動fiddler,然后在瀏覽器中查看局域網代理服務器。圖示:
可以看到代理服務器的地址變成了127.0.0.1 ,這就是fiddler監聽的地址。
代理模式
流模式與緩沖模式。
流模式:fiddler會實時把服務器返回給客戶端的數據進行返回。 緩沖模式:fiddler會等待所有的請求都准備好之后才返回給客戶端。
區別:緩沖模式下可以控制最后的服務器響應;而流模式下不能控制,是什么就是什么,更接近瀏覽器本身的真實行為。
選擇:具體情況具體選擇。
使用場景——提供的功能
1、開發環境的host配置;
2、前后端接口連調——Composer
3、定位線上bug——將發布文件代理到本地,快速定位線上bug;
4、性能分析和優化——Inspectors 、Timeline
界面及使用介紹
1、菜單欄
2、工具欄
(1)氣泡:備注。添加之后在會話欄的Comment列中顯示備注內容。
(2)Replay:回放【常用】。重播一個會話。快捷鍵:”選中會話+R”
(3)清除會話面板:過濾請求、清除請求。
(4)Go:斷點調式。配合狀態欄上的斷點工具。功能類似Debug。
(5)Stream:代理模式。默認:緩沖模式。點擊進行切換。
(6)Decode:解壓請求。解壓http請求里面的東西,幫助查看。
(7)Keep:指示fiddler的保持會話數目。
(8)Any Process:捕獲請求,只看需要的請求。將“靶心”投向需要的請求。
(9)Find:查找請求。用顏色標注查找的請求。
(10)Save:保存會話。
(11)截圖:默認5秒后截圖。
(12)計時器:第一次點擊-開始計時;第二次點擊–返回計時結果;第三次點擊-清零,重新計時。右鍵點擊—不計時。
(13)Browse:啟動瀏覽器;
(14)Clear Cache:清空緩存;
(15)TextWizard:【常用】編碼、解碼文本內容;
(16)Tearoff:浮窗。
3、會話面板【fiddler核心功能之一】
Server IP:需要配置。
Ctrl+F :搜索”static function Main()”,添加代碼:
FiddlerObject.UI.lvSessions.AddBoundColumn(“Server IP”,120,”X-HostIP”);
然后重啟Fiddler。
4、詳情和數據統計面板
(1)Statistics:數據統計面板。性能分析。
RTT:【主要關注】體現一個請求從發送到返回響應的時間。
通過選擇多個會話來得來這幾個會話的總的信息統計,比如多個請求和傳輸的字節數。選擇第一個請求和最后一個請求,可獲得整個頁面加載所消耗的總體時間。從條形圖表中還可以分別出哪些請求耗時最多,從而對頁面的訪問進行訪問速度優化。
(2)Inspectors :對抓到的請求進行解包,查看具體內容。
(3)AutoResponder:文件代理【常用】。例如,將一個需要服務端返回的文件,使用本地文件做代理。
(4)Composer:前后端接口連調,偽造請求【常用】。實現不寫任何js代碼的情況下實現與服務端的接口調式。
(5)Timeline: 性能分析。對選擇多個請求有意義。作用類似HttpWatch.
5、控制面板:
(1)命令行工具:執行一些快捷操作。
常見的命令有:
- help 打開官方的使用頁面介紹,所有的命令都會列出來
- cls 清屏 (Ctrl+x 也可以清屏)
- select 選擇會話的命令
- ?.png 用來選擇png后綴的圖片
- bpu 截獲request
(2)狀態欄:
Capturing:開啟/關閉 fiddler的監聽;
Web Browsers:過濾會話選擇;
常用功能
HOST配置
將線上的服務器IP配置為指向本地服務器IP。將線上所有的文件的地址都映射到本地。
1、文件替換\線上bug調式——AutoResponder
(1)、可用於攔截某一請求,並重定向到本地的資源,或者使用Fiddler的內置響應。可用於調試服務器端代碼而無需修改服務器端的代碼和配置,因為攔截和重定向后,實際上訪問的是本地的文件或者得到的是Fiddler的內置響應。
因此,如果要調試服務器的某個腳本文件,可以將該腳本攔截到本地,在本地修改完腳本之后,再修改服務器端的內容,這可以保證,盡量在真實的環境下去調試,從而最大限度的減少bug發生的可能性。(2)、不僅是單個url,Fiddler支持多種url匹配的方式:
I. 字符匹配 如 example可以匹配 http://www.example.com和http://example.com.cn
II.完全匹配 以EXACT開頭表示完全匹配,如上邊的例子 EXACT:http://blog.csdn.net/ohmygirl
III. 正則表達式匹配
以regex: 開頭,使用正則表達式來匹配URL
如:regex:(?insx).*.(css|js|php)$
表示匹配所有以css,js,php結尾的請求url(3)、操作——模擬
http://cn.babybus.com/join/index_campus.shtml下的function_campus.js文件
前后端接口連調——Composer
選中一個接口——>拖拽到Composer面板;
准備工作:
接口請求方式、請求參數;
Get請求:參數直接寫在接口里面
Post請求:參數寫在Request Body里面。
同時,我們還能夠偽造Request Header中的Cookie。
網絡限速FiddlerScript——測試在不同網絡下的請求運行狀況
原理:將請求代碼化。
OnBeforeRequest()表示在發送一個請求時需要做什么。
例如:
添加代碼:
oSession[“resquest-trickle-delay”]=”3000”;//表示延時3秒請求;
oSession[“response-trickle-delay”]=”3000”;//表示延時3秒響應;
缺點:需要編寫C#代碼。
解決方案:使用圖形化插件;
捕獲IOS/Android移動設備上的請求
1)首先設置fiddler。菜單欄Tools—》Fiddler Options。
2)讓你的電腦與移動設備處於同一個WiFi連接狀態(不要使用VPN),然后命令行ipconfig查看本機IP。
3)使用你的移動設備在瀏覽器上訪問本機IP加“端口號”。例如:192.168.1.28:8888,然后會出現一個Fiddler的證書,安裝該證書。
4)設置你的移動設備。讓設備處在WiFi連接,設置代理為手動。然后填寫代理IP為你的電腦的IP,端口號為8888。
5)現在你就可以在手機上操作,例如訪問瀏覽器,此時在fiddler就能監聽到了。
插件介紹
插件下載地址:
http://www.telerik.com/fiddler/add-ons
例如:
- Javascript Formatter——Javascript格式化插件
- Traffic Differ——文件比較插件
- 第三方插件 Willow ——http代理插件
附錄一
圖標解釋:
web session的常用的快捷鍵
- CTRL+A: 選中所有的session;
- ESC: 取消選中所有的session;
- CTRL+I 反向選中;如果session已選中,則取消,否則選中;
- CTRL+X 刪除所有的session;
- Delete: 刪除選中的session;
- Shift+Delete 刪除所有未選中的session;
- R 重新執行當前請求;
- SHIFT+R 多次重復執行當前請求
- U: 無條件重新執行當前請求,發送不包含If-Modified-Since 和 If-None– Match的請求頭;
- SHIFT+U 無條件地多次重復執行當前請求;
- ALT+Enter 查看當前session的屬性;
- Insert:切換是否用紅色粗體標記選中的session;
- M 給選中的session添加描述;
原文:https://blog.csdn.net/yue549433330/article/details/82745760