Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 詳解Android/IOS平台下抓包工具使用以及如何模仿一個app

詳解Android/IOS平台下抓包工具使用以及如何模仿一個app

編輯:關於Android編程

抓包(Packet Capture),實際上就是對網絡請求(包括發送與接收)的數據包進行截獲、重發、編輯、轉存等操作,在Android下,也經常被用來進行數據截取等。學會抓包之後,獲取某個App的API就是輕而易舉的事了,當然,現在有很多App,都對API進行了加密驗證,例如Mac校驗。所以在這種條件下,調用人家的API就困難得多了。

在Android或iOS下,抓包的方式不外乎兩種,一種是代理,另一種是tcpdump。正常情況下,走代理模式就可以了。

抓包工具

抓包工具比較常見的是Fiddler,Wireshark等,個人比較喜歡Charles,官網,界面簡潔人性化,只做數據截取的話,足夠用了,並且同時支持Windows,Mac,Linux。下面就介紹如何利用Charles進行抓包。Mac OSX下Charles是收費的,這裡提供一個破解版下載鏈接: https://pan.baidu.com/s/1c1NghOW 密碼: v74u

Charles

charles界面如圖

主機允許代理模式

菜單欄Proxy -> Proxy settings,Port設置一個不與電腦其他端口沖突的端口號,比如8888,並勾選Enable transparent HTTP proxying,點擊OK。如圖

這樣,就允許了HTTP代理模式。

客戶端設置代理

在Android/iOS下設置代理。

首先,通過ipconfig查看主機ip地址(mac或linux下使用ifconfig)。

然後,Android或iOS須和主機處於同一個局域網下(連同一個路由器,同網段)。在Android中打開設置->WLAN->長按當前連接的Wifi->修改網絡->高級選項->打開代理(手動)->輸入主機ip地址及代理端口號->保存,如圖

iOS開啟代理的方式也差不多,進入設置->無線局域網-> 查看當前連接的Wifi信息->HTTP設置服務器和端口。如圖

截獲數據包

前面設置完畢之後,當Android/iOS 下,有進行網絡請求時,那麼Charles會彈出一個對話框,確認是否允許代理,點擊Allow,表示允許。如圖

這個時候,請求的地址就會出現在左側的structure欄裡面,點擊可以查看具體請求的信息。

Overview:HTTP請求的具體信息,包括URL、請求時間、服務端響應結果等。

Request:請求參數,包含Headers,Params等

Response:響應結果,包含Headers,Json格式數據、Json預覽等。Json數據就是比較直觀的響應體。

這樣,就完成了一次HTTP請求的攔截。同樣,我們拷貝該URL在浏覽器打開,同樣可以得到這些json數據。如圖

在浏覽器也可以安裝對應的json格式化插件,例如Chrome的jsonview插件。效果如圖

這樣,響應的json數據就很直觀的展現在我們的面前。

HTTPS

HTTPS請求,響應數據可能會出現亂碼,這時候就需要安裝Charles的CA證書,下載後解壓,雙擊crt文件,選擇總是信任就可以了,當然如果要抓取iPhone設備上的HTTPS請求,需要在iPhone上也安裝一個證書,在safari輸入這個網址:http://charlesproxy.com/getssl ,點擊安裝即可。

charles還有其他挺多功能,比如模擬網速慢,斷點,數據過濾,重定向等功能,這裡就不一一介紹了,有興趣的同學自行研究哈~

模仿一個app

重頭戲來了,很多做Android的童鞋都沒接觸過服務端開發,這時候想要模仿人家做一個app來練手最頭疼的就是沒有數據來源,沒有API,雖然可以選擇諸如新浪微博提供的API接口,但是大部分的app在這方面都是沒有提供對應接口的,這時候,HTTP抓包就派上用場了。

UI

可以解壓對應的APK,res及assets下的圖片資源是沒有被加密的,可以直接使用。其他諸如layout以及drawable的xml資源一般都被加密了,個人認為也沒必要去反編譯,效率太低了,有圖片資源就夠用了。

請求接口封裝

可以通過抓包得到的json數據,來生成一個實體類。那麼如果json字段特別多呢?Android Studio提供了一個GsonFormat插件,可以快速的把json數據轉換成Java Bean。如圖:

點擊OK,選擇所需字段。一般就默認全選就可以了~

點擊OK,就可以生成一個實體類。有了請求URL和實體類,那麼封裝一個請求接口就不是啥難事啦~~

加密請求

有一些做的比較好的接口,可能需要對請求參數做一個校驗。例如虎撲體育的API,就需要把所有的請求參數,排序後進行MD5加密,服務端會對加密結果進行校驗。但是這方面沒有固定的套路,還需要自己檫亮眼睛去發現加密方式~~

Headers

在實現的過程中,你可能會發現有部分url直接在浏覽器打開,獲取不到數據,但是在Charles卻可以。那麼就很有可能是Header的問題了,那麼就需要去嘗試把Header信息加入我們的請求裡面了。這部分就不細說了,具體可以參考後面的項目。

快速寫完,可能語言有點不通順,還望諒解~~ 喜歡的話就給個贊吧

參考項目

上述的追書神器API全部內容,已經托管在GitHub。
地址:https://github.com/JustWayward/BookReader

虎撲體育加密API在另外一個項目。
地址:https://github.com/smuyyh/SprintNBA

最後,想要說一句的是,這些做法其實不是很可取,至於為什麼大家都懂的,把握個度就好~

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved