1.下载和安装
参考文档:
https://www.charlesproxy.com/download/
命令行安装:
(1) 安装GPG公钥
wget -q -O - https://www.charlesproxy.com/packages/apt/PublicKey | sudo apt-key add
(2) 添加charles仓库到源列表sources.list
sudo sh -c 'echo deb https://www.charlesproxy.com/packages/apt/ charles-proxy main > /etc/apt/sources.list.d/charles.list'
(3)升级源列表sources, 安装charles
sudo apt-get update
sudo apt-get install charles-proxy
2.破解
破解网址:
https://www.zzzmode.com/mytools/charles/
(1) 从以上网址获取破解的charles.jar文件
(2) Charles安装目录下的charles.jar文件替换成破解的charles.jar
安装目录:
macOS: /Applications/Charles.app/Contents/Java/charles.jar
Windows: C:\Program Files\Charles\lib\charles.jar
Ubuntu: /usr/lib/charles-proxy/charles.jar
Ubuntu下文件替换:
sudo cp charles.jar /usr/lib/charles-proxy
Ubuntu cp命令
https://blog.csdn.net/lianchao668/article/details/8097113
3.HTTP & HTTPS抓包
3.1 HTTP抓包
手机连接xx.xx.xx.xx:8889代理后,即可抓取HTTP的包
3.2 HTTPS抓包(Android 7.0以下)
此时还不能抓HTTPS的包, 需要安装证书.
3.2.1 下载和安装SSL证书
(1) 手机连接charles代理
(2) 手机下载证书
Charles → Help → SSL Proxying → Install Charles Root Certificate on a Mobile Device or Remote Browser
此时会弹出一个提示窗
在手机QQ浏览器输入chls.pro/ssl
,下载charles-proxy-ssl-proxying-certificate.pem
证书
(3) 安装证书
设置 -> 密码、隐私与安全 -> 系统安全 -> 加密与凭据 -> 从SD卡安装 → 选择下载的pem证书
证书安装完后, 就可以抓取HTTPS的包了(仅对于Android 7.0以下设备)
4 HTTPS抓包(Android 7.0及以上)
对于Android 7.0及以上的设备HTTPS抓包, 除以上步骤外, 还要额外做一些处理.
主要有2种方式:
(1) ROOT方式
(2) 非ROOT方式
4.1 ROOT方式抓包
4.1.1 手机ROOT
以小米手机为例. 其他三方机型找官方文档步骤类似.
(1) 手机解锁(只能Windows平台)
参考:
http://www.miui.com/unlock/download.html
1.进入“设置 -> 开发者选项 -> 设备解锁状态”中绑定账号和设备
2.手动进入Bootloader模式(关机后,同时按住开机键和音量下键)
3.下载解锁工具,解压zip包,运行miflash_unlock.exe
4.通过USB连接手机,点击 “解锁”按钮
(2) 下载线刷包
根据机型查找名称:
设备打包信息 → 当前打包分支信息, 机型Redmi Note 8对应的名称为ginkgo
下载线刷包:
下载包 → 线刷包,选择Dev&Alpha和Root,查找ginkgo对应的包,Rom Type选Root, 下载得到线刷包
(3) 执行刷机脚本
线刷包解压后得到如下脚本文件:
flash_all.bat / flash_all.sh (刷所有文件,清除用户数据,清除内置存储数据)
flash_all_except_data_storage.bat / flash_all_except_data_storage.sh (刷升级文件,保留用户数据和内置存储数据)
flash_all_except_storage.bat / flash_all_except_storage.sh (刷升级文件,清除用户数据,保留内置存储数据)
Windows环境运行bat脚本, Ubuntu环境运行sh脚本
手机进入fastboot模式(关机后长按开机+音量下键), 运行./flash_all.sh
直到运行完成, 一般会很快.
至此, 手机ROOT完成, 在设置中可以看到版本信息为开发版.
4.1.2 系统证书目录安装SSL证书
前面步骤已经介绍了SSL下载和安装过程.
接下来需要额外做的就是将SSL证书安装到系统证书目录.
(1) 将charles-proxy-ssl-proxying-certificate.pem证书文件上传pull到电脑端.
(2) 运行命令openssl x509 -subject_hash_old -in charles-proxy-ssl-proxying-certificate.pem, 生成md5(第一行数字即为md5)
(3) 将pem证书文件更名为< md5>.0
(4) 将更名后的文件push到手机目录: sudo adb push < md5>.0 /system/etc/security/cacert
如果出现权限或只读问题,则执行adb root命令:
adb root
adb disable-verity
adb reboot
adb root
adb remount
检查证书是否安装成功:在 设置 → 安全 → 加密与凭据 → 信任的凭据 可以看到.
至此Android 7.0及以上的设备都可以抓取所有APP的HTTPS请求了.
4.2 非ROOT方式抓包
这种方式只能抓取当前APP的HTTPS请求.
(1) 在AndroidManifest.xml文件中配置android:networkSecurityConfig属性
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>
(2) 创建并配置res/xml/network_security_config.xml文件
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" overridePins="true" /> <!--信任系统证书-->
<certificates src="user" overridePins="true" /> <!--信任用户证书-->
</trust-anchors>
</base-config>
</network-security-config>
然后重新打包安装抓包就可以了.