Charles 使用指北
证书安装
电脑安装
macOS:Menu Bar(菜单栏) -> Help -> SSL Proxying -> Install Charles Root Certificate
windows:同上。在随后的证书对话框中进入证书安装向导,到达下图中证书存储时,通过自定位存储位置(浏览按钮),存储到 “受信任的根证书颁发机构”

本文后续以 macOS 4.6.2 版本为主,进行介绍
手机安装
先使用系统设置内的http代理访问 chls.pro/ssl 或 http://ssl.charles
下载证书文件并安装完成后再关闭系统设置内的代理,使用 postern 内的 socks5
iphone安装后需要额外设置对证书信任
证书失效
chls 证书的时效性只有一年,chls 应用的证书时效需要手动进行重置
使用chls内的重置功能并重新执行安装流程。以下为macOS重置证书的位置
Menu Bar -> Help -> SSL Proxying -> Reset Charles Root Certificate...
常用配置项
- 启用 http 代理:Menu Bar -> Proxy -> Proxy Settings... 的 Proxies 标签页,勾选 Enable transparent HTTP proxying
- 停用缓存: chrome devtools 的 network 标签页中有 disable cache(停用缓存)。在 chls 的 Menu Bar -> tools -> No Caching... 也有相似的功能
- SSL代理: Menu Bar -> Proxy -> SSL Proxy Settings... 的 SSL Proxy 标签页增加 Host
*Port443及 Host*Port80
工具栏简介
共有如下几个按钮。hover 会提示按钮功能

这些按钮的功能分别是
- 清除记录窗口内的请求记录
- 开启与暂停记录
- 是否代理ssl请求
- 弱网
- 断点
- 发送请求
- 请求重发
- 请求校验
- 常用工具
- 配置项
Structure视图
将请求按照域名归类
此时,在非具体请求的层级下,信息窗口查看到的内容不同(右侧信息窗口中的标签页)
- 域名层级:Overview、Summary、Chat 三个标签页
- Overview:该域名下的请求信息,请求数量,时间,请求流量等
- Summary:该域名下的请求地址列表 与 列表结尾的统计
- Chat:该域名下的请求瀑布图
常用功能:域名框底部存在filter,用于对域名进行过滤

弱网
与Chrome DevTools ->Network -> No Trottling(Preserve log 同级,节流功能) 类似的模拟弱网环境功能
启动弱网功能 Menu Bar -> Proxy -> Start Throttling 或 工具栏中的弱网按钮(龟壳)
设置弱网 Menu Bar -> Proxy -> Throttle Settings...
- Only for selected hosts 设置弱网生效域名,不设置默认开启弱网后对所有域名都生效
- Throttle preset 选择内置的弱网配置,如 3G/4G 等
- 也可自行配置上下行速率 MTU 等
接口修改与重发
可以对指定请求进行修改后重新发送
- 不修改直接重发 目标请求右键 -> Repeat
- 修改请求内容并重发 目标请求右键 -> Compose
断点
通过对指定请求增加断点,可对该请求进行修改并发送
启用断点功能 Menu Bar -> Proxy -> Enable Breakpoints 或 工具栏中的断点按钮
对目标请求进行断点 目标请求右键 -> Breakpoints

Before request:此时再次请求断点接口,会触发与 Session 同级的 Breakpoints 标签页。目标请求在该标签页中断下,可对请求内容(如请求api,方法,请求头,请求体等)进行修改。之后通过 Execute 按钮继续发送该请求,或 Abort 按钮终止该请求对发送
After reponse:在获取该请求的响应时,同样也会触发断点,可以对响应内容进行修改。之后通过 Execute 按钮继续发送该请求,或 Abort 按钮终止该请求对发送
响应内容替换
可配置响应替换规则,当请求符合规则时,charles会按照配置,将该请求的响应内容替换为本地资源文件
在逆向加密 js 时,在 需要对指定代码插桩;加密js请求的响应会变化;ast去混淆代码测试 等情况下,常使用此功能
若请求地址会动态变化,如时间戳等,charles 可配置模糊匹配的方法,相比 chrome 的 overrides 更加灵活、方便
- 配置替换规则位置: Menu Bar -> Tools -> Map Local... 或 目标请求右键 -> Map Local...
- 使用 Add 新增替换规则
- 配置替换的 协议、域名、端口、api、query参数
- 选择本地资源路径,作为响应内容进行替换