2025-11-26 05:03:28 2025-11-26 05:07:25 13 次浏览

解决 macOS 终端抓取 Claude CLI (HTTPS) 请求失败的终极指南

最近在使用 macOS 终端调试 Claude CLI 工具时,发现 Charles 无法抓取到 HTTPS 请求,或者终端频繁报错 SSL 握手失败。经过排查,这通常是因为终端工具未走系统代理,以及 Node.js 环境对自签名证书的信任问题。

以下是经过验证的解决方案。

🚀 核心解决方案(一键修复)

由于 Claude 很大可能是基于 Node.js 开发的工具,它拥有独立的证书验证机制。我们需要做两件事:配置代理环境变量,并强制关闭 Node.js 的 TLS 验证。

在终端中执行以下命令(建议直接复制整行):

export https_proxy=http://127.0.0.1:8888 && export http_proxy=http://127.0.0.1:8888 && export NODE_TLS_REJECT_UNAUTHORIZED=0

命令解析:

  • http_proxy / https_proxy:将终端流量指向 Charles 默认端口 8888。
  • NODE_TLS_REJECT_UNAUTHORIZED=0这是关键。它告诉 Node.js 环境接受非权威机构颁发的证书(即 Charles 的拦截证书),解决了 SSL 报错问题。

执行完上述命令后,再运行你的 Claude 命令即可抓包:

Claude <你的指令>

🛠️ Charles 必须进行的设置

如果执行了上述命令仍然看到乱码或连接失败,请检查 Charles 的内部设置:

  1. 开启 SSL 代理:
    点击菜单栏 Proxy -> SSL Proxying Settings
  2. 添加通配符:
    确保 Include 列表中添加了 Host 为 * 且 Port 为 *(或者 443)的规则。
    注意:如果不加通配符,Charles 只会透传 HTTPS 流量,你将无法查看解密后的明文。

⚠️ 注意事项

安全提示: NODE_TLS_REJECT_UNAUTHORIZED=0 仅用于本地开发调试阶段。请勿将此环境变量写入生产环境的配置中,否则会使你的应用面临中间人攻击的风险。调试结束后,重启终端即可失效。