Skip to content

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

@chengcheng84

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
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions