使用Charles對Android App的https請求進行抓包

本文背景

公司新項目要求抓取目前市面上一些熱門App的數據,經過研究發現很多App的網絡請求都使用https進行數據傳輸,這樣問題就來了,http使用明文傳輸所有請求都能攔截到,而https請求無法攔截。
所以這裏我們要使用Charles來抓取https,但是筆者看了網上很多使用iOS設備進行抓取https的文章,經測試iOS8/10/11均無法進行正常抓取,即使信任證書也不行。
經過筆者的不斷嘗試,終於在Android5.0上成功抓取了https。研究後發現,在Android7.0以下可以正常使用Charles抓取。Android7.0以上應該是默認屏蔽了此種方法。

Charles安裝

Charles配置

配置電腦端的根證書

  1. 打開Charles,我這裏使用的是v4.2.5版本:
    使用Charles對Android App的https請求進行抓包

  2. 安裝根證書
    使用Charles對Android App的https請求進行抓包

  3. Mac需要設置信任證書

    1. 安裝後會彈出鑰匙串訪問界面,如圖:
      使用Charles對Android App的https請求進行抓包

    2. 雙擊證書,彈出證書詳細界面,點擊『信任』選項,然後將所有設置爲始終信任,如圖:
      使用Charles對Android App的https請求進行抓包

在手機端配置根證書

  1. 在電腦端選擇安裝移動端的證書:
    使用Charles對Android App的https請求進行抓包

  2. 選擇後會顯示IP與端口號,用於手機設置http代理:
    使用Charles對Android App的https請求進行抓包

  3. 手機的網絡上設置成電腦的http代理:
    此時必須保證手機和電腦在同一網絡,並且手機可以訪問電腦的ip與端口
    使用Charles對Android App的https請求進行抓包

  4. 設置完成後訪問網絡時,服務端會彈出提示,點擊Allow(同意連接):
    使用Charles對Android App的https請求進行抓包

  5. 手機瀏覽器(筆者使用Chrome)訪問chls.pro/ssl,下載證書並安裝(證書名任意):
    使用Charles對Android App的https請求進行抓包

配置電腦端的抓取規則

  1. 進入Charles的SSL代理設置:
    使用Charles對Android App的https請求進行抓包

2.勾上啓動SSL代理,並添加一個抓取規則,比如這裏加上一個抓取所有https(443端口)的請求:
使用Charles對Android App的https請求進行抓包

3.此時手機上打開https請求的應用,應該就可以正常看到https請求的數據了:如圖:
使用Charles對Android App的https請求進行抓包

常見問題

1. 配置好後無法打開APP

在我們抓取時碰到個別APP在配置代理後無法打開,這個主要是因爲該APP做了防止抓取處理,比如校驗https的證書是否合法等,這種解決方法可以通過反編譯APP,查看源碼解決,難度較大。

2. 抓取到的內容爲亂碼

有的APP爲了防止抓取,在返回的內容上做了層加密,所以從Charles上看到的內容是亂碼。這種情況下也只能反編譯APP,研究其加密解密算法進行解密。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章