Zephyr v2.2.0
Zephyr v2.2.0 — 订阅自动更新 & 代理记忆 & 订阅编辑 & 安全加固
新增订阅自动更新调度器、代理节点记忆(切换配置自动恢复上次节点)、订阅右键编辑面板;安全方面:加密函数不再静默失败、
get_config_url从 IPC 降级为内部函数防止 URL 泄漏、新增 REALITY short-id 科学计数法保护、CFW 遗留键清理、escapeAttr函数、Mihomo 日志截断。
✨ 新功能
订阅自动更新调度器
新增后台订阅自动更新调度器(subscription_scheduler.rs)。
代理节点记忆
新增代理节点选择记忆功能(proxy-memory.js),记住每个配置文件上次使用的代理节点。
订阅编辑面板
订阅列表新增右键编辑功能。
批量更新
新增 download_sub_batch 命令,一键更新所有订阅:
- 绕过速率限制:批量更新不走单次速率限制器,避免"全部更新"被误拦截
- 逐个执行:串行执行每个订阅的下载,收集成功/失败结果
- URL 回退:每个订阅可传入 URL 或从 metadata 中解析(
resolve_url_from_metadata)
🔒 安全加固
get_config_url 降级为内部函数
get_config_url 从 Tauri Command(暴露给前端)降级为内部 pub fn,防止订阅 URL 泄漏到前端 JavaScript:
加密函数错误传播
obfuscate_string / deobfuscate_string 返回类型从 String 改为 Result<String, String>:
- 不再静默失败(之前返回空字符串)
- 解密使用
String::from_utf8(严格校验)替代String::from_utf8_lossy - 移除所有
eprintln!("[Security] CRITICAL: ...")日志,避免敏感信息泄露到 stdout
密钥存储改进
- 移除
current_exe回退:删除可执行文件目录回退路径(不可靠) - hex 编码:持久化密钥改用 hex 编码存储,读取时验证精确 32 字节
- CFW 遗留密钥清理:自动清理 Clash for Windows 旧格式加密文件
REALITY short-id 科学计数法保护
新增 quote_short_id_values 函数,在 YAML 解析前给 short-id 值加引号:该函数在 download_sub_inner 中调用,确保 REALITY 配置的正确性。附带 9 个单元测试。
CFW 遗留键清理
config_sanitizer.rs 新增 6 个 Clash-for-Windows 遗留键的清理:这些键在 Mihomo 中无效果,但可能被用于注入意外行为。
escapeAttr 函数
sanitize.js 新增 escapeAttr 函数,在 escapeHtml 基础上额外转义 " 和 ':用于 HTML 属性值场景(如 title="${escapeAttr(value)}"),防止属性注入。已在 rules.js、subscriptions.js、rule-library.js 等模块中使用。
Mihomo 日志截断
core_log.rs 新增日志行长度限制。
Base64 验证增强
try_decode_base64_content 现在验证解码后的 proxies 键的值是 sequence(数组),而不仅仅是字符串包含检查,防止格式错误的 Base64 内容被接受。
🐛 Bug 修复
- UI 缩放:下拉菜单、设置面板、代理卡片、规则库、TUN 面板在 UI 缩放时正确适配
- 订阅切换:切换订阅时实时读取
last_config(绕过缓存),避免闭包捕获过期值 - 速率限制:批量订阅更新时绕过单次速率限制
- ESLint:修复
no-unused-vars和no-duplicate-imports错误
🔧 改进
| 指标 | v2.1.1 | v2.2.0 | 变化 |
|---|---|---|---|
| IPC 命令 | 121 | 125 | +5 新增,-1 降级(get_config_url) |
| Rust 测试 | 304 | 341 | +37 |
| 代码重构 | — | — | 提取 validate_config_for_update、update_metadata_entry、resolve_url_from_metadata 等辅助函数 |
| i18n | — | — | 新增调度器、编辑面板、代理记忆相关翻译键 |
📦 下载说明
请根据您的操作系统选择对应版本:
| 平台 | 安装版 (Full) | 安装版 (Lite) | 便携版 |
|---|---|---|---|
| Windows | Zephyr_2.2.0_x64-setup-full.exe |
Zephyr_2.2.0_x64-setup-lite.exe |
Zephyr-windows-portable.zip |
| Windows (MSI) | Zephyr_2.2.0_x64_zh-CN-full.msi |
Zephyr_2.2.0_x64_zh-CN-lite.msi |
— |
| macOS (Apple Silicon) | Zephyr_2.2.0_aarch64-full.dmg |
Zephyr_2.2.0_aarch64-lite.dmg |
— |
| macOS (Intel) | Zephyr_2.2.0_x64-full.dmg |
Zephyr_2.2.0_x64-lite.dmg |
— |
| Linux (deb) | Zephyr_2.2.0_amd64-full.deb |
Zephyr_2.2.0_amd64-lite.deb |
— |
| Linux (AppImage) | Zephyr_2.2.0_amd64-full.AppImage |
Zephyr_2.2.0_amd64-lite.AppImage |
Zephyr-linux-portable.tar.gz |
| Linux (RPM) | Zephyr-2.2.0-1.x86_64-full.rpm |
Zephyr-2.2.0-1.x86_64-lite.rpm |
— |
⚠️ 免责声明:本项目由 AI 开发,安全性和性能尚未经充分验证,请自行评估使用风险。如发现安全问题或 Bug,欢迎提交 Issue。