1. 程式人生 > >利用fiddler抓取APP中的資料

利用fiddler抓取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常用功能

開啟fiddler主介面如下:
這裡寫圖片描述
我們一次從左到右來說明一下:
1.第一個類似於微信語音的小氣泡的圖示:給一個session回話新增comment,也就是新增備註功能。我們可以選中一個回話,然後為該回話新增備註,新增的備註會展示在該會話的comment選項上。
2.replay:
這個按鈕是用來回放一個會話,比如,我需要重新請求一個回話,可以選中該回話,然後點選該按鈕,或者點選鍵盤上的R鍵。
3.過濾請求:
如果我只想過濾從360瀏覽器發過來的請求,此時可以使用滑鼠左鍵長按該按鈕,拖動到360瀏覽器的任何一個可視區域:
這裡寫圖片描述


可以看到此時顯示只過濾360瀏覽器的包。
4.過濾session會話
這裡寫圖片描述
從上圖 可以看到,這裡我過濾了“baidu”這個關鍵字。
5.textWizard
這個選項卡的作用是將給定的字串進行編碼或者解碼,如下圖:
這裡寫圖片描述
6.斷點除錯
這裡寫圖片描述
可以看到,最底下有一個按鈕,當點選該按鈕的時候會出現箭頭方向的變化。當箭頭向上的時候,我們的任何瀏覽器的請求都會阻塞,知道點選Go按鈕,才會執行。
7.控制檯的使用
在fiddler的最下面一個黑色的矩形框,這個是fiddler的命令列。我們可以在該命令列下輸入”help”跳轉到官方網站,這裡有詳細的命令列教學。
常見的命令有:
1.cls清空所有會話
2.?.png 過濾所有圖片的請求
8.控制fiddler是否工作
在fiddler的左下方有一個按鈕,是用來控制fiddler是否作為代理伺服器來抓取瀏覽器傳送和接收的包的。當我點選一下該按鈕,如果該按鈕顯示則表示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型別的,檢視該會話的內容,是我們網易新聞的頭條上的圖片。

總結

fiddler是一個很方便的抓取網路資料包的工具,他是基於代理的方式來實現的。
注意:
1.關閉電腦的防火牆
2.如果需要抓取手機app的資料包,需要手機和電腦在都連線同一個無線網路
3.抓完包以後將fiddler關閉(提高訪問網路的速度)同時將手機上的代理關閉 (如果不關閉代理,當fiddler關閉,或者是兩者連線的不是同一無線網路,手機會不能正常的訪問網路)

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

轉:https://blog.csdn.net/Mrzhangjwei/article/details/62422011