使用 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之后,重启手机就可以使证书生效了