踩坑无数后的最全的charles抓包app安装教程
一、安装:
1、建议安装使用最新版,官方下载地址 https://www.charlesproxy.com/download
2、安装完成之后,需要破解:
破解方法
- 打开破解地址:https://www.zzzmode.com/mytools/charles/
- 输入RegisterName(此名称随意,用于显示 Registered to xxx),点击生成计算出注册码,打开Charles输入注册码即可
二、配置环境
开启Charles http代理
-
设置Charles代理。如果只是抓取手机端APP网络请求,可以将此前设置的电脑代理勾去掉(每次启动Charles都是默认开启的)
-
激活http代理功能。进入Proxy->Proxy Setting,设置http proxy代理端口:8888(一般默认设置为这个)
设置SSL代理:
Proxy–> SSL Proxying Setting–> Enable SSL Proxying -->Add。https访问的端口号都是443。在弹出的表单中Host填写域名,Port填443,*表示所有域名‘
电脑防火墙设置:
设置允许Charles通过防火墙。
三、Android 7.0 之后抓取HTTPS数据出现unknown 和证书无效的解决方案
使用抓包软件(以 Charles 为例)抓取APP的 https
请求时,Android和Charles都正确安装了证书却出现抓包失败,报错:Client SSL handshake failed: An unknown issue occurred processing the
certificate (certificate_unknown) 原因: Android7.0 之后默认不信任用户添加到系统的CA证书
解决办法:
1、将抓包软件的证书安装成系统证书(手机需要ROOT)
系统证书目录:/system/etc/security/cacerts/
其中的每个证书的命名规则如下:
<Certificate_Hash>.<Number>
文件名是一个Hash值,而后缀是一个数字。
文件名可以用下面的命令计算出来:
openssl x509 -subject_hash_old -in <Certificate_File>
后缀名的数字是为了防止文件名冲突的,比如如果两个证书算出的Hash值是一样的话,那么一个证书的后缀名数字可以设置成0,而另一个证书的后缀名数字可以设置成1
2、下载Charles证书到电脑上,文件格式为.pem文件
Linux系统下可以之间使用openssl 命令
window系统需要使用工具才能执行openssl命令
下载之后之间解压,然后配置一下环境变量path就可以用了。
1、打开cmd命令行
输入命令: openssl x509 -subject_hash_old -in C:\Users\u\Desktop.pem
执行完之后得到证书的Hash
然后把证书名由Charles.pem更换为c2237ceb.0
把证书安装到手机系统证书目录下(手机需要root)
执行以下adb命令:
adb root
adb disable-verity
adb reboot
adb root
adb remount
adb push C:\Users\u\Desktop\c2237ceb.0 /system/etc/security/cacerts/
打开手机设置——密码与安全——系统安全——加密与凭据——信任的凭据——系统栏
滑到最底下,倒数第二个,有charles证书,代表证书安装至系统证书成功。
四、手机端Wifi添加代理
手机与电脑连接同一网段的wifi,进入wifi连接设置,设置代理为手动,填写主机名与端口号,
主机名可以打开charles,获取IP地址,端口号为第二步中设置的端口号。
完成以上操作后,charles就可正常获取到手机app的所有接口了