《Charles 抓取手机 HTTPS 包》
1 简介
通过 Charles 把手机流量代理到电脑再转发,即可在电脑上查看手机上所有请求/响应的明文数据(含 HTTPS 解密)。适合移动端联调与接口抓包。
2 前提
1) 电脑安装好 Charles;
2) 手机与电脑连接同一个 WiFi(同一局域网)。
3 操作步骤
3.1 打开 Charles
启动后确认在监听状态(默认端口 8888)。
3.2 查看电脑 IP
Mac(网卡名可能是 en0 / eth0):
ifconfig en0
输出中 inet 192.168.1.23 即为电脑 IP:
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.1.23 netmask 0xffffff00 broadcast 192.168.1.255
Windows:打开命令提示符执行 ipconfig 查看 IPv4 地址。
3.3 手机设置代理
- 在手机 WiFi 设置中(华为等部分机型需先「忘记网络」再重新连接,才会出现高级选项);
- 在「高级选项 -> 代理」选择手动(Manual);
- 服务器主机名填第 3.2 步查到的 IP,服务器端口填
8888; - 保存后回到电脑 Charles,弹出的连接提示选择 Allow / 允许。
完成后,手机的流量即通过 Charles 代理上网。
3.4 抓取 HTTPS 流量
- 手机浏览器访问 http://charlesproxy.com/getssl 下载并安装 Charles 根证书;
- iOS 需额外到「设置 -> 通用 -> 关于本机 -> 证书信任设置」中开启信任;
- Charles
Proxy -> SSL Proxying Settings -> SSL Proxying勾选并添加域名(或*抓全部)。
3.5 过滤关心的请求
在 Charles 左上角 Filter 输入框输入目标域名,即可只显示该域的请求响应,例如输入 example.com。
3.6 导出 HAR 文件
File -> Export Session,文件类型选择 HTTP Archive / .har,即可导出交给同事或压测工具分析。
4 常见问题
4.1 手机连不上代理
- 确认手机与电脑同一网段、IP 没填错;
- 检查电脑防火墙是否放行 8888;
- 换流量时需重新连接 WiFi 并重新设置代理。
4.2 证书信任后仍显示 SSL 错误
- 到手机的证书信任设置里确认已完全信任该证书;
- 确认 Charles 的 SSL Proxying 已勾选且包含目标域名;
- 部分 App 做了证书校验(SSL Pinning),需在 Charles 中启用对应绕过插件,或考虑其它方案。
5 参考文档
阅读 —
·
全站 —