1. Charles下载地址:https://www.charlesproxy.com/
2. Charles配置
help -> ssl proxying -> install charles root certificate -> 将所有证书放入下列存储 (除了不要勾选个人和不受信任的证书以外,都可勾选)
导入证书,电脑安装ssl证书,如果已经安装就忽悠,最新版默认已经安装。
proxy -> proxy settings -> 勾选enable socks proxy
同时查看http proxy端口,默认8888(可自己定义),手机设置代理端口时需要。
proxy -> ssl proxy settings -> ssl proxying -> enable ssl proxying
add添加host和post,比如分别为* 和* ,表示全部。
help -> ssl proxying -> install charles root certificate on a mobile device or remote browser
会弹出手机需要的代理ip和端口,和手机需要下载安装的证书
手机设置指定的代理ip和端口
以上设定完成后,就可以charles中捕获手机请求了,第一次连接的时候charles会弹出确认提示框,选择 allow 就好了
手机打开浏览器 输入该网址:chls.pro/ssl ,安装证书
3. 如果是Android7.0以上的手机,可能还会遇到抓取的数据是unknown的问题,原因是Android7.0添加了网络新的策略,默认只接受系统的证书。
解决方法是App开发者添加网络配置,如下所示:
直接电脑输入网址 chls.pro/ssl ,下载好证书文件,如charles-proxy-ssl-proxying-certificate.pem
Cygwin64打开窗口输入 openssl x509 -subject_hash_old -in charles-proxy-ssl-proxying-certificate.pem
注:如果是cer证书,则需要转换pem openssl x509 -inform DER -in xxx.cer -out xxx.pem
输出第一行:5febeb2b 即为md5值
将charles-proxy-ssl-proxying-certificate.pem重命名为:<8位md值>.<0>,这里的md5值为上一步得到的,那么证书名称就是:5febeb2b.0
然后将修改后的证书导入手机根目录 /system/etc/security/cacerts (需要chmod 644 权限),记得要把5febeb2b.0权限设置为root用户组,手机重启搞定!