用Fiddler對Android應用進行抓包


前言

     Fiddler是一款非常流行並且實用的http抓包工具,它的原理是在本機開啟了一個http的代理服務器,然后它會轉發所有的http請求和響應,因此,它比一般的firebug或者是chrome自帶的抓包工具要好用的多。不僅如此,它還可以支持請求重放等一些高級功能。顯然它是可以支持對手機應用進行http抓包的。本文就來介紹下如何用fiddler對手機應用來抓包。

 

工具/原料

    • Fiddler

 下載地址:http://www.telerik.com/download/fiddler(官方網址)

 網盤鏈接:http://pan.baidu.com/s/1pL3A5th  密碼:w2t4

 Fiddler 工具教程參考:

 http://www.cnblogs.com/FounderBox/p/4653588.html?utm_source=tuicool&utm_medium=referral

    • Android設備

方法/步驟

      1.配置Fiddler允許監聽https

打開Fiddler菜單項Tools->Fiddler Options,選中decrypt https traffic和ignore server certificate errors兩項,如下圖:

第一次會提示是否信任fiddler證書及安全提醒,選擇yes,之后也可以在系統的證書管理中進行管理。

 

2. 配置Fiddler允許遠程連接

啟動Fiddler,打開菜單欄中的 Tools > Options,打開“Options”對話框。

 

   在Fiddler “Options”對話框切換到“Connections”選項卡,然后勾選“Allow romote computers to connect”后面的復選框,然后點擊“OK”按鈕。

3.配置手機端

在本機命令行輸入:ipconfig,找到本機的ip地址。

 

打開android設備的“設置”->“WLAN”,打開手機連接到同一局域網的wifi,在上面長按,然后選擇“修改網絡”,彈出網絡設置對話框,然后勾選“顯示高級選項”,選擇手動代理設置,主機名填寫Fiddler所在機器ip,端口填寫Fiddler端口,默認8888,如下圖:

然后啟動android設備中的瀏覽器,訪問百度的首頁,在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,這樣就實現了抓取數據包的工作。

 

 

  • 回話面板說明:
技術分享

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關閉,或者是兩者連接的不是同一無線網絡,手機會不能正常的訪問網絡)

文章大部分來自:http://www.111cn.net/sj/android/90542.htm

 







 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM