Charles Proxy
Charles
付费抓包工具,也是最常用的。
基础使用
- 默认端口8888
- [Proxy]-[SSL Proxy Settings]-[SSL Proxying],添加location。
- 访问 [Help]-[SSL Proxying]-[Install Charles Root Certificate on a Mobile Device or Remote Browser],找到代理地址和端口。
注: 如果response中文显示乱码,需要确保本地已安装证书。[Help]-[SSL Proxying]-[Install Charles Root Certificate]即可。
注:在华为手机,需要把证书文件扩展名从pem改成crt。
抓包ROOT的安卓客户端
借助夜神模拟器,模拟rooted安卓设备上客户端的抓包。 主要步骤:
- 复制Charles根证书到系统证书目录
- 在模拟器设置代理为Charles地址
获取 Charles ROOT证书
# 获得charles证书的哈希值
openssl x509 -inform PEM -subject_hash_old -in charles-root-ca-win10.pem | head -1
# 重命名证书并复制到模拟器
cp charles-root-ca-win10.pem da19f3e2.0
模拟器准备和操作
# 连接模拟器
adb connect 127.0.0.1:62001
adb shell
#获取超级用户权限
su
#修改system目录读写权限
mount -o remount,rw /system
#将安卓共享目录中的证书文件复制到系统证书目录中去
cp /sdcard/Download/da19f3e2.0 /system/etc/security/cacerts/
#开启证书权限
chmod 644 /system/etc/security/cacerts/da19f3e2.0
参考链接:
安卓客户端代码设置 - 可选
限制:
从Android 7开始,需要修改app配置信任用户证书,才能显示HTTPS内容。
如果targets API为24+或应用使用了certificate pinning(使用okhttp等),也可能不工作。
步骤如下:
在应用工程添加文件 res/xml/network_security_config.xml:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
然后添加到应用的manifest文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application android:networkSecurityConfig="@xml/network_security_config" >
...
</application>
</manifest>
Mac Chrome
钥匙串访问 - Charles Proxy CA - 信任 - 使用此证书时下拉列表选择"始终信任"
Mock Response
- 方式1: Tools - Rewrite 增加重写规则
- 方式2: Proxy - Enable Breakpoints, Proxy - Breakpoints Settings
- 方式3: Map Local 使用本地文件替换响应