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

如何用mitmproxy在macOS上完全隔离本地应用并拦截其出入流量?

隔离本地Java/Node应用到mitmproxy的具体方案

不需要使用会捕获全局流量的透明模式,只需针对单个应用单独配置代理指向mitmproxy即可,以下是macOS上的具体步骤:

1. 启动mitmproxy

先启动mitmproxy监听本地端口(以8080为例),可选择带交互式UI的版本或仅输出日志的后台版本:

# 带交互式UI的版本
mitmproxy -p 8080

# 仅输出日志的后台版本
mitmdump -p 8080

2. 配置mitmproxy证书信任(处理HTTPS流量)

mitmproxy需要解密HTTPS流量,必须让Java/Node信任其生成的CA证书:

  • 启动mitmproxy后,用浏览器访问mitm.it,下载macOS对应的证书文件
  • 打开「钥匙串访问」,导入该证书,找到「mitmproxy」证书右键选择「显示简介」,在「信任」选项卡设置为「始终信任」
  • 证书默认存储在~/.mitmproxy/目录,后续配置会用到此路径

3. Java应用单独配置代理

启动Java应用时,通过JVM参数指定代理并信任mitmproxy证书:

java -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8080 \
     -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8080 \
     -Djavax.net.ssl.trustStore=~/.mitmproxy/mitmproxy-ca.p12 \
     -Djavax.net.ssl.trustStorePassword=mitmproxy \
     -jar your-java-app.jar
  • 参数说明:
    • http.proxyHost/http.proxyPort:指定HTTP请求的代理地址
    • https.proxyHost/https.proxyPort:指定HTTPS请求的代理地址
    • trustStore和trustStorePassword:指定mitmproxy的PKCS12格式证书,默认密码为mitmproxy

如果Java应用通过脚本启动,直接在脚本的JVM启动参数中添加以上配置即可。

4. Node.js应用单独配置代理

Node.js有两种常用配置方式,推荐使用环境变量(无需修改代码):

方式一:环境变量全局设置

# 设置代理环境变量
export HTTP_PROXY=http://127.0.0.1:8080
export HTTPS_PROXY=http://127.0.0.1:8080
# 让Node信任mitmproxy的CA证书
export NODE_EXTRA_CA_CERTS=~/.mitmproxy/mitmproxy-ca-cert.pem

# 启动Node应用
node your-node-app.js

方式二:代码内手动配置(适合单个请求/模块)

如果应用使用axios等HTTP库,可直接在请求中指定代理:

const axios = require('axios');

const proxyConfig = {
  host: '127.0.0.1',
  port: 8080
};

axios.get('https://example.com', { proxy: proxyConfig })
  .then(res => console.log(res.data))
  .catch(err => console.error(err));

验证

先启动mitmproxy,再启动目标应用发起网络请求,mitmproxy的UI或日志中会显示该应用的所有流量,其他本地应用的流量不会被捕获,实现隔离效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:51:16