在日常的移动端开发、接口调试或逆向分析中,我们经常需要抓取移动 App 或微信小程序的 HTTP/HTTPS 请求。Charles 是一款经典强大的代理抓包工具,凭借简单的界面和强大的功能,成为了 macOS 抓包的首选工具之一。
本文将详细介绍 Charles 的安装、证书配置、手机抓包设置、HTTPS 解密,以及应对 App 启用 SSL Pinning 无法抓包的解决方案。
Charles 是一款基于代理的网络抓包工具,支持 HTTP/HTTPS、WebSocket 等协议,能实时拦截、查看、修改请求与响应。
特点如下:
Help → SSL Proxying → Install Charles Root Certificate
Charles Proxy CA
证书确保手机和 Mac 在同一个 Wi-Fi 下
ifconfig
查看,如 192.168.1.88
)手机 Safari 浏览器访问:
http://chls.pro/ssl
若打不开,使用:
http://<你的Mac IP>:8888
跳转描述文件安装界面 → 安装 Charles 证书
打开 设置 → 通用 → 关于本机 → 证书信任设置 → 启用「Charles Proxy CA」
打不开链接,可以用微信等手动传输到手机,保存到本地,再点击安装即可。
仅安装证书不能解密 HTTPS,需要手动指定要解密的域名:
Charles 菜单栏 → Proxy → SSL Proxying Settings…
点击 Add
填入 Host(域名或通配符)和 Port:
示例配置:
Host | Port |
---|---|
*.weixin.qq.com |
443 |
*.taobao.com |
443 |
*.alipay.com |
443 |
api.xxx.com |
443 |
添加完成后即可解密 HTTPS 请求。
在 Charles 中观察:
问题 | 解决办法 |
---|---|
抓不到 HTTPS 内容 | 检查是否添加域名到 SSL Proxying Settings |
手机访问不了证书地址 | 尝试 http:// ,确认 Charles 正在运行并手机代理正确 |
App 请求依然加密不可见 | 可能该 App 启用了 SSL Pinning |
Charles 无法弹出设备确认框 | 检查 Mac 防火墙设置,关闭防火墙或允许 Charles 网络访问 |
很多大型 App(如微信、支付宝、抖音)会启用 SSL Pinning(证书锁定),即便你安装了 Charles 的证书,也无法中间人解密。
场景 | 方法 |
---|---|
微信 App | 使用 Android 模拟器 + 低版本微信进行抓包 |
Android App | 使用 Frida + SSL Pinning Bypass 脚本 |
开发小程序调试 | 使用微信开发者工具代替抓包调试 |
Android 7 以上系统默认不再信任用户安装的证书用于 App HTTPS 通信。
Charles 是开发调试过程中不可或缺的网络抓包利器,尤其在移动端调试中帮助巨大。通过正确安装证书、配置代理、设置解密域名,即可实现 HTTPS 流量透明可视化。
但随着安全性提升,越来越多 App 使用 SSL Pinning、系统证书校验等方式阻止中间人抓包,对此我们也可以使用模拟器、Frida 等进阶手段继续探索。