版本
- macOS Sierra 10.12.6
- Charles V4.2
- iPhone 11.0.3
得到本机 IP 地址
三种方法,任取其一。
- 系统偏好设置 -> 网络 -> Wi-Fi
- Charles -> Help -> Local IP Address
- 终端命令
ifconfig | grep -A 5 en0
Charles 与手机的连接
Mac 与 iPhone 处于同一 Wi-Fi 网络。
手机的设置
- 手机 – 设置 – 无线局域网 – 点击连接的 Wi-Fi
- 点击「配置代理」
- 配置代理 – 手动代理
- 配置代理 – 服务器,填写「本机 IP 地址」
- 配置代理 – 端口,填写 「8888」,这是 Charles 的默认端口,如果修改了 Charles 的端口,那就填写实际的端口
- 保存
Charles 会弹框让你选择是否允许连接,如果要抓包的话,需要选择 Allow。
这个时候手机进行 HTTP 的访问就可以在 Charles 看到了。
抓包 HTTPS
如果手机里面访问的 HTTPS 协议的,Charles 会显示错误 unknown,错误信息「SSL Proxying not enabled for this host: enable in Proxy Settings, SSL locations」
抓取 HTTPS 的内容要在 Charles 与手机已经连接成功,并且 Charles 是打开状态下进行以下设置。
Mac 安装证书
Charles – Help – SSL Proxying – Install Charles Root Certificate
手机安装证书
Charles – Help – SSL Proxying – Install Charles Root Certificate on a Mobile Device
弹框显示安装地址,我这里显示的是 「chls.pro/ssl」,手机访问此地址后进行证书的安装。
证书安装完成后,在「设置 – 通用 – 关于本机 – 证书信任设置 – 针对根证书启用完全信任」中开启 Charles…
Charles 设置 Proxy
配置项在 Charles – Proxy – SSL Proxying Settings…
勾选 Enable SSL Proxying,点击 Add,填写 Host(你需要抓取的地址)和 Port(一般填写 443)。Host 可以使用通配符 ,我为了简单省事 Host 的填写为了 ,OK 后,如果没有自动勾选刚才 Add 增加的 Location,记得手动勾选上,然后再次 OK 就完成了。
注意
如果手机没有关闭代理的话,当 Charles 软件关闭的时候,手机访问网络会出现故障