Photo by Unsplash
848 字
4 分钟
Windows下Electron程序及其子进程代理设置方案
Windows 下 Electron 程序及其子进程代理设置方案
有些 Electron 应用需要走代理才能正常工作,但不想修改系统全局设置影响其他程序。通过批处理脚本可以实现单个程序(包括其子进程)的代理隔离。
场景描述
- 主程序:
F:\HillsLite-v0.4.0\hills_desktop.exe(Electron 应用) - 子进程:MPV 播放器
- 代理地址:
127.0.0.1:6(混合 HTTP/SOCKS 代理) - 目标:仅该程序及其子进程走代理,不影响系统其他程序
方案一:批处理启动脚本(推荐)
Windows 的环境变量具有继承性:在批处理中设置的临时变量,会被该批处理启动的程序及其所有子进程继承,但不会影响系统全局。
创建启动脚本
在程序目录下创建 Start_With_Proxy.bat:
@echo off:: 设置 HTTP 和 HTTPS 代理set HTTP_PROXY=http://127.0.0.1:6set HTTPS_PROXY=http://127.0.0.1:6
:: 设置 ALL_PROXY,这对 MPV/FFmpeg 很重要,通常建议用 socks5set ALL_PROXY=socks5://127.0.0.1:6
:: 针对 Electron/Chromium 内核的额外保险变量set NO_PROXY=localhost,127.0.0.1
:: 启动主程序:: start "" "路径" 用于异步启动,关闭CMD窗口后程序继续运行start "" "F:\HillsLite-v0.4.0\hills_desktop.exe"
exit使用方法
- 右键编辑
.bat文件,修改代理地址和程序路径 - 双击运行批处理脚本
- Electron 和 MPV 都会继承这些环境变量
方案二:快捷方式参数(仅 Electron)
Electron 程序支持命令行代理参数,但子进程(MPV)不一定能继承。
- 创建程序的快捷方式
- 右键 -> 属性 -> “目标”
- 在末尾添加参数:
"F:\HillsLite-v0.4.0\hills_desktop.exe" --proxy-server="http://127.0.0.1:6"限制这种方法只对 Electron 主程序生效,MPV 子进程是否能继承取决于 Electron 内部实现。
方案三:Proxifier(终极方案)
如果上述方法都无效,使用 Proxifier 在网络层强制接管。
配置步骤
-
添加代理服务器
- 地址:
127.0.0.1 - 端口:
6 - 类型:HTTPS 或 SOCKS5
- 地址:
-
添加代理规则
- Applications:
hills_desktop.exe; mpv.exe - Action:选择刚才添加的代理服务器
- 确保这条规则在
Default规则之上
- Applications:
-
设置默认直连
- Default 规则设为
Direct(直连) - 这样只有指定程序走代理,其他程序不受影响
- Default 规则设为
方案对比
| 方案 | 适用性 | 优点 | 缺点 |
|---|---|---|---|
| 批处理脚本 | 最佳 | 主进程和子进程都能继承,零成本 | 需要多一个启动文件 |
| 快捷方式参数 | 一般 | 干净简洁 | 子进程可能无法继承 |
| Proxifier | 终极手段 | 强制生效,可监控流量 | 需要安装第三方软件 |
验证代理是否生效
方法1:查看环境变量
在批处理脚本末尾添加:
@echo HTTP_PROXY=%HTTP_PROXY%@echo HTTPS_PROXY=%HTTPS_PROXY%pause方法2:使用代理检测网站
在程序内访问 https://ip.sb 或 https://httpbin.org/ip,查看出口 IP 是否变化。
方法3:查看代理软件日志
检查代理软件(Clash、V2RayN 等)的连接日志,看是否有该程序的请求记录。
常见问题
MPV 无法加载视频
- 尝试将
ALL_PROXY改为 HTTP 协议:set ALL_PROXY=http://127.0.0.1:6 - 部分旧版本 MPV/FFmpeg 对 SOCKS5 支持不完善
程序仍然直连
- 检查是否有其他配置文件覆盖了环境变量
- 尝试使用 Proxifier 强制代理
影响其他程序
- 确保批处理脚本中没有使用
setx(这会修改系统环境变量) - 只使用
set,这样变量只在当前 CMD 会话生效
参考链接
- Electron 代理文档:https://www.electronjs.org/docs/api/command-line-switches
- MPV 代理设置:https://mpv.io/manual/master/
- Proxifier 官网:https://www.proxifier.com/
Windows下Electron程序及其子进程代理设置方案
https://im.awsl.app/posts/system-ops/050-electron-proxy/