《Charles 抓取手机 HTTPS 包》

《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 手机设置代理

  1. 在手机 WiFi 设置中(华为等部分机型需先「忘记网络」再重新连接,才会出现高级选项);
  2. 在「高级选项 -> 代理」选择手动(Manual);
  3. 服务器主机名填第 3.2 步查到的 IP,服务器端口填 8888;
  4. 保存后回到电脑 Charles,弹出的连接提示选择 Allow / 允许。

完成后,手机的流量即通过 Charles 代理上网。

3.4 抓取 HTTPS 流量

  1. 手机浏览器访问 http://charlesproxy.com/getssl 下载并安装 Charles 根证书;
  2. iOS 需额外到「设置 -> 通用 -> 关于本机 -> 证书信任设置」中开启信任;
  3. 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 参考文档

阅读 — · 全站 —
🎸 我的歌单 0 首