Skip to content

将 DevSidecar 迁移到 Tauri 2.0 + EasyTier 内核,实现对 Android / iOS 移动端支持 #634

Description

@chengcheng84

Important

Generate with DeepSeek

提案背景

相关 Issue: #28

目前 DevSidecar 基于 Electron 构建,在桌面端表现优秀。但在移动端开发场景中——调试 hybrid app、在平板上查阅 GitHub 文档、手机端 clone 测试仓库等——依然存在痛点:

  • 手机访问 GitHub 同样面临 DNS 污染和慢速问题
  • 将电脑设为代理服务器门槛太高
  • 移动端缺少类似的开源解决方案

目标:将 DevSidecar 带到 Android / iOS 平台。


为什么选 Tauri 2.0?

Tauri 2.0 已稳定支持 iOS/Android,相比 Electron:

  • 应用体积更小(约减少 90%)
  • 内存占用更低
  • 原生移动端 API 支持

前端代码可完全复用(Vue 3 + Vite)。


核心挑战:MITM 代理

DevSidecar 的核心能力是 MITM(中间人代理)

  • 动态生成证书,解密 HTTPS 请求
  • 修改 Host / URL / SNI 实现加速
  • GitHub 加速的核心依赖

移动端需要重新实现这套逻辑,因为 Electron 的 Node.js 代码无法在移动端运行。


🔍 Rust MITM 生态调研

经过深入分析,Rust 生态已有成熟的 MITM 代理库,可以直接复用:

库名 功能 成熟度 推荐度
slinger-mitm 完整 MITM 代理,CA 证书生成,SOCKS5,rustls 后端 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
hudsucker MITM 代理框架,支持请求/响应拦截 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
http-mitm-proxy HTTP 代理库,类似 Burp 后端 ⭐⭐⭐⭐ ⭐⭐⭐

参考项目Stoat-interceptor——基于 http-mitm-proxy 实现的 Burp 风格代理,TUI 界面,自动证书处理。


关于 EasyTier 的说明

EasyTier 是一个优秀的 Rust VPN 组网项目,但经过源码分析:

能力 EasyTier 结论
smoltcp(用户态网络栈) 移动端 TUN 适配可能需要
TCP / SOCKS5 代理 slinger-mitm 已有
MITM / TLS 解密 EasyTier 没有 MITM 功能

EasyTier 是 VPN 工具而非 HTTP 代理,无法替代 DevSidecar 核心。 如需移动端 TUN 适配,可单独使用其 smoltcp 组件,但不必须。


推荐方案

┌─────────────────────────────────────────────────────────────┐
│                  Tauri 2.0 应用 (移动端 + 桌面端)                                                                                         │
├─────────────────────────────────────────────────────────────┤
│  前端层 (Vue 3) - 完全复用现有代码                                                                                                    │
├─────────────────────────────────────────────────────────────┤
│  Tauri 主进程 (Rust)                                                                                                                              │
│  - 窗口/托盘管理(桌面端)                                                                                                               │
│  - 系统代理设置 / VPN 服务(移动端)                                                                                                │
├─────────────────────────────────────────────────────────────┤
│  MITM 代理内核 ← slinger-mitm (Rust)                                                                                               │
│  ├── 自动 CA 证书生成 (rcgen)                                                                                                         │
│  ├── 证书缓存 (moka)                                                                                                                    │
│  ├── TLS 解密/重加密 (rustls)                                                                                                       │
│  ├── SOCKS5 支持                                                                                                                       │
│  └── Interceptor Trait                                                                                                                  │
├─────────────────────────────────────────────────────────────┤
│  DevSidecar 拦截器实现                                                                                                                    │
│  ├── GitHub 域名匹配                                                                                                                       │
│  ├── Host/SNI 修改                                                                                                                           │
│  ├── URL 重写(镜像站替换)                                                                                                          │
│  └── 响应内容替换(CDN 加速)                                                                                                      │
└─────────────────────────────────────────────────────────────┘

工作量预估

任务 预估 说明
Tauri 2.0 项目搭建 2 天 -
Vue 3 前端迁移 3 天 复用现有代码
slinger-mitm 集成 2-3 天 基础代理能力
规则引擎开发 3-5 天 GitHub 加速规则
移动端适配 2-3 天 Android VPN / iOS NE
测试与调试 2-3 天 各平台
总计 2-3 周 -

需要讨论的问题

  1. 是否接受这个方向? 可能需要大量修改代码

  2. MITM 核心是否已模块化? 方便移植到 Rust。

  3. 是否可以简化移动端功能?

    • 移动端仅支持 GitHub 加速的核心规则
    • 桌面端保持完整功能
  4. 签名和分发策略

    • iOS 需要 Apple Developer 账号

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions