github docmirror/dev-sidecar v2.2.0

4 hours ago

一、更新内容:

【摘要】

基于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-dynamic CSP 策略(如 GitHub 等站点)

【优化】

  • 构建优化:CI 构建全平台全架构,本地仅构建当前平台架构;Windows 本地跳过签名、CI 照常签名;CI 环境跳过 install-app-deps 避免重复 rebuild;打包后删除 app.asar.unpacked 中重复 exe
  • 启动防护start() 检测子进程存活时跳过启动,避免端口冲突与代理/插件/系统代理重复启动
  • 内存裁剪:禁用不需要的 Chromium 组件(限制 renderer 数量为 1,禁用 PDF/打印/语音/WebRTC/传感器/支付等),合计节省约 200MB
  • 资源压缩favicon.ico 264KB→1KB、setup-mac.png 521KB→149KB、setup-linux.png 212KB→60KB、setup.png 51KB→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*.ymllatest*.yml 上传失败改为 warn 不阻断构建;after-all-artifact-build 改用 fs.readdirSync 扫描 update ZIP;Windows ia32 增量更新 ZIP 不存在时不中断 CI 构建;macOS CI 构建包含 zip 目标以生成自动更新 ZIP
  • 检查更新:修复检查更新失败时错误信息显示 undefined 的问题
  • getNonceAttr 函数:修复缺少闭合花括号导致代理无法启动的问题
  • 注入脚本 CSP 绕过:修复 strict-dynamic CSP 下注入脚本无法执行的问题
  • req.socket 判空:HTTP/2 下 req.socket 可能为空,增加判空避免异常
  • 托盘图标:修复开发模式下托盘图标透明的路径解析错误,改为 app.getAppPath() 动态定位,同步修复 macOS dock 图标
  • 菜单图标与关闭策略弹窗:修复子菜单项无图标的问题;修复关闭窗口策略弹窗中单选框和复选框无法选择的问题(改用原生 input + DOM onChange)
  • 根证书安装:修复安装引导图片无法加载(改用 process.env.BASE_URL 相对路径);修复"点此去安装"按钮 certPath 为空时的报错;修复 Windows 下"拒绝访问"问题(改用 Electron shell.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

v2.1.1...v2.2.0

五、里程碑:

点击 2.2.0 Milestone 查看该版本合并的PR和关闭的Issue。

Don't miss a new dev-sidecar release

NewReleases is sending notifications on new releases.