App開發如何利用Fidder,在api接口尚未實現的狀況下模擬數據,繼續開發

    相信app開發不少時候,都是等後臺出接口,拿到數據調試錯誤。卻不知,咱們徹底能夠不用等,只要有約定好的接口定義文檔,藉助工具就能作到,本身模擬數據返回~  css

   下面主要是在項目組開發過程當中,使用Fidder,摸索總結的經驗之談.html

   

1、初步介紹及前期準備
一、抓包工具簡介
抓包工具備不少,如下列一下最經常使用的幾個工具別簡單介紹下
firebug:web最經常使用的調試工具,可是對於分析http請求的詳細信息,不夠強大。模擬http請求的功能也不夠,且firebug經常是須要「無刷新修改」,若是刷新了頁面,全部的修改都不會保存。
 
Wireshark:通用的抓包工具,比fiddler更強大,消息量更多,好比在驗證反做弊信息的時候,反做弊pingback信息的消息用fiddler就沒抓到,用wireshark就抓到了。
 
fiddler:HttpWatch 和 Firebug絕大多數前端開發人員都比較熟悉,可是HttpWatch雖然能夠抓到每一個 HTTP 請求的所有數據,但沒法修改返回的數據;儘管Firebug能夠修改 HTML和CSS,可是在調試CGI接口時沒法干預HTTP請求的參數值和CGI返回的數據。而 Fiddler做一個 HTTP 調試代理,不但可以記錄客戶端同服務器之間的全部 HTTP 通信數據,還可以修改請求數據和返回數據,也叫作「構造請求」和「模擬響應」。除此以外, 添加了willow插件的Fiddler 還能夠:統計數據包、修改Host、請求重定向、編碼轉換、低網速模擬、斷點調試以及過濾HTTP請求…Fiddler包含了一個強大的基於事件腳本的子系統,而且可以使用.net框架語言擴展
 
二、下載
根據.netframework 2.0 或 4.0版本下載fiddler2或fiddler4
能夠直接百度進行下載,或者上官網下載: http://fiddler2.com/get-fiddler
安裝:I Agree->Install
 
三、配置抓取https
Tools->Fiddler Options->HTTPS選項卡->勾選「Capture HTTPS CONNECTs」和「Decrypt HTTPS traffic」前面的複選框,而後點擊「OK」
勾選後就可監聽到https的請求和響應了
PS:Decrypt HTTPS traffic是解密https流量的意思,勾選後能夠查看https內容,若是證書不會導的話,可能會致使部分應用沒法鏈接、部分圖片沒法顯示的問題
 
四、配置容許遠程鏈接
Tools -> Fiddler Options-> Connections選項卡,選中「Allow remote computers to connect」前面的複選框,而後點擊「OK」
設置後,就能夠監聽設置過代理的手機了,注意,設置後需重啓Fiddler才生效
 
五、手機設置代理
   本機的IP能夠經過cmd命令的ipconfig獲取本機IP,或者直接將鼠標懸停在Online上(小屏幕時Online會被收起來),以下圖(手機和電腦最好是同一wifi或同一網段)
不須要非得本機開熱點才能鏈接,只須要手機和安裝 Fiddler 電腦在同一WIFI下,手機鏈接到WIFI。不一樣的手機設置有所區別,以個人努比亞手機/iphone6p爲例,注意,fiddler的默認端口是8888,不是8080
 
設置好後能夠隨意打開幾個APP,看看鏈接是否抓到,沒抓到極可能就是你剛纔設置的代理沒保存
 
 
六、安裝fiddlerroot證書(安裝證書後就能抓到大部分https的內容)
在手機瀏覽器中輸入ip:8888,以下圖,點擊最下方的藍字 FiddlerRoot certificate(注:手機未設置鎖屏密碼時會讓你先去設置密碼)
 
 
 
 
 
2、界面介紹
一、fiddler中各類圖標的含義
 
 
二、抓包是Fiddler的最基本的應用
以本博客爲例,啓動Fiddler以後,在瀏覽器中輸入 http://www.cnblogs.com/cingchen 鍵入回車以後,在Fiddler的web session界面捕獲到的HTTP請求以下圖所示:
另外,注意請求的host字段。能夠看到有來自多個api.ad.cnblogs.com的子域名的響應,說明在大型網站的架構中,大多須要多個子域名,這些子域名多是單獨用於緩存靜態資源的,也多是專門負責媒體資源的,或者是專門負責數據統計的
 
 
二、Fiddler主界面的佈局以下:

主界面中主要包括四個經常使用的塊:前端

1.Fiddler的菜單欄,上圖綠色部分。包括捕獲http請求,中止捕獲請求,保存http請求,載入本地session、設置捕獲規則等功能。web

2.Fiddler的工具欄,上圖紅色部分。包括Fiddler針對當前view的操做(暫停,清除session,decode模式、清除緩存等)。算法

3.web Session面板,上圖黃色區域,主要是Fiddler抓取到的每條http請求(每一條稱爲一個session),主要包含了請求的url,協議,狀態碼,body等信息,詳細的字段含義以下圖所示:api

4.詳情和數據統計面板瀏覽器

針對每條http請求的具體統計(例如發送/接受字節數,發送/接收時間,還有粗略統計世界各地訪問該服務器所花費的時 間)和數據包分析。如inspector面板下,提供headers、textview、hexview,Raw等多種方式查看單條http請求的請求報 文的信息:緩存

而composer面板下,則能夠模擬向相應的服務器發送數據的過程(不錯,這就是灌水機器人的基本原理,也能夠是部分http flood的一種方式)。服務器

也能夠粘貼一次請求的raw http headers,達到模擬請求的目的:網絡

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

更多的過濾器規則須要一步一步去挖掘。

 

3、經常使用功能介紹

一、更改host
fiddler能夠直接更改host,不須要重啓手機就可當即生效,並且對IOS也是支持的,能夠在正式環境/測試環境來回切換,很是方便
Tools->HOSTS...
 
 
 
二、模擬弱網環境,限速
Rules → Performances → Simulate Modem Speeds。勾選以後,你會發現你的網路瞬間慢下來了不少。至於慢下來後網絡速度是多少,則由CustomRules.js 中以下程序控制的(Ctrl+R):
...
var m_SimulateModem: boolean = true;
...
if (m_SimulateModem) {
// Delay sends by 500ms per KB uploaded.
oSession["request-trickle-delay"] = "500";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150";
}
...
 
算法就是 1000/下載速度 = 須要delay的時間(毫秒),好比50kB/s 須要delay20毫秒來接收數據,因此根據你須要的網絡速度來修改上述值。
 
【注】:存檔以後,本來已經勾選的Simulate Modem Speeds 會被取消勾選,須要再到Rules → Performances → Simulate Modem Speeds 勾選,同時須要注意必定要禁用瀏覽器代理插件,以及修改完成後重啓瀏覽器才能生效。
 
 
 
三、打斷點(會將全部的請求打斷點)
Before Requests F11 修改請求數據
After Responses Alt+F11 修改響應結果
Break On Response 點擊後會在響應的地方打斷點
Run To Completion 修改後點擊運行,將修改後的數據進行請求/返回
 
 
 
四、composer 模擬請求
能夠模擬全部的http請求,具體的參數能夠在raw裏面寫,寫完後點擊Execute進行執行模擬請求
 
 
五、AutoResponder 自動響應
能夠精確的對抓到的數據進行處理,好比打斷點(*bpu/*bpafter),直接返回寫好的返回值(find a file...)等
 
 
六、TestWizard 轉碼
 
 
七、Replay 從新模擬個同樣的請求,Shift+左鍵能夠生成N個同樣的請求,可用於簡單的壓力測試
 
 
八、快捷命令 (Alt+Q可直接focus到命令行)
 
請求斷點:bpu 192.168.0.1
清除請求斷點:bpu
響應斷點:bpafter 192.168.0.1
清除響應斷點:bpafter
中止/開始抓本地請求:stop/start
替換請求地址:urlreplace www.zhuaqianmao.com 121.41.58.3(將zhuaqianmao的請求替換爲58.3)
放開全部斷點:go/g
選擇全部該host的請求:@118.178.168.129
全部請求類型爲xxx進行斷點:bpv(bpm) xxx(如post/get)
清除全部請求:clear/cls
退出fiddler:quit
 

九、更改UA ,能夠設置全部請求默認的User-Agent 

相關文章
相關標籤/搜索