-
Notifications
You must be signed in to change notification settings - Fork 6
让 Charles 解析 HTTPS 请求:Windows/Chrome/macOS/iOS #94
Description
具体流程
在默认情况下,Charles 监听到的 HTTPS 请求都是乱码(body 部分),如果需要让 Charles 能够显示 HTTPS 请求的实际内容,就需要让 Charles 充当客户端和服务端的“中间人”,这样就能够看到 HTTPS 请求的实际内容了。
Windows + Charles 4.X
在 Charles 中点击菜单 Help → SSL Proxying → Save Charles Root Certificate,导出 Charles 的根证书至本地,记得在对话框中为证书文件命名。
如果导出的证书已经过期,则在 Charles 中点击菜单 Help → SSL Proxying → Reset Charles Root Certificate,确认后重新导出的证书就是以当前日期为起始日期的了。
Chrome
在 Chrome 中找到管理证书的地方,将刚才导出的证书导入到“受信任的根证书颁发机构”,让 Chrome 信任该证书。
接着再点击 Charles 中的菜单 Proxy → SSL Proxying Settings,在“SSL Proxying”标签中,勾选“Enable SSL Proxying”,在“Include”的“Location”中,添加一条“Host”为“*”,“Port”为“*”的记录,这样就能看到所有 HTTPS 请求的实际内容了。或者也可以将“Host”和“Port”设置为想要监听的主机名称和端口号,根据自己需求来就行。
然后在 Chrome 的 SwitchyOmega 扩展中,添加一个名为“Charles”的情景模式,代理协议为 HTTP,代理地址为 127.0.0.1,代理端口为 Charles 的 8888。
最后可以根据实际情况,决定是让所有网页请求都使用 Charles 这个情景模式,来监听所有 HTTPS 请求;或者在“auto switch”情景模式中,只对指定 URL 使用 Charles 这个情景模式,来监听特定网站的 HTTPS 请求。
注意:如果 Chrome 提示 您的连接不是私密连接 NET::ERR_CERT_AUTHORITY_INVALID,可能是 Charles 的证书到期了,按照上面的流程再配置一遍即可。
macOS
在 Charles 中点击菜单 Help → SSL Proxying → Install Charles Root Certificate,在弹出的对话框中输入系统密码以进入“钥匙串访问”。
在打开的窗口中,找到名字中包含“Charles Proxy”的证书,双击打开,展开“信任”,在“使用此证书时”一项右侧,选择“始终信任”,点击左上角的 X 关闭小窗口,并输入系统密码以保存更改,这样就可以监听本机的 HTTPS 请求了。
如果需要监听 Chrome 中的请求,需要做的额外操作和 Windows 一样,在 Chrome 的 SwitchyOmega 中添加 Charles 专属的情景模式即可。
iOS
为了监听 iOS 上的 HTTPS 请求,先让 macOS 和 iOS 接入同一个 WiFi 网络(还可以让电脑开启热点,把自己的网络分享给 iPhone),然后在 iOS 的 WiFi 设置中配置 HTTP 代理,地址填写 macOS 的 IP,端口填写 Charles 的 HTTP 监听端口。
然后用 iOS Safari 访问 https://chls.pro/ssl 这个地址(切记要用 Safari,不要用 Chrome 或其他浏览器),Safari 会提示你安装证书,安装即可。
然后依次进入 iOS 的 设置 → 通用 → 关于本机 → 证书信任设置,开启对 Charles 证书的信任。
完成上面的配置之后,就可以在 macOS 上的 Charles 中,看到 iOS 上的 HTTPS 请求的实际内容了。