用 Charles 抓包 Claude Code CLI
前言
Claude Code CLI 是 Anthropic 推出的命令行工具,让开发者能在终端与 Claude 模型交互。而 Charles 作为强大的网络抓包工具,可以帮助我们分析 Claude Code CLI 的网络请求,理解其工作原理。
本文将简化步骤,重点讲解如何配置 Charles 抓取 Claude Code CLI 的网络请求。
准备工作
- Claude Code CLI:已安装并可正常使用
- Charles:已安装并启动
核心配置步骤
1. 安装并信任 Charles 根证书
- 打开 Charles,点击
Help→SSL Proxying→Install Charles Root Certificate - 在系统证书设置中,将 Charles 根证书设置为「始终信任」
2. 配置 SSL 代理
- 点击
Proxy→SSL Proxying Settings - 点击
Add,在Host输入*,Port输入443 - 勾选
Enable SSL Proxying
3. 导出 Charles SSL 证书
- 点击
Help→SSL Proxying→Save Charles Root Certificate... - 选择保存位置,文件格式选择
PEM Certificate (.pem)
4. 设置环境变量
在终端中设置以下环境变量(根据你的操作系统):
macOS / Linux:
export http_proxy=http://127.0.0.1:8888
export https_proxy=http://127.0.0.1:8888
export NODE_EXTRA_CA_CERTS=/path/to/charles-ssl-proxying-certificate.pem
Windows:
-
CMD:
set http_proxy=http://127.0.0.1:8888 set https_proxy=http://127.0.0.1:8888 set NODE_EXTRA_CA_CERTS=C:\path\to\charles-ssl-proxying-certificate.pem -
PowerShell:
$env:http_proxy = "http://127.0.0.1:8888" $env:https_proxy = "http://127.0.0.1:8888" $env:NODE_EXTRA_CA_CERTS = "C:\path\to\charles-ssl-proxying-certificate.pem"
开始抓包
- 启动 Charles:确保 Charles 正在运行
- 运行 Claude Code CLI:在设置了环境变量的终端中执行命令,例如:
claude "Write a Python function to calculate factorial" - 查看抓包结果:在 Charles 界面中查看网络请求,包括:
- 请求 URL、头部和 body
- 响应状态码、头部和 body
关键配置说明
为什么需要 NODE_EXTRA_CA_CERTS?
Claude Code CLI 基于 Node.js 开发,Node.js 默认只信任系统根证书。通过设置 NODE_EXTRA_CA_CERTS 环境变量,告诉 Node.js 额外信任 Charles 的根证书,从而允许 Charles 拦截和解析 HTTPS 请求。
常见问题解决
- 无法抓取 HTTPS 请求:确保已正确安装并信任 Charles 根证书,且设置了
NODE_EXTRA_CA_CERTS - 命令行工具无法连接:检查代理环境变量是否正确设置,Charles 是否正在运行
- 抓包内容乱码:确保 SSL Proxying 已正确配置
实际应用
通过抓包,你可以:
- 分析认证流程:了解 Claude Code CLI 如何进行身份验证
- 调试响应问题:当收到异常响应时,查看完整的请求和响应内容
- 优化请求参数:根据抓包结果,调整请求参数以提高交互效率
总结
抓取 Claude Code CLI 的网络请求只需几个简单步骤:
- 配置 Charles 证书和 SSL 代理
- 导出并配置 Charles 根证书
- 设置终端环境变量
- 运行 Claude Code CLI 命令并查看抓包结果
这些配置不仅适用于 Claude Code CLI,也适用于其他基于 Node.js 的命令行工具。