Charles配置只抓某个域名下的包:精准流量捕获指南

一、配置前的基础准备

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过滤

  1. 打开Charles主界面,点击顶部菜单栏Proxy > Recording Settings
  2. Include选项卡中点击Add,输入目标域名(如*.api.example.com
  3. 确保Exclude选项卡为空,避免冲突规则
  4. 勾选Enable Recording后,Charles将仅记录匹配域名的请求

方法二:Focus过滤模式

  1. 在请求列表中右键目标域名请求
  2. 选择Focus,该域名请求将高亮显示
  3. 点击底部Focus按钮进入专注模式,非焦点域名请求自动隐藏
  4. 此模式适合临时分析特定流量,无需修改全局配置

2.2 高级过滤技巧

通配符与正则表达式

  • 使用*.example.com匹配所有子域名
  • 正则表达式如^https?://(api|cdn)\.example\.com/.*可精准匹配多级子域名
  • Recording SettingsInclude字段中直接输入正则表达式

端口与协议过滤

  • 若需限制特定端口(如仅捕获8080端口),在Include规则中添加:8080后缀
  • 通过Protocol下拉菜单可选择仅捕获HTTP/HTTPS/WebSocket等协议类型

2.3 组合过滤策略

多条件逻辑组合

  1. Recording Settings中同时配置IncludeExclude规则
  2. 示例:Include: *.api.example.com + Exclude: *.test.api.example.com
  3. 规则优先级:Include优先于Exclude,后配置的规则优先级更高

Map Local与Breakpoints联动

  • 配置仅捕获特定域名后,可结合Map Local功能修改返回内容
  • 在请求列表右键选择Map Local,指定本地文件路径实现接口模拟
  • 通过Breakpoints设置断点,实时修改请求/响应数据

三、常见问题解决方案

3.1 流量未捕获的排查

  1. 证书问题:检查设备是否信任Charles证书,HTTPS请求是否显示CONNECT而非具体URL
  2. 代理配置错误:确认客户端代理设置指向正确IP端口,移动端需关闭”移动数据”仅使用WiFi
  3. 域名匹配失败:使用*.example.com而非example.com,避免遗漏子域名
  4. 防火墙拦截:临时关闭系统防火墙测试,或添加Charles到防火墙白名单

3.2 性能优化建议

  1. 限制日志量:在View > Throttled Settings中设置带宽限制,避免大量日志导致界面卡顿
  2. 定期清理:使用Clear Display按钮或设置自动清理规则(如保留最近1000条请求)
  3. 多实例隔离:复杂项目可启动多个Charles实例,通过不同端口区分测试环境

3.3 自动化配置脚本

通过Charles脚本功能实现自动化过滤:

  1. // 示例:自动添加域名过滤规则
  2. function onStartRecording() {
  3. var settings = Java.type("com.xk72.charles.components.settings.GlobalSettings");
  4. var recordingSettings = settings.getRecordingSettings();
  5. recordingSettings.getIncludePatterns().add("*.api.example.com");
  6. }

将脚本保存至Charles Scripts目录,重启后自动生效。

四、进阶应用场景

4.1 微服务架构调试

在分布式系统中,通过域名过滤可精准定位:

  • 配置Include: *.service-a.example.com分析服务A的调用链
  • 结合Sequence视图观察跨服务请求时序
  • 使用Structure视图按域名分组请求,快速识别性能瓶颈

4.2 移动端专项测试

针对混合应用(Hybrid App):

  1. 配置Include: *.cdn.example.com分析静态资源加载
  2. 通过Focus模式隔离Webview请求
  3. 结合Save Session功能保存特定域名流量,便于后续复盘

4.3 安全审计实践

在渗透测试中:

  • 配置Exclude: *.internal.example.com避免捕获内网敏感流量
  • 通过SSL Proxying设置解密特定域名流量
  • 使用Repeat功能重放恶意请求,验证防护机制

五、最佳实践总结

  1. 分层过滤:先通过Proxy Settings限制代理范围,再使用Recording Settings细化规则
  2. 版本控制:对复杂配置保存为.chls会话文件,便于团队共享
  3. 监控告警:结合Tools > Notify设置域名请求异常提醒
  4. 文档沉淀:对关键域名过滤规则添加注释(右键请求-Edit Comment

通过精准的域名过滤配置,Charles可帮助开发者从海量网络请求中快速定位目标流量,显著提升调试效率。建议根据实际场景组合使用多种过滤方式,并定期优化规则以适应项目演进。