相信我們的讀者中有不少是做手機測試的同學,如果我們的被測APP是有網絡交互功能的(比如說一個電商APP或者論壇APP亦或是一個照片云存儲的APP),那么如何來監測、調試以及修改這些API請求或者圖片請求呢?就需要我們的Fiddler出馬了,Fiddler可以幫助我們查看手機的HTTP/HTTPS流量,讓我們來看看如何操作吧
查看手機流量需要在Fiddler所做的設置及其原理
在上一講中我們介紹了Fiddler的工作原理實際是做為一個代理服務器的存在,檢視通過這個代理服務器的流量,所以查看手機流量的思路也是很簡單的將手機的代理服務器設置成我們的Fiddler就好了,具體的設置方法會在下面介紹,首先我們需要在Fiddler中做一個簡單的設置,開啟他的遠程調試功能,否則Fiddler是只能查看本機流量的。
打開安裝好的Fiddler,在菜單欄里選擇Tools->Fiddler Options,打開Fiddler選項對話框,再選擇Connections標簽頁,我們需要代理設置端口號和Allow remote computers to connect選項:
這個端口號是Fiddler代理服務的端口號,在后續設置代理時會用到,所有的代理流量都是通過這個端口發送給Fiddler的,如果在公司測試時發現別人代理到了自己的機器而造成了多臺設備的流量交叉不好判斷,也可以修改這個端口號并修改自己使用的測試機的代理設置。要順手說一句的是,設置了代理的手機如果目標代理服務器端口是沒有啟用Fiddler的,那么這臺手機時無法正常上網的,如果經常使用Fiddler調試手機流量,在手機無法正常上網時不要忘記檢查一下手機的代理設置哦。
第二個需要關注的選項Allow remote computers to connect是一個Checkbox,勾選后Fiddler就可以查看非本機但是代理到本機設置端口的流量了,如果沒有開啟此選項,即使在手機上設置的正確的代理也是無法看到HTTP流量的,且手機無法正常上網,原因請參考上面一段,該選項需要重啟Fiddler生效,點擊確定時會提醒你的。
順手提一句的是Act as system proxy on startup選項,這個選項是默認勾選的,如果你的主業是手機測試,那么推薦把這個選項去勾選,在Fiddler啟動時就不會自動注冊為系統的代理,本機的IE/Chrome等應用的流量就不會在Fiddler上顯示了,去除了無關流量的干擾。
設置手機代理還需要知道安裝Fiddler機器的IP,方法有很多,比如CMD命令行中的ipconfig命令,不會的同學可以去學習一下。
查看Android手機的流量
在Android手機點擊“設置”→“WI-FI”,長按處于需要設置代理的WI-FI;如XXXXX-3w-test.出現如下圖提示框,點擊“修改網絡配置”。
在提示框里勾選“顯示高級選項”,代理設置選為“手動”,將代理主機名和代理服務器端口改為電腦的IP地址,填好代理服務器端口,即上一步中我們設置的端口號。
點擊存儲后便完成了代理服務器的設置,如果這個WIFI是沒有連接的,主動連接這個WIFI,嘗試在手機瀏覽器上訪問幾個網頁,看看Fiddler中是否有相關的流量信息,有則代表設置成功了。
需要注意的是代理設置是跟隨WIFI的,如果發生了WIFI自動切換,且切換后的WIFI沒有設置代理,那么自然切換WIFI后就無法看到手機相關的流量信息了,在Fiddler明顯丟失手機相關數據包時可以查看下是否發生了WIFI切換的現象。另外由于某些手機的BUG,針對當前已連接的WIFI的代理設置有概率失效,斷開再重連配置好代理信息的WIFI熱點即可。
查看IPhone手機的流量
Iphone手機的代理設置和Android手機類似,在iOS設備中,依次打開“設置”→“WI-FI”,點擊處于連接狀態的WI-Fi(如還沒有連接WI-FI需要先進行連接);如XXXXX-3w-test.進入如下界面:
在HTTP代理處將“關閉”切換為“手動”。 在“服務器”輸入框處填上要代理上的電腦的IP地址,填好代理服務器端口:
點擊左上角“<無線局域網”返回保存,即可完成設置。
查看WinPhone手機的流量
噢,對不起,作者并沒有Windows Phone手機,沒法給出具體步驟,但是大體思路應該是一致的,在Wifi界面找到相關代理設置即可。
還可以用于Linux及Mac系統哦
是的能夠設置代理的系統都可以使用Fiddler來查看HTTP流量,也可以通過Fiddler做跳板訪問HTTP網頁
舉個例子,Windows和Linux雙機辦公,通常都是Windows有外網權限,Linux僅有內網權限,通過將Linux的代理設置設置到Windows的Fiddler上,便可以使Linux也能夠訪問網頁了。當然公司的外網隔離機制是為了保護每個公司的信息安全的,所以即使掌握了這項技術也不要用于非法用途哦。
如果只有Linux或者Mac單機怎么辦呢?我們可以在Linux或Mac機器上安裝Windows虛擬機,然后在虛擬機上安裝Fiddler,并將宿主機器的代理指向虛擬中的Fiddler設置(記得Fiddler要打開支持查看遠程流量哦),當然這種操作僅能用于查看Linux和Mac機器上的HTTP流量,是無法達成上文中的跳板效果解除外網限制的,相信聰明的你一定知道為什么。
至于Linux和Mac系統上的代理設置,作者確實有這些機器,但是相信都是用這么非主流系統的你了,一定知道怎么設置代理或者能夠有辦法找到答案,我就不再像之前Android和IOS設備一樣截圖說明了。
這么強悍的功能有什么限制么
當然這么強悍的功能還是有其自身的限制的,這些限制也是和Fiddler自身的缺點息息相關的,比如:
- 我們僅能Debug HTTP流量,對直接使用TCP報文傳輸的游戲應用等就無能為力了,這種時候需要使用wireshark配合tcpdump命令來做,超出本文范疇了。
- Fiddler在處理超過2G的大包時有性能問題,實際根據機器性能可能超過200M都會有Fiddler卡頓的現象,所以盡量不要用于debug較大的數據包
- Fiddler默認會采取存儲轉發的機制,會將每一條Response完全接收后再轉發給請求方,所以在處理下載,流媒體播放時可能存在問題,但是Fiddler提供了Stream模式用于解決這個問題,在Stream模式下所有的數據都會在收到后直接傳遞給請求方或接收方,Fiddler僅在此模式下僅能用于查看流量而無法對流量做修改操作
- 目前我們進能抓取到HTTP包的信息,如果需要抓取HTTPS包的信息需要安裝證書,我們會在下一節中來學習HTTPS協議和其抓包方法