跳到主要内容

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

· 阅读需 3 分钟

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

安装 mitmproxy

brew install mitmproxy

有三种启动方式

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

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

启动 web 版 mitmproxy

mitmweb -p 7890

image.png

这里有两个端口

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

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

导入证书

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

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

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

输入以下命令

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

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

配置setting.json

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

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

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

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