使用 Charles
概要
Charles 是 Mac 上面比较好用的抓包工具.
在使用微信登录 SDK 的时候, 我想看看微信请求的内容, 以及其授权过程, 发现只要连接 Charles, 跳转到微信之后无法打开微信的授权登录页面, 提示网络不可用.
经过研究, 是需要使用 Charles 配置 HTTPS, 配置完成后, 就可以随心所欲了.
所以, 今天跟大家分享一下 Charles 使用的两个点:
- Charles 的 HTTPS 配置.
- 使用 Charles 模拟(慢)网络.
工具和系统
- iPhone: iOS 10.3.
- Mac OS: 10.12.5.
- Charles: 4.0.2.
抓取 HTTPS 请求
1.Mac 安装证书
打开 Charles, 在 Help 选项中选择 SSL Proxying, 如下图所示:
2.Mac 信任证书
打开 Keychain Access (钥匙串), 找到刚才安装的证书, 信任证书, 如图:
3.给 iPhone 安装证书
打开 Charles, 在 Help 选项中选择 SSL Proxying, 操作如图:
在弹出的对话框中, 可以看到 chls.pro/ssl
手机设置代理, 连接 Charles
一定要记住: 手机一定要设置代理, 否则安装证书会失败.
打开手机的 Safari 浏览器, 输入 chls.pro/ssl
这个地址.
设置信任证书, 如下图:
模拟任意网络
Charles 给我们提供了可以模拟任何网速的网络环境的条件.
打开 Throttle Settings, 然后 Enable Throttling
可以看到很多类型的网络供你选择.
Add Preset 可以自己自定义一个网络环境.
这个功能非常实用, 可以让我们模拟慢网络环境, 更好地调试自己的程序.
遇到麻烦
1.抓取 HTTPS 的请求出现错误
错误日志如下:
1 | SSLHandshake: Received fatal alert: unknown_ca |
这种错误一般是出现在 iOS10 上面.
请在关于本机里面再设置一次 证书信任设置, 即可.
2.系统升级后, 设置的 HTTPS 抓包失效
按照上述方法, 重新设置一次即可.