为什么需要Charles解密HTTPS
平时开发或调试移动端App时,经常会遇到想看某个请求的具体内容,比如登录接口传了哪些参数、图片资源从哪加载的。但现在很多网站和App都用了HTTPS加密,直接抓包看到的都是乱码。这时候Charles的SSL代理功能就派上用场了,它能帮你自动解密HTTPS流量,像看HTTP一样清晰。
安装Charles并开启代理
先去官网下载Charles,安装后打开,默认会监听本机的8888端口。手机和电脑连同一个Wi-Fi时,在手机Wi-Fi设置里手动配置代理,服务器填电脑的局域网IP,端口写8888。打开浏览器访问一个网页,如果Charles的Structure面板有请求记录,说明代理成功了。
安装Charles证书才能解密
光有代理还不够,要解密HTTPS还得装证书。在手机浏览器里访问 chls.pro/ssl,会提示下载一个描述文件或证书。iOS需要在“设置-通用-描述文件”里信任,Android则可能要在“设置-安全-从存储设备安装”中操作。别忘了在系统设置里把Charles的证书加入到“受信的凭据”里,不然还是解不开。
配置App允许HTTP明文传输(必要时)
有些App比如安卓7.0以上,默认不信任用户安装的证书,这时候得改App的网络配置。在res/xml目录下创建network_security_config.xml:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<certificates src=\"system\" />
<certificates src=\"user\" />
<trust-anchors>
</debug-overrides>
</network-security-config>然后在AndroidManifest.xml里加上:
<application
android:networkSecurityConfig=\"@xml/network_security_config\"></application>开启Charles自动解密功能
进入Charles顶部菜单Proxy → SSL Proxying Settings,在SSL Proxying选项卡里勾选“Enable SSL Proxying”。然后点击Add,填写你想监听的域名和端口,比如 api.example.com:443,或者偷懒直接写 *:443 解密所有HTTPS流量。注意别长期开全量解密,会影响性能也容易被发现。
实战:抓取微信小程序API
举个例子,你想看看某个小程序调了哪些后台接口。手机装好Charles证书,代理配好,打开小程序开始刷页面。Charles里会不断出现新的HTTPS请求,一开始是锁图标,点右键选择“Enable SSL Proxying”,之后就能看到明文的JSON数据了。注意有些小程序用的是wss(加密WebSocket),也可以同样方式解密。
常见问题处理
如果某些网站还是显示乱码,检查是否漏加了域名到SSL Proxying列表。另外部分App做了证书绑定(Certificate Pinning),这种就得用更高级的方法绕过,比如用Frida注入。不过大多数普通应用,Charles这套流程已经够用了。
","seo_title":"Charles自动解密HTTPS教程 - 智享教程网","seo_description":"手把手教你使用Charles配置SSL代理,自动解密HTTPS流量,适用于App调试与接口分析,支持iOS和Android。","keywords":"Charles自动解密,Charles HTTPS解密,Charles抓包教程,SSL代理配置,Charles证书安装"}