一、配置前的基础准备
1.1 代理环境搭建
Charles作为中间人代理工具,需确保客户端设备(PC/手机)与Charles处于同一网络环境。Windows/macOS用户需在系统网络设置中配置HTTP代理,指向Charles运行的本地IP(如127.0.0.1)和端口(默认8888)。移动端设备需通过WiFi设置手动配置代理,部分Android机型可能需要安装证书才能解析HTTPS流量。
1.2 证书信任配置
HTTPS请求的解密依赖Charles根证书。首次启动时,Charles会自动生成CA证书,用户需在系统钥匙串(macOS)或浏览器证书管理中手动信任该证书。iOS设备需通过Safari访问chls.pro/ssl下载证书并完成安装,Android设备需在设置-安全-加密与凭据中导入证书文件。
二、核心配置步骤详解
2.1 基础域名过滤
方法一:Recording Settings过滤
- 打开Charles主界面,点击顶部菜单栏
Proxy > Recording Settings - 在
Include选项卡中点击Add,输入目标域名(如*.api.example.com) - 确保
Exclude选项卡为空,避免冲突规则 - 勾选
Enable Recording后,Charles将仅记录匹配域名的请求
方法二:Focus过滤模式
- 在请求列表中右键目标域名请求
- 选择
Focus,该域名请求将高亮显示 - 点击底部
Focus按钮进入专注模式,非焦点域名请求自动隐藏 - 此模式适合临时分析特定流量,无需修改全局配置
2.2 高级过滤技巧
通配符与正则表达式
- 使用
*.example.com匹配所有子域名 - 正则表达式如
^https?://(api|cdn)\.example\.com/.*可精准匹配多级子域名 - 在
Recording Settings的Include字段中直接输入正则表达式
端口与协议过滤
- 若需限制特定端口(如仅捕获8080端口),在
Include规则中添加:8080后缀 - 通过
Protocol下拉菜单可选择仅捕获HTTP/HTTPS/WebSocket等协议类型
2.3 组合过滤策略
多条件逻辑组合
- 在
Recording Settings中同时配置Include和Exclude规则 - 示例:
Include: *.api.example.com+Exclude: *.test.api.example.com - 规则优先级:
Include优先于Exclude,后配置的规则优先级更高
Map Local与Breakpoints联动
- 配置仅捕获特定域名后,可结合
Map Local功能修改返回内容 - 在请求列表右键选择
Map Local,指定本地文件路径实现接口模拟 - 通过
Breakpoints设置断点,实时修改请求/响应数据
三、常见问题解决方案
3.1 流量未捕获的排查
- 证书问题:检查设备是否信任Charles证书,HTTPS请求是否显示
CONNECT而非具体URL - 代理配置错误:确认客户端代理设置指向正确IP端口,移动端需关闭”移动数据”仅使用WiFi
- 域名匹配失败:使用
*.example.com而非example.com,避免遗漏子域名 - 防火墙拦截:临时关闭系统防火墙测试,或添加Charles到防火墙白名单
3.2 性能优化建议
- 限制日志量:在
View > Throttled Settings中设置带宽限制,避免大量日志导致界面卡顿 - 定期清理:使用
Clear Display按钮或设置自动清理规则(如保留最近1000条请求) - 多实例隔离:复杂项目可启动多个Charles实例,通过不同端口区分测试环境
3.3 自动化配置脚本
通过Charles脚本功能实现自动化过滤:
// 示例:自动添加域名过滤规则function onStartRecording() {var settings = Java.type("com.xk72.charles.components.settings.GlobalSettings");var recordingSettings = settings.getRecordingSettings();recordingSettings.getIncludePatterns().add("*.api.example.com");}
将脚本保存至Charles Scripts目录,重启后自动生效。
四、进阶应用场景
4.1 微服务架构调试
在分布式系统中,通过域名过滤可精准定位:
- 配置
Include: *.service-a.example.com分析服务A的调用链 - 结合
Sequence视图观察跨服务请求时序 - 使用
Structure视图按域名分组请求,快速识别性能瓶颈
4.2 移动端专项测试
针对混合应用(Hybrid App):
- 配置
Include: *.cdn.example.com分析静态资源加载 - 通过
Focus模式隔离Webview请求 - 结合
Save Session功能保存特定域名流量,便于后续复盘
4.3 安全审计实践
在渗透测试中:
- 配置
Exclude: *.internal.example.com避免捕获内网敏感流量 - 通过
SSL Proxying设置解密特定域名流量 - 使用
Repeat功能重放恶意请求,验证防护机制
五、最佳实践总结
- 分层过滤:先通过
Proxy Settings限制代理范围,再使用Recording Settings细化规则 - 版本控制:对复杂配置保存为
.chls会话文件,便于团队共享 - 监控告警:结合
Tools > Notify设置域名请求异常提醒 - 文档沉淀:对关键域名过滤规则添加注释(右键请求-
Edit Comment)
通过精准的域名过滤配置,Charles可帮助开发者从海量网络请求中快速定位目标流量,显著提升调试效率。建议根据实际场景组合使用多种过滤方式,并定期优化规则以适应项目演进。