Android7.0之后默认只信任系统证书,抓包变得麻烦了,自家的项目中需要设置android:networkSecurityConfig才能抓包,别家的话一般就只能采用下面的办法了。
1、准备一台已经root的手机(以小米6为例)。
2、电脑上下载好charles证书
(默认下载好的证书名字是charles-ssl-proxying-certificate.pem)
3、使用这个命令会得到证书的哈希值(注意mac或者linux系统默认有安装openssl,windows系统可以自己装一下) openssl x509 -subject_hash_old -in charles-ssl-proxying-certificate.pem
4、修改证书名字为你得到的哈希值拼接 .0,例如我的证书名称将会修改为b5a1bed0.0
5. 将证书从电脑倒入你的手机,可以使用adb命令,例如 adb push /Users/my/Desktop/b5a1bed0.0 /storage/self/primary/aaa
(注意:/Users/my/Desktop/b5a1bed0.0是我的证书路径,/storage/self/primary/aaa是我手机中名称为aaa的一个文件夹,这个可以自行决定放在哪里只要在你的手机里就行)
6、手机安装好Root Explorer软件,使用Root Explorer复制证书到/system/etc/security/cacerts目录下(我试过了各种办法最终还是这种最方便有效,其他的例如使用命令移动然后修改权限之类的都不可靠)
为防大家下载错我贴一下Root Explorer的图标:
7、修改证书权限,直接使用Root Explorer修改(使用其他文件管理器也行,例如MT管理器),选中你的证书然后点击右上角选择权限设定
注意勾选上
其他后面的两个勾,点击确定现在就可以愉快的抓包了。