Skip to main content

抓包

Charles

1、安装

下载地址: Download a Free Trial of Charles • Charles Web Debugging Proxy (charlesproxy.com)

激活码地址: Charles 破解工具 (zzzmode.com)

2、设置 socket 代理

Proxy -> Proxy Setting 如图

image-20210202045815609

用 Charles 针对抓安卓的包,所以在 Windows 下就不设置代理。同时使用 Socket 代理 而不是 http 代理,配置端口(这里为 8999)即可

3、抓取 HTTPS 包

Proxy -> SSL Proxying Settings…

image-20220119144140665

匹配所有地址与端口 *:* ,对于双向验证的证书也可在这里设置。

image-20220119144353270

3、Denying access from address not on ACL

要在 charles 允许设备,需要如下设置

image-20210517020819625

然后添加一个 0.0.0.0/0 的 ip 即可抓取所有设备

image-20210517020904361

Postern

1、安装 postern

下载地址: https://github.com/postern-overwal/postern-stuff/blob/master/Postern-3.1.2.apk

2、配置代理

image-20210202050134094

用户名与密码加密类型可不填

注: 有个小坑,要保证电脑与手机连接的是同一个 Wifi 网络,点击 菜单 -> Help -> Local IP 可查看当前网络下 IP 如图,一般为 Wireless(笔记本),具体都要尝试一遍

image-20210202050422857

3、配置规则

image-20210202050513312

这里也要注意,在第一次配置的时候,点击保存后,Charles 会弹出对话框,点击右边 Allow 即可,如果没有出现,那么多半是代理 IP 没有配置好,这时候尝试多开关几次 VPN 与设置 Local IP 中的 IP 即可。

image-20210202051719212

4、配置 SSL 证书

此时可以抓包,但抓取 HTTPS 则是 unknown,即未解密的,这时候就要配置 SSL 证书

安装方式 1

image-20210202051440984

弹出安装提示,并非直接安装

image-20210202051610186

访问 chls.pro/ssl 下载 安装(与 fd 类似)

安装方式 2

但要注意,在 Socket 代理下 可能无法下载证书,这时候 切换至 HTTPS 代理(同 FD 配置),然后下载证书安装也有可能会失败,则选择 Save Charles Root Certifcate,将证书推送(adb pull)到手机上,然后点击安装,或者到安全->加密与凭证 -> 从存储设备安装证书 -> CA 证书,选择导入到手机的证书即可。

2、电脑端也要安装证书,如图

image-20210517023044653

点击 然后下一步即可

检测证书

由于 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 将用户证书移动到系统证书路径下即可

tip

补:有时候目录无法挂载为可读写(比如安卓 10 以上系统分区/system 挂载为只读),就可以使用 Magisk 的 Move Certificates 模块,将用户证书移动至系统证书路径下

大功告成

这时候就可以正常的抓到安卓对应的包了。

对比 FD 配置代理 与 Charles 和 Postern 组合

首先配置代理属于会话层,很容易获取到代理的 ip 与端口,检测到是否代理,从而限制 app 使用,

而挂了 VPN 则是将在网络层中,不易被检测,同时能获取到应用层(HTTP)与传输层(TCP)等数据。

同时 FD 需要来回配置代理特别麻烦,而 Postern 只需要开启 VPN 与关闭即可。所以在 wifi 中就无需配置代理。