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怎麼配置都是無濟於事的
步驟如下:
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"
大功告成,配置完成即可抓包。
溫馨提示: 抓到看到亂碼也是證書導致的