用 Charles 抓包 Claude Code CLI

7 阅读2分钟

用 Charles 抓包 Claude Code CLI

前言

Claude Code CLI 是 Anthropic 推出的命令行工具,让开发者能在终端与 Claude 模型交互。而 Charles 作为强大的网络抓包工具,可以帮助我们分析 Claude Code CLI 的网络请求,理解其工作原理。

本文将简化步骤,重点讲解如何配置 Charles 抓取 Claude Code CLI 的网络请求。

准备工作

  • Claude Code CLI:已安装并可正常使用
  • Charles:已安装并启动

核心配置步骤

1. 安装并信任 Charles 根证书

  1. 打开 Charles,点击 HelpSSL ProxyingInstall Charles Root Certificate
  2. 在系统证书设置中,将 Charles 根证书设置为「始终信任」

2. 配置 SSL 代理

  1. 点击 ProxySSL Proxying Settings
  2. 点击 Add,在 Host 输入 *Port 输入 443
  3. 勾选 Enable SSL Proxying

3. 导出 Charles SSL 证书

  1. 点击 HelpSSL ProxyingSave Charles Root Certificate...
  2. 选择保存位置,文件格式选择 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"
    

开始抓包

  1. 启动 Charles:确保 Charles 正在运行
  2. 运行 Claude Code CLI:在设置了环境变量的终端中执行命令,例如:
    claude "Write a Python function to calculate factorial"
    
  3. 查看抓包结果:在 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 的网络请求只需几个简单步骤:

  1. 配置 Charles 证书和 SSL 代理
  2. 导出并配置 Charles 根证书
  3. 设置终端环境变量
  4. 运行 Claude Code CLI 命令并查看抓包结果

这些配置不仅适用于 Claude Code CLI,也适用于其他基于 Node.js 的命令行工具。