使用 mitmproxy来窥探 claude code 的系统提示词

最近使用 claude code 过程中,想要查看一下具体的请求数据,学习一下它的提示词,但是 claude code 是个在 shell 中运行的工具,不太好查看,这里提供一种使用 mitmproxy 来抓包的方法,类似的还有使用 wir…

最近使用 claude code 过程中,想要查看一下具体的请求数据,学习一下它的提示词,但是 claude code 是个在 shell 中运行的工具,不太好查看,这里提供一种使用 mitmproxy 来抓包的方法,类似的还有使用 wireshark 等。

安装 mitmproxy

bash
brew install mitmproxy

有三种启动方式

bash
# 启动命令行交互界面 (不支持 Windows)
mitmproxy
# 启动图形化网页界面 (推荐新手)
mitmweb
# 启动不交互的纯命令行版本
mitmdump

这里使用 web 方式,方便操作查看,对新手比较友好

启动 web 版 mitmproxy

shell
mitmweb -p 7890

image.png

这里有两个端口

  • 7890,这个是 http 和 https 的代理端口,也是之后使用 claude code 进行代理的端口
  • 8081, 这个是 web 端口,可以在浏览器中打开这个端口,进行可视化操作

浏览器会自动打开 http://127.0.0.1:8081, 如果没有自动打开就手动打开。

导入证书

这是非常关键的步骤,也是最麻烦的步骤,需要系统信任 mitmproxy 的证书,否则之后还是抓不到 https 的包

mitmproxy 在第一次启动的时候会自动生成证书,默认位置在

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

输入以下命令

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

然后再输入

shell
sudo security find-certificate -c mitmproxy

启动 claude code

这里我使用的是智谱的大模型接口,官方的文档为 https://docs.bigmodel.cn/cn/coding-plan/tool/claude

配置setting.json

修改 ~/.claude/settings.json, 如果没有需要自己创建一个。

除了智谱官方文档中的配置这里需要将 HTTP_PROXY和HTTPS_PROXY添加到env中

json
{
  "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 不完全信任系统证书,必须显式指定证书的:

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

这时就可以在 mitmproxy 中抓到claude code 的 https 请求了

image.png

可以看到 claude code 有很多请求 anthropic 的请求,通过 ~d bigmodel 来过滤出只请求智谱的

image.png

接下来在 claude code 上随便发送点内容,如 你好

image.png

此时可以查看到具体的请求 Request 信息

image.png

也可以查看到具体的请求体 body

image.png

查看响应 Response 数据

image.png

杨彦星 后端工程师 · 序语程言主理人

做了八年后端,最近在 AI 行业折腾。喜欢把复杂的事情拆开讲清楚,讨厌「显而易见」这四个字。这里记录我踩过的坑和攒下的经验,愿你少踩一点。

yangyanxing1005@qq.com

查看主页