1. 程式人生 > >使用Charles對Android App的https請求進行抓包

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

http代理 版本 download ios8 app 5.0 圖片 www 是否

本文背景

公司新項目要求抓取目前市面上一些熱門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版本:
    技術分享圖片

  2. 安裝根證書
    技術分享圖片

  3. Mac需要設置信任證書

    1. 安裝後會彈出鑰匙串訪問界面,如圖:
      技術分享圖片

    2. 雙擊證書,彈出證書詳細界面,點擊『信任』選項,然後將所有設置為始終信任,如圖:
      技術分享圖片

在手機端配置根證書

  1. 在電腦端選擇安裝移動端的證書:
    技術分享圖片

  2. 選擇後會顯示IP與端口號,用於手機設置http代理:
    技術分享圖片

  3. 手機的網絡上設置成電腦的http代理:
    此時必須保證手機和電腦在同一網絡,並且手機可以訪問電腦的ip與端口
    技術分享圖片

  4. 設置完成後訪問網絡時,服務端會彈出提示,點擊Allow(同意連接):

    技術分享圖片

  5. 手機瀏覽器(筆者使用Chrome)訪問chls.pro/ssl,下載證書並安裝(證書名任意):
    技術分享圖片

配置電腦端的抓取規則

  1. 進入Charles的SSL代理設置:
    技術分享圖片

2.勾上啟動SSL代理,並添加一個抓取規則,比如這裏加上一個抓取所有https(443端口)的請求:
技術分享圖片

3.此時手機上打開https請求的應用,應該就可以正常看到https請求的數據了:如圖:
技術分享圖片

常見問題

1. 配置好後無法打開APP

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

2. 抓取到的內容為亂碼

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

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