一、更新内容:
【摘要】
基于v2.1.1新增大量功能,并修复了诸多安全漏洞,是 全方面 提升的一个 重要版本 。
由于MacOS构建的一些问题,本版本不提供MacOS universal包,请自行根据具体机型选择x86-64/arm64版本
短时间内我不会再主导发布新的版本。
以下内容由xiaomi mimo v2.5 pro概括:
本次更新围绕 自动更新体系搭建、HTTP/2 代理全面升级、智能 DNS 与 IP 探测机制 三大主线,同时在构建流程、安全性、资源体积、界面交互等方面进行了大量修复与优化。核心变化包括:新增实验性自动更新功能、代理服务器升级至 HTTP/2 支持浏览器多路复用、引入按需 IP 探测与坏 IP 快速切换机制、智能 IPv6 检测、CA 证书环境变量注入、以及内存裁剪与资源压缩等。
【新特性】
- 自动更新(实验性):发现新版本时弹窗提供「自动更新」和「手动下载」双模式选择,支持按平台/架构匹配增量 ZIP 包下载解压重启,CI 流程同步支持 update ZIP 的上传与下载
- Fake Server 升级到 HTTP/2:浏览器通过 ALPN 协商 h2,同域名所有请求在单 TCP 连接上真正并发,支持 HTTP/1.1 自动回退
- 按需 IP 探测机制:轮转分配未失败 IP 进行并发探测,成功后立即加入可用池供后续请求优先使用,失败后永久跳过;坏 IP 最多拖累一次请求而非全部
- REQUEST_CA_BUNDLE 环境变量设置:新增
setCaBundle配置项,开启后自动写入REQUEST_CA_BUNDLE指向 DS CA 证书路径,解决 Python/QT 等不信任系统证书栈的程序通过代理时的证书信任问题 - 智能 IPv6 检测:静态扫描网卡忽略本地链路地址,运行时累计 3 次
ENETUNREACH后动态关闭 IPv6 DNS 解析,自适应不路由 IPv6 的网络环境 - HTTP/2 会话和流级别错误日志:新增
sessionError/session/stream事件处理,用于诊断 HTTP/2 协议层错误 - 注入脚本 nonce 属性支持:从响应头 CSP 中提取 nonce 值注入到 script 标签,绕过
strict-dynamicCSP 策略(如 GitHub 等站点)
【优化】
- 构建优化:CI 构建全平台全架构,本地仅构建当前平台架构;Windows 本地跳过签名、CI 照常签名;CI 环境跳过
install-app-deps避免重复 rebuild;打包后删除app.asar.unpacked中重复 exe - 启动防护:
start()检测子进程存活时跳过启动,避免端口冲突与代理/插件/系统代理重复启动 - 内存裁剪:禁用不需要的 Chromium 组件(限制 renderer 数量为 1,禁用 PDF/打印/语音/WebRTC/传感器/支付等),合计节省约 200MB
- 资源压缩:
favicon.ico264KB→1KB、setup-mac.png521KB→149KB、setup-linux.png212KB→60KB、setup.png51KB→19KB - 语言包裁剪:仅保留
zh-CN语言包,移除 en-US/en/zh-TW,节省约 3MB - CA 证书路径选项交互改进:未勾选"设置环境变量"时禁用而非隐藏,交互更清晰
- 坏 IP 快速检测与切换:连接超时从 OS 级 15-21 秒缩短至 7 秒;故障切换阈值从 3 次降至 1 次,成功时重置错误计数避免历史污染
- CSP nonce 注入增强:支持双引号 nonce、report-only CSP,提取失败时输出 CSP 内容前 200 字符便于诊断
- DNS-DNS/DNS-Lookup 头值安全过滤:过滤非 ASCII 字符(中文名称、中文括号等),避免 HTTP/2 响应头触发
ERR_INVALID_CHAR - HTTP/2 伪头处理:过滤请求中以
:开头的 HTTP/2 伪头防止泄漏到上游 HTTP/1.1 请求;:authority伪头正确映射到req.headers.host - HTTP/2 禁止响应头过滤:
fake server和中间件同步过滤connection/keep-alive/transfer-encoding/upgrade等 HTTP/2 禁止的响应头 - CI 自动更新元文件完善:
after-pack使用Arch[context.arch]将数值枚举转为架构字符串;补全 CI 自动更新元文件的上传/下载流程 - 预发布横幅样式:添加内边距、居中与边框样式
--use-system-ca:Chromium 启动时信任 dev-sidecar 自签 CA
【性能提升】
- HTTP/2 多路复用:同一域名所有请求在单 TCP 连接上并发传输,消除 DevTools 网络面板中"楼梯状"串行瀑布图
- 坏 IP 快速淘汰:连接超时从 15-21 秒缩短至 7 秒,切换阈值从 3 次降至 1 次,大幅减少单 IP 故障对整体请求的影响
- 按需 IP 探测:SpeedTester 就绪前并发请求分散到不同 IP 并即时反馈成败,已知可用 IP 被后续请求优先选择
- 内存占用降低:禁用无用 Chromium 组件节省约 200MB
- 资源体积大幅缩减:图标与安装引导图合计减少约 800KB
- 无新鲜 IP 时复用探测中的 IP:避免全部回退到 DNS 缓存导致所有请求指向同一 IP
【BUG 修复】
- CI 构建相关:配置
VUE_APP_PUBLISH_URL/PROVIDER让 electron-builder 自动生成latest*.yml;latest*.yml上传失败改为 warn 不阻断构建;after-all-artifact-build改用fs.readdirSync扫描 update ZIP;Windows ia32 增量更新 ZIP 不存在时不中断 CI 构建;macOS CI 构建包含 zip 目标以生成自动更新 ZIP - 检查更新:修复检查更新失败时错误信息显示
undefined的问题 getNonceAttr函数:修复缺少闭合花括号导致代理无法启动的问题- 注入脚本 CSP 绕过:修复
strict-dynamicCSP 下注入脚本无法执行的问题 req.socket判空:HTTP/2 下req.socket可能为空,增加判空避免异常- 托盘图标:修复开发模式下托盘图标透明的路径解析错误,改为
app.getAppPath()动态定位,同步修复 macOS dock 图标 - 菜单图标与关闭策略弹窗:修复子菜单项无图标的问题;修复关闭窗口策略弹窗中单选框和复选框无法选择的问题(改用原生 input + DOM onChange)
- 根证书安装:修复安装引导图片无法加载(改用
process.env.BASE_URL相对路径);修复"点此去安装"按钮certPath为空时的报错;修复 Windows 下"拒绝访问"问题(改用 Electronshell.openPath);修复保存设置时structured clone错误(JSON 序列化去除 Vue Proxy) - 依赖安全修复:修复 CVE-2024-29415(SSRF)、CVE-2021-23386(内存泄漏)、CVE-2020-36604(原型污染)三个间接依赖漏洞;修复
setx命令参数转义问题;移除uuid >=9.0.0的 pnpm override(uuid 9+ 的 exports 字段禁止子路径导入导致request崩溃)
二、安装前请仔细阅读安装说明
三、贡献者列表
非常感谢以下朋友们的贡献。
四、Full Changelog
- Potential fix for code scanning alert no. 17: Workflow does not contain permissions by @cute-omega in #649
- Potential fix for code scanning alert no. 18: Workflow does not contain permissions by @cute-omega in #650
- Potential fix for code scanning alert no. 21: Workflow does not contain permissions by @cute-omega in #651
- Potential fix for code scanning alert no. 26: Insecure randomness by @cute-omega in #652
五、里程碑:
点击 2.2.0 Milestone 查看该版本合并的PR和关闭的Issue。