You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用mitmproxy捕获本地Java运行的gRPC双向客户端服务器HTTP2流量

捕获gRPC双向HTTP/2流(mitmproxy + Java客户端/服务器配置)

1. 启动mitmproxy

mitmproxy默认支持HTTP/2,直接指定监听端口启动即可:

mitmproxy --listen-port 8080

2. 准备mitmproxy信任证书

因为gRPC基于TLS,Java客户端需要信任mitmproxy的CA证书才能正常建立连接:

  1. 找到mitmproxy默认生成的CA证书,路径一般是 ~/.mitmproxy/mitmproxy-ca.pem
  2. 用keytool将PEM证书转换成Java支持的JKS格式:
keytool -importcert -file ~/.mitmproxy/mitmproxy-ca.pem -keystore mitmproxy-ca.jks -alias mitmproxy

执行时输入密钥库密码(推荐用changeit,和Java默认信任库密码一致),然后确认信任该证书。

3. 配置Java gRPC客户端

启动客户端时,通过JVM参数指定代理并导入信任证书,同时取消本地请求的代理豁免(因为服务器在本地):

java -jar Client.jar \
    -Dhttp.proxyHost=127.0.0.1 \
    -Dhttp.proxyPort=8080 \
    -Dhttps.proxyHost=127.0.0.1 \
    -Dhttps.proxyPort=8080 \
    -Dhttp.nonProxyHosts="" \
    -Djavax.net.ssl.trustStore=/path/to/mitmproxy-ca.jks \
    -Djavax.net.ssl.trustStorePassword=changeit

把/path/to/mitmproxy-ca.jks替换成你实际生成的JKS证书路径。

4. 验证流量捕获

  1. 确保mitmproxy处于运行状态
  2. 启动配置好的Java客户端,发起gRPC双向流请求
  3. 在mitmproxy界面中,就能看到对应的HTTP/2请求,包括双向流的消息内容

额外注意

  • 如果你的gRPC服务器未启用TLS(纯HTTP/2),只需保留http相关代理参数,去掉HTTPS和证书配置即可,但这种生产场景极少。
  • 建议使用最新版本的mitmproxy,避免旧版本对HTTP/2双向流的支持缺陷。

内容的提问来源于stack exchange,提问作者djGowda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 11:52:39