找回密码
立即注册
搜索
发回帖 发新帖

6628

积分

0

好友

840

主题
发表于 2026-1-24 19:26:48 | 查看: 510| 回复: 0

最近在使用 Claude Code 这款命令行工具时,想要查看它向 API 发送的具体请求数据,特别是学习其背后的系统提示词。但因为它是一个在 shell 中运行的工具,直接查看内部通信并不方便。本文介绍一种使用 mitmproxy 进行网络抓包的方法来实现这一目标,类似的工具还有 Wireshark。

安装 mitmproxy

在 macOS 上,可以使用 Homebrew 进行安装:

brew install mitmproxy

安装完成后,有三种启动方式:

# 启动命令行交互界面 (不支持 Windows)
mitmproxy

# 启动图形化网页界面 (推荐新手)
mitmweb

# 启动不交互的纯命令行版本
mitmdump

这里我们选择使用 Web 图形界面方式,对新手更为友好,操作和查看起来也更直观。

启动 mitmproxy Web 界面

执行以下命令启动 mitmproxy 的 Web 版本,并指定代理监听端口为 7890:

mitmweb -p 7890

启动后,终端会输出类似以下信息:
mitmproxy 启动日志,显示代理监听在端口 7890 和 Web 界面在 127.0.0.1:8081

这里需要注意两个端口:

  • 7890:这是 HTTP 和 HTTPS 的代理端口,也是后续配置 Claude Code 使用的代理端口。
  • 8081:这是 Web 管理界面的端口,可以在浏览器中打开进行可视化操作。

通常,浏览器会自动打开 http://127.0.0.1:8081,如果没有自动打开,请手动在浏览器地址栏输入该地址。

导入系统证书(关键步骤)

这是至关重要的一步,也是最容易出错的环节。为了让系统信任 mitmproxy 解密 HTTPS 流量,必须将其证书添加到系统的受信任根证书列表中。否则,后续将无法捕获到 HTTPS 协议的请求包。

mitmproxy 在首次启动时会自动生成证书,默认保存在以下路径:

~/.mitmproxy/mitmproxy-ca-cert.pem

在 macOS 系统上,需要执行以下命令将证书添加到系统钥匙串并设置为完全信任:

sudo security add-trusted-cert \
  -d -r trustRoot \
  -k /Library/Keychains/System.keychain \
  ~/.mitmproxy/mitmproxy-ca-cert.pem

添加完成后,可以运行以下命令验证证书是否已成功添加:

sudo security find-certificate -c mitmproxy

通过配置网络代理和安装可信证书来拦截分析流量,是网络调试和逆向工程中的常见手段。

启动 Claude Code 并通过代理抓包

本文以使用智谱 AI 的大模型接口为例,官方配置文档可参考:https://docs.bigmodel.cn/cn/coding-plan/tool/claude。

首先,需要配置 Claude Code 的 settings.json 文件。
修改或创建 ~/.claude/settings.json 文件。
除了官方文档中要求的配置外,必须将 HTTP_PROXY 和 HTTPS_PROXY 环境变量添加到配置中,指向我们启动的 mitmproxy 代理:

{
  "env": {
    "DISABLE_AUTOUPDATER": "0",
    "ANTHROPIC_BASE_URL": "https://open.bigmodel.cn/api/anthropic",
    "ANTHROPIC_AUTH_TOKEN": "your_zhipu_api_key",
    "HTTP_PROXY": "http://127.0.0.1:7890",
    "HTTPS_PROXY": "http://127.0.0.1:7890",
    "CLAUDE_DEBUG": "1",
    "API_TIMEOUT_MS": "3000000"
  }
}

由于 Node.js 运行时不完全信任系统的证书链,我们必须显式地指定刚才导入的 mitmproxy 证书。使用以下命令启动 Claude Code:

NODE_EXTRA_CA_CERTS=~/.mitmproxy/mitmproxy-ca-cert.pem claude

现在,所有从 Claude Code 发出的网络请求都会经过 mitmproxy,你可以在 mitmweb 的界面中看到捕获到的 HTTPS 请求了。
mitmproxy 捕获到的网络请求列表,包含多个 Anthropic API 请求

可以看到 Claude Code 发出了许多请求。为了方便查看,我们可以在界面顶部的过滤框中输入 ~d bigmodel,来筛选出只发送到智谱 API 域名的请求。
使用过滤器 ‘~d bigmodel’ 筛选后的请求列表

分析请求与响应数据

接下来,我们在 Claude Code 中随便发送一条消息,例如“你好”。
Claude Code 聊天界面,用户输入‘你好’,模型回复自我介绍

此时,在 mitmproxy 的请求列表中找到对应的 POST 请求,点击即可查看详细信息。在 Request 标签页下,可以查看到完整的请求头信息。
HTTP 请求头详情,包含方法、URL、主机、认证信息等

切换到 Response 或 Detail 视图下的 Request 部分,可以查看具体的请求体(JSON 格式)。这里就包含了我们想了解的系统提示词 (system 字段) 和用户消息。
请求体 JSON 数据,展示模型、消息数组以及包含系统提示词的 system 字段

同时,我们也可以在 Response 标签页下,查看模型返回的原始流式响应数据,这有助于理解大模型的输出机制。
服务器返回的流式响应原始数据,展示消息块和文本增量

通过以上步骤,我们就可以完整地捕获并分析 Claude Code 与后端 API 之间的通信,包括其使用的系统提示词、发送的消息结构以及接收的响应格式。这种方法对于学习大模型提示词工程、调试集成问题或进行简单的协议分析都很有帮助。在 云栈社区 的讨论区,你也可以找到更多关于安全分析与工具使用的深度分享。




上一篇:产品纹理设计核心原则与CMF实战指南:提升产品品质感
下一篇:Wine 11.0稳定版发布,Linux游戏性能再突破,直追Windows
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-11-11 05:25 , Processed in 0.077947 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表