Fiddler是一個http協議調試代理工具,它能夠記錄並檢查所有你的電腦和互聯網之間的http通訊,設置斷點,查看所有的“進出”Fiddler的數據。 Fiddler 要比其他的網絡調試器要更加簡單,因為它不僅僅暴露http通訊還提供了一個用戶友好的格式。
1、PC端安裝Fiddler
下載地址:Fiddler.exe,http://www.telerik.com/download/fiddler
2、 配置PC端Fiddler和手機
(1) 配置Fiddler允許監聽https
打開Fiddler菜單項Tools->Fiddler Options,選中decrypt https traffic和ignore server certificate errors兩項,如下圖:

第一次會提示是否信任fiddler證書及安全提醒,選擇yes,之后也可以在系統的證書管理中進行管理。
(2) 配置Fiddler允許遠程連接
如上圖的菜單中點擊connections,選中allow remote computers to connect,默認監聽端口為8888,若被占用也可以設置,配置好后需要重啟Fiddler,如下圖:

(3) 配置手機端
Pc端命令行ipconfig查看Fiddler所在機器ip,本機ip為10.0.4.37,如下圖

打開手機連接到同一局域網的wifi,並修改該wifi網絡詳情(長按wifi選擇->修改網絡)->顯示高級選項,選擇手動代理設置,主機名填寫Fiddler所在機器ip,端口填寫Fiddler端口,默認8888,如下圖:

這時,手機上的網絡訪問在Fiddler就可以查看了,如下圖微博和微信的網絡請求:

可以雙擊上圖某一行網絡請求,右側會顯示具體請求內容(Request Header)和返回內容(Response Header and Content),如下圖:

可以發現Fiddler可以以各種格式查看網絡請求返回的數據,包括Header, TextView(文字), ImageView(圖片), HexView(十六進制),WebView(網頁形式), Auth(Proxy-Authenticate Header), Caching(Header cache), Cookies, Raw(原數據格式), JSON(json格式), XML(xml格式)很是方便。
停止網絡監控的話去掉wifi的代理設置即可,否則Fiddler退出后手機就上不網了哦。
如果需要恢復手機無密碼狀態,android端之后可以通過系統設置-安全-受信任的憑據-用戶,點擊證書進行刪除或清除憑據刪除所有用戶證書,再設置密碼為無。
如果只需要監控一個軟件,可結合系統流量監控,關閉其他應用網絡訪問的權限。
利用fiddler抓取Android app數據包
做Android開發的朋友經常需要做網絡數據的獲取和提交表單數據等操作,然而對於調試程序而言,很難知道我們的數據到底是以怎樣的形式發送的,是否發送成功,如果發送失敗有是什么原因引起的。fiddler工具為我們提供了很方便的抓包操作,可以輕松抓取瀏覽器的發出的數據,不管是手機APP,還是web瀏覽器,都是可以的。
fiddler的工作原理
fiddler是基於代理來實現抓取網絡數據包的工作的,當我們開啟fiddler以后,fiddler會將我們的瀏覽器的代理默認進行更改為 127.0.0.1 端口是8888,這時fiddler的默認端口,也就是說我們發送的每一個請求和收到的每一個響應都會先經過fiddler,這樣就實現了抓取數據包的工作。
路徑:選項?>高級設置?>更改代理服務器設置?>局域網設置?>高級
9.回話面板說明:
session會話的分析
這里我隨便選擇一個會話來進行簡單的分析。
替換服務器端返回的數據
利用”autoresponser”可以替換服務器端返回的文件,當調試的時候需要替換服務器端返回的數據的時候,比如一個已經上線的項目,不可能真正的替換器某一個文件,我們可以這樣來操作
從圖片當中,可以很清晰的看出,當我再次加載該會話的時候,會顯示之前設置好的404代理。
如果需要設置不同的文件代理,也是可以的。比如對於該會話,原本服務器端返回的內容如下圖:
由於該session返回的是一個圖片類型的,所以我選擇ImageView這個選項卡,可以看到此時返回的圖片的樣子,那么如果需要用本地的文件代理該返回的內容,和之前的操作步驟都是一樣的,只是在選擇代理的時候選擇本地文件即可,如下圖:
這次,我選擇了一個本地的文件作為代理,此時當我再次重新請求該會話的時候,會返回本地的文件:
可以看出這個時候該會話返回的內容已經是我本地的代理了。
fiddler網絡限速
fiddler還為我們提供了一個很方便的網絡限速的功能,通過網絡限速的功能,可以來模擬用戶的一些真實環境。fiddler提供了網絡限速的插件,我們可以在他的官網下載:http://www.telerik.com/fiddler/add-ons

點擊”download”,下載完成之后,點擊安裝,需要重新啟動fiddler,在重新啟動fiddler之后,可以看到fiddler的工具欄選項卡,多出了一個FiddlerScript選項。
比如我需要在請求之前延遲一段時間,可以這樣做:

在onBeforeRequest方法中加入這樣一段代碼”oSession[“request-trickle-delay”] = “3000”;”,那么如果需要在服務端響應之間做延遲只需要將”oSession[“request-trickle-delay”] = “3000”;”中的request替換成response即可。
利用fiddler抓取Android app數據包
終於到了今天的主題了,如何利用fiddler抓取Android app數據包,其實也是很簡單的,只需要稍微配置一下就可以了。由於fiddler默認是抓取http協議的數據包,我們需要其能夠抓取https這樣的加密數據包,抓取Android app數據包,需要做如下配置:
1.配置fiddler
點擊工具欄選項”tools?>FiddlerOptions”
配置https:

配置遠程連接:

這些配置完成之后,一定要重新啟動fiddler。
可以看到fiddler的默認端口是8888,我們可以現在瀏覽器上輸入”http://127.0.0.1:8888”
到這里為止我們的fiddler就配置完成了,接下來需要配置手機上的無線網絡。
2.手機無線網絡配置
注意:如果需要fiddler抓取Android app上的數據包,那么兩者必須在同一個無線網絡中。(同時,必要時請關閉電腦的防火牆)
在手機的無線網絡配置之前,必須要首先知道fiddler所在主機的ip地址:
可以看到我的fiddler所在主機,也就是我的電腦在無線網中的ip地址是192.168.1.109
打開手機設置中的無線網絡界面,進行如下四步操作:
選中連接的網絡,點擊修改網絡

點擊高級選項

代理—>手動

輸入代理服務器的ip,也就是我們fiddler所在主機的ip地址,和端口,fiddler默認的端口是8888,IP選項設置為”DHCP”

點擊保存,此時手機端就配置成功了,打開fiddler,使用打開網易新聞客戶端。

此時可以看到fiddler抓取的網易app發送和接收的相關數據包。
ok,左側是我們的所有會話,我隨機的選中一個會話,該會話是image類型的,查看該會話的內容,是我們網易新聞的頭條上的圖片。
注意:
1.關閉電腦的防火牆
2.如果需要抓取手機app的數據包,需要手機和電腦在都連接同一個無線網絡
3.抓完包以后將fiddler關閉(提高訪問網絡的速度)同時將手機上的代理關閉 (如果不關閉代理,當fiddler關閉,或者是兩者連接的不是同一無線網絡,手機會不能正常的訪問網絡)