前提条件:安卓设备需要root,并能通过adb命令进行连接(使用模拟器)
前置步骤
-
将抓包工具的证书文件转化为安卓系统证书的格式
-
下载或导出本地抓包工具的证书文件
openssl x509 -inform pem -subject_hash_old -in charles.pem -noout -
获取有效的系统证书文件名
# Fiddler证书使用命令
openssl x509 -inform der -subject_hash_old -in FiddlerRoot.cer -noout
# charles证书使用命令 openssl x509 -inform pem -subject_hash_old -in charles.pem -noout
- 使用上述命令会返回一串字符,该字符为系统证书的名称(此处假设输出字符串为:269953fb)
- 将证书转换为有效的系统证书
# Fiddler证书使用命令
openssl x509 -inform der -in FiddlerRoot.cer -out 269953fb.0
# charles证书使用命令
openssl x509 -inform PEM -in charles.pem -out 269953fb.0
- 将证书复制到模拟器设备系统证书目录下并修改权限
# 先将证书文件Push到设备的/sdcard目录(需要修改证书名称为实际名称)
adb push 269953fb.0 /sdcard
# 安卓7模拟器执行下面代码(需要修改证书名称为实际名称)
adb shell "su -c 'mount -o rw,remount /system;cp /sdcard/269953fb.0 /system/etc/security/cacerts;chmod 644 /system/etc/security/cacerts/269953fb.0;'"
# 安卓9模拟器执行下面代码(需要修改证书名称为实际名称)
adb root adb remount adb shell "su -c 'mount -o rw; cp /sdcard/c336cef6.0 /system/etc/security/cacerts;chmod 644 /system/etc/security/cacerts/c336cef6.0;'"
- 设置代理
# 接下来通过如下一行命令,即可为你的安卓设备设置全局代理(代理地址需要修改为实际的代理地址):
adb shell settings put global http_proxy 192.168.67.70:8888
# 查看你上边设置代理是否成功,可以使用如下命令:
adb shell settings get global http_proxy
# 如果想取消上述代理设置,则使用如下命令:
adb shell settings put global http_proxy :0
注意:通过此方式设置的代理,可能部分APP会出现认证或连接失败的情况(目前已知的是Facebook) 出现此情况时,可以临时使用adb命令,取消代理,再进行相关的操作