抓包
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 中就无需配置代理。