抓包
Charles
1、安装
下载地址: Download a Free Trial of Charles • Charles Web Debugging Proxy (charlesproxy.com)
激活码地址: Charles 破解工具 (zzzmode.com)
2、设置 socket 代理
Proxy -> Proxy Setting 如图
用 Charles 针对抓安卓的包,所以在 Windows 下就不设置代理。同时使用 Socket 代理 而不是 http 代理,配置端口(这里为 8999)即可
3、抓取 HTTPS 包
Proxy -> SSL Proxying Settings…
匹配所有地址与端口 *:*
,对于双向验证的证书也可在这里设置。
3、Denying access from address not on ACL
要在 charles 允许设备,需要如下设置
然后添加一个 0.0.0.0/0 的 ip 即可抓取所有设备
Postern
1、安装 postern
下载地址: https://github.com/postern-overwal/postern-stuff/blob/master/Postern-3.1.2.apk
2、配置代理
用户名与密码加密类型可不填
注: 有个小坑,要保证电脑与手机连接的是同一个 Wifi 网络,点击 菜单 -> Help -> Local IP 可查看当前网络下 IP 如图,一般为 Wireless(笔记本),具体都要尝试一遍
3、配置规则
这里也要注意,在第一次配置的时候,点击保存后,Charles 会弹出对话框,点击右边 Allow 即可,如果没有出现,那么多半是代理 IP 没有配置好,这时候尝试多开关几次 VPN 与设置 Local IP 中的 IP 即可。
4、配置 SSL 证书
此时可以抓包,但抓取 HTTPS 则是 unknown,即未解密的,这时候就要配置 SSL 证书
安装方式 1
弹出安装提示,并非直接安装
访问 chls.pro/ssl 下载 安装(与 fd 类似)
安装方式 2
但要注意,在 Socket 代理下 可能无法下载证书,这时候 切换至 HTTPS 代理(同 FD 配置),然后下载证书安装也有可能会失败,则选择 Save Charles Root Certifcate,将证书推送(adb pull)到手机上,然后点击安装,或者到安全->加密与凭证 -> 从存储设备安装证书 -> CA 证书,选择导入到手机的证书即可。
2、电脑端也要安装证书,如图
点击 然后下一步即可
检测证书
由于 fd 与 charles 都是替换证书的,安装的证书都是用户下的,而非系统下(7.0 以上),一些 app 会检测证书,从而无法发送请求,这时候就需要将用户证书移动到系统证书下
系统证书路径 /etc/security/cacerts
用户证书路径 /data/misc/user/0/cacerts-added
命令
#挂载为可读写 将根路径挂载为可读写
mount -o rw,remount /
# 将当前目录下所有文件移动置系统证书路径下
cp * /etc/security/cacerts
不执行 mount -o rw,remount /
则会报 cp: /etc/security/cacerts/03f1f1d0.0: Read-only file system
或用 Root Explorer 将用户证书移动到系统证书路径下即可
补:有时候目录无法挂载为可读写(比如安卓 10 以上系统分区/system 挂载为只读),就可以使用 Magisk 的 Move Certificates 模块,将用户证书移动至系统证书路径下
大功告成
这时候就可以正常的抓到安卓对应的包了。
对比 FD 配置代理 与 Charles 和 Postern 组合
首先配置代理属于会话层,很容易获取到代理的 ip 与端口,检测到是否代理, 从而限制 app 使用,
而挂了 VPN 则是将在网络层中,不易被检测,同时能获取到应用层(HTTP)与传输层(TCP)等数据。
同时 FD 需要来回配置代理特别麻烦,而 Postern 只需要开启 VPN 与关闭即可。所以在 wifi 中就无需配置代理。