天天看點

利用fiddler抓取Android app資料包

前言

做Android開發的朋友經常需要做網絡資料的擷取和送出表單資料等操作,然而對于調試程式而言,很難知道我們的資料到底是以怎樣的形式發送的,是否發送成功,如果發送失敗有是什麼原因引起的。fiddler工具為我們提供了很友善的抓包操作,可以輕松抓取浏覽器的發出的資料,不管是手機APP,還是web浏覽器,都是可以的。

什麼是fiddler

百度百科上是這樣說的:Fiddler是一個http協定調試代理工具,它能夠記錄并檢查所有你的電腦和網際網路之間的http通訊,設定斷點,檢視所有的“進出”Fiddler的資料

fiddler下載下傳:http://www.telerik.com/fiddler

fiddler的安裝就不用多說了,傻瓜是安裝。

fiddler的工作原理

fiddler是基于代理來實作抓取網絡資料包的工作的,當我們開啟fiddler以後,fiddler會将我們的浏覽器的代理預設進行更改為127.0.0.1 端口是8888,這時fiddler的預設端口,也就是說我們發送的每一個請求和收到的每一個響應都會先經過fiddler,這樣就實作了抓取資料包的工作。

路徑:選項–>進階設定–>更改代理伺服器設定–>區域網路設定–>進階

利用fiddler抓取Android app資料包

fiddler常用功能

打開fiddler主界面如下:

利用fiddler抓取Android app資料包

我們一次從左到右來說明一下:

1.第一個類似于微信語音的小氣泡的圖示:給一個session回話添加comment,也就是添加備注功能。我們可以選中一個回話,然後為該回話添加備注,添加的備注會展示在該會話的comment選項上。

2.replay:

這個按鈕是用來回放一個會話,比如,我需要重新請求一個回話,可以選中該回話,然後點選該按鈕,或者點選鍵盤上的R鍵。

3.過濾請求:

如果我隻想過濾從360浏覽器發過來的請求,此時可以使用滑鼠左鍵長按該按鈕,拖動到360浏覽器的任何一個可視區域:

利用fiddler抓取Android app資料包

可以看到此時顯示隻過濾360浏覽器的包。

4.過濾session會話

利用fiddler抓取Android app資料包

從上圖 可以看到,這裡我過濾了“baidu”這個關鍵字。

5.textWizard

這個頁籤的作用是将給定的字元串進行編碼或者解碼,如下圖:

利用fiddler抓取Android app資料包

6.斷點調試

利用fiddler抓取Android app資料包

可以看到,最底下有一個按鈕,當點選該按鈕的時候會出現箭頭方向的變化。當箭頭向上的時候,我們的任何浏覽器的請求都會阻塞,知道點選go按鈕,才會執行。

7.控制台的使用

在fiddler的最下面一個黑色的矩形框,這個是fiddler的指令行。我們可以在該指令行下輸入”help”跳轉到官方網站,這裡有詳細的指令行教學。

常見的指令有:

1.cls清空所有會話

2.?.png 過濾所有圖檔的請求

8.控制fiddler是否工作

在fiddler的左下方有一個按鈕,是用來控制fiddler是否作為代理伺服器來抓取浏覽器發送和接收的包的。當我點選一下該按鈕,如果該按鈕顯示則表示fiddler處于工作狀态,如果該按鈕隐藏,表示fiddler不在作為代理伺服器。

利用fiddler抓取Android app資料包

9.回話面闆說明:

利用fiddler抓取Android app資料包

session會話的分析

這裡我随便選擇一個會話來進行簡單的分析。

利用fiddler抓取Android app資料包

替換伺服器端傳回的資料

利用”autoresponser”可以替換伺服器端傳回的檔案,當調試的時候需要替換伺服器端傳回的資料的時候,比如一個已經上線的項目,不可能真正的替換器某一個檔案,我們可以這樣來操作

利用fiddler抓取Android app資料包

從圖檔當中,可以很清晰的看出,當我再次加載該會話的時候,會顯示之前設定好的404代理。

如果需要設定不同的檔案代理,也是可以的。比如對于該會話,原本伺服器端傳回的内容如下圖:

利用fiddler抓取Android app資料包

由于該session傳回的是一個圖檔類型的,是以我選擇ImageView這個頁籤,可以看到此時傳回的圖檔的樣子,那麼如果需要用本地的檔案代理該傳回的内容,和之前的操作步驟都是一樣的,隻是在選擇代理的時候選擇本地檔案即可,如下圖:

利用fiddler抓取Android app資料包

這次,我選擇了一個本地的檔案作為代理,此時當我再次重新請求該會話的時候,會傳回本地的檔案:

利用fiddler抓取Android app資料包

可以看出這個時候該會話傳回的内容已經是我本地的代理了。

fiddler網絡限速

fiddler還為我們提供了一個很友善的網絡限速的功能,通過網絡限速的功能,可以來模拟使用者的一些真實環境。fiddler提供了網絡限速的插件,我們可以在他的官網下載下傳:http://www.telerik.com/fiddler/add-ons

利用fiddler抓取Android app資料包

點選”download”,下載下傳完成之後,點選安裝,需要重新啟動fiddler,在重新啟動fiddler之後,可以看到fiddler的工具欄頁籤,多出了一個FiddlerScript選項。

利用fiddler抓取Android app資料包

比如我需要在請求之前延遲一段時間,可以這樣做:

利用fiddler抓取Android app資料包

在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抓取Android app資料包

配置遠端連接配接:

利用fiddler抓取Android app資料包

這些配置完成之後,一定要重新啟動fiddler。

可以看到fiddler的預設端口是8888,我們可以現在浏覽器上輸入”http://127.0.0.1:8888”

利用fiddler抓取Android app資料包

到這裡為止我們的fiddler就配置完成了,接下來需要配置手機上的無線網絡。

2.手機無線網絡配置

注意:如果需要fiddler抓取Android app上的資料包,那麼兩者必須在同一個無線網絡中。(同時,必要時請關閉電腦的防火牆)

在手機的無線網絡配置之前,必須要首先知道fiddler所在主機的ip位址:

利用fiddler抓取Android app資料包

可以看到我的fiddler所在主機,也就是我的電腦在無線網中的ip位址是192.168.1.109

打開手機設定中的無線網絡界面,進行如下四步操作:

選中連接配接的網絡,點選修改網絡

利用fiddler抓取Android app資料包

點選進階選項

利用fiddler抓取Android app資料包

代理—>手動

利用fiddler抓取Android app資料包

輸入代理伺服器的ip,也就是我們fiddler所在主機的ip位址,和端口,fiddler預設的端口是8888,IP選項設定為”DHCP”

利用fiddler抓取Android app資料包

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

利用fiddler抓取Android app資料包

此時可以看到fiddler抓取的網易app發送和接收的相關資料包。

利用fiddler抓取Android app資料包

ok,左側是我們的所有會話,我随機的選中一個會話,該會話是image類型的,檢視該會話的内容,是我們網易新聞的頭條上的圖檔。

總結

fiddler是一個很友善的抓取網絡資料包的工具,他是基于代理的方式來實作的。

注意:

1.關閉電腦的防火牆

2.如果需要抓取手機app的資料包,需要手機和電腦在都連接配接同一個無線網絡

3.抓完包以後将fiddler關閉(提高通路網絡的速度)同時将手機上的代理關閉 (如果不關閉代理,當fiddler關閉,或者是兩者連接配接的不是同一無線網絡,手機會不能正常的通路網絡)

ok,今天關于fiddler的基本學習,以及使用fiddler抓取app的網絡資料包,就到這裡了。希望大家能夠喜歡。碎覺了。

繼續閱讀