使用 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, 如下图所示:

1

2.Mac 信任证书

打开 Keychain Access (钥匙串), 找到刚才安装的证书, 信任证书, 如图:

1

3.给 iPhone 安装证书

打开 Charles, 在 Help 选项中选择 SSL Proxying, 操作如图:

1

在弹出的对话框中, 可以看到 chls.pro/ssl

1

手机设置代理, 连接 Charles

一定要记住: 手机一定要设置代理, 否则安装证书会失败.

打开手机的 Safari 浏览器, 输入 chls.pro/ssl 这个地址.

1

设置信任证书, 如下图:

1

1

模拟任意网络

Charles 给我们提供了可以模拟任何网速的网络环境的条件.

1

打开 Throttle Settings, 然后 Enable Throttling

1

可以看到很多类型的网络供你选择.

Add Preset 可以自己自定义一个网络环境.

这个功能非常实用, 可以让我们模拟慢网络环境, 更好地调试自己的程序.

遇到麻烦

1.抓取 HTTPS 的请求出现错误

错误日志如下:

1
2
3
SSLHandshake: Received fatal alert: unknown_ca
Charles Proxy will even offer a helpful suggestion:
You may need to configure your browser or application to trust the Charles Root Certificate. See SSL Proxying in the Help menu.

1

这种错误一般是出现在 iOS10 上面.

请在关于本机里面再设置一次 证书信任设置, 即可.

1

2.系统升级后, 设置的 HTTPS 抓包失效

按照上述方法, 重新设置一次即可.

坚持原创技术分享!