为了能让 Charles 代理 HTTPS,之前到网上看了很多教程,曾经自己捣鼓过,不过一直都没能成功,索性就不弄了。
这两天为了debug,不得不代理 https 的请求,经过半天的折腾竟然成功了。为了让以后自己不那么费劲,就写了这篇文章总结。
本文环境:
安装证书
安装成功后,能在系统 钥匙串访问 中找到所安装的证书:
成功安装
此时证书有可能是不被信任的状态,我们通过双击将其更改成 始终信任:
始终信任
在 Charles 中配置代理规则:
配置代理
将 charles 中的代理规则复写到 SwitchyOmega 的匹配规则里:
设置代理规则
为了让 https 生效,需选择 Socket5 代理协议,端口填写
8889
上述 3 步操作已经完成 charles 的代理工作,剩下的就是对请求进行开启代理。
以访问百度(https://www.baidu.com)为例,打开 charles 后捕获到的请求如下:
捕获请求发现 unknown 请求
注意截取的请求内容都是 <unknown>
,而且图标是一个 加锁 的图标。
通过右键 Enable SSL Proxying,让我们开启对百度首页的 HTTPS 代理:
开启 SSL 代理
再次访问百度首页,就能看到请求现在成功被代理了,图标也从加锁状态变更成 互联网 图标了:
成功代理 HTTPS
注意,如果你通过右键 Enable SSL Proxying 后,刷新提示的是链接不安全:
链接不安全
那么也不需要担心,有可能是证书安装失效导致的,将证书删除后重新安装一遍,就能解决了。(参考第一步的操作)
上述我们通过 Enable SSL Proxying 针对每个网站开启 SSL 代理,其实就是添加了一条匹配规则而已:
添加的一条匹配规则
我们还可以使用通配符,比如对淘宝域名下的页面都开启 SSL 代理:
通过通配符开启代理
这样访问淘宝页面后,就能看到 *.taobao.com
的资源进行代理了:
正常访问指定页面
REFERENCE
参考文档