1. 程式人生 > >Android7.0 和 Charles 的抓包 出現無法抓包unknown和證書無效

Android7.0 和 Charles 的抓包 出現無法抓包unknown和證書無效

Android7.0 和 Charles 的抓包

關於android手機在mac版charles上抓不到包這個問題困擾了很久,查閱了很多資料,發現是android7.0系統安全策略問題。

Charles抓包正常流程

1.在手機上配置證書

點選後:直接在手機瀏覽器輸入: chls.pro/ssl
ps:最好用UC瀏覽器 華為自帶瀏覽器會下載一個pem檔案,會直接在手機上無法安裝

2.在電腦上儲存加密檔案
這裡寫圖片描述

ps:這個證書後面會用到

3.設定訪問域名和埠
這裡寫圖片描述

這裡寫圖片描述

ps:大部分人會設定Host:* port:443 ;但是如果直接點選OK也是沒有問題的

以上的步驟在隨便一搜都可以找到的,但是,上面是針對ios和一部分android機子可行,android7.0的機子

再去用charles抓包時候會出現一下情況:
各種unknown

這裡寫圖片描述

此時此刻,把目光轉移到程式碼上來,不管你在charles怎麼配置都是無濟於事的

步驟如下:

1.在專案res目錄下新增一個資料夾,命名xml,並且新建一個xml檔案,可以命名為network_security_config.xml(其實。名字可以順便命名,對應就行)

這裡寫圖片描述

2.network_security_config.xml 裡面新增內容:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config
>
<domain includeSubdomains="true">請求域名</domain> <trust-anchors> <certificates src="@raw/證書名稱"/> </trust-anchors> </domain-config> </network-security-config>

PS:請求域名 - 為你專案請求介面所用到的域名
證書名稱 - 為上面提到的第二點在charles裡面點選”Save Charles Root Certificate..”(路徑: Help - SSL Proxying -Save Charles Root Certificate.. )

3.把證書放進res/raw 目錄下 ,如果沒有此目錄,需要新建

這裡寫圖片描述

ps:此時檔名稱應當和上面提到的network_security_config.xml 檔案裡面證書名稱對應

4.在AndroidManifest.xml檔案需要加入以下配置:
這裡寫圖片描述

android:networkSecurityConfig="@xml/network_security_config"

大功告成,配置完成即可抓包。

溫馨提示: 抓到看到亂碼也是證書導致的