使用 charles 调试
安装
激活
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
开启 http 调试
- 点击菜单栏
Proxy -> Proxy Settings
- 填写
Port
- 勾选
Enable transparent HTTP proxying
开启抓取 macOS 请求
- 点击菜单栏
Proxy -> Proxy Settings
- 点击
macOS
- 勾选
Enable macOS proxy
- 勾选
Use HTTP proxy
开启抓取 Android 请求
手机连接局域网下 wifi,与 charles 必须为同一网络下。
自动开启代理
在已连接的 wifi 上点击更多,进入配置代理页。
勾选自动,在输入框URL中输入:
Https:/10.10.11.235:6666.pac
手动设置代理
- 在已连接的 wifi 上点击更多,进入配置代理页。
- 勾选手动,输入 charles 的 ip 与端口(ip 为 macOS 主机 ip,端口为上面填写的 http 端口)
设置 https
- 点击
Proxy -> SSL Proxying Settings
- 勾选
Enable SSL Proxying
- 点击
Add
,Host 填写*
,Port 填写443
macOS 安装证书
- 点击菜单栏
Help -> SSL Proxying -> Install Charles Root Certificate
- 找到
Charles Proxy.....
并点击 - 点击
Trust -> When using this certificate
,并勾选Always Trust
Android 安装证书
Android7 以后,系统不再信任用户级的证书,只信任系统级的证书,所以要抓包就需要把我们的 charles 证书安装至 Android 的系统目录中
准备
- 一台已 root 的手机
- Openssl
证书生成
将
Filddler
或者其他抓包程序的证书导出,一般为xxx.cer
或者xxx.pem
使用
openssl
的x509
指令进行cer
证书转pem
证书 和 用md5
方式显示pem
证书的hash
值# 1. 证书转换,已经是 pem 格式的证书不需要执行这一步 openssl x509 -inform DER -in xxx.cer -out cacert.pem # 2. 进行 MD5 的 hash 显示 # openssl 版本在 1.0 以上的版本的执行这一句 openssl x509 -inform PEM -subject_hash_old -in cacert.pem # openssl 版本在 1.0 以下的版本的执行这一句 openssl x509 -inform PEM -subject_hash -in cacert.pem
将第二条指令输出的类似
347bacb5
的值进行复制tips
:查看openssl
版本的指令openssl version
将 pem 证书重命名
使用上面复制的值(类似于347bacb5
)对 pem 证书进行重命名mv cacert.pem 347bacb5.0
将新证书放入手机系统证书目录(
/system/etc/security/cacerts
)需要拷贝至此目录必须拥有 root 权限
重启 Android 设备以生效
拷贝证书至/system/etc/security/cacerts
之后,重启手机就可以使证书生效了