用Fiddler對Android應用進行抓包

前言

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

 

工具/原料

    • Fiddlerhtml

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

 網盤連接:http://pan.baidu.com/s/1pL3A5th  密碼:w2t4web

 Fiddler 工具教程參考:chrome

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

    • 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

相關文章
相關標籤/搜索