QzoneArchive 中文文档 下载 App

QzoneArchive 的 Rust 后端——HTTP、数据库和 Cookie 管理

Rust 后端做什么

QzoneArchive 的 Rust 后端是整个应用的"大脑"。它负责:

核心依赖

crate作用
reqwestHTTP 客户端,支持 rustls-tls(不依赖 OpenSSL)
rusqliteSQLite 绑定,支持 FTS5 全文搜索
serde / serde_jsonJSON 序列化(QQ 空间接口返回的是 JSON)
tauriTauri 框架本身的后端库

为什么选 reqwest 而不是其他 HTTP 库?reqwest 是 Rust 生态最成熟的 HTTP 客户端,支持 rustls-tls(用 Rust 原生实现的 TLS,不依赖系统的 OpenSSL),这对跨平台构建很重要。

归档流程的 Rust 侧实现

从 Rust 后端的视角看,一次归档的核心流程:

  1. 登录:前端通过 IPC 请求登录 → Rust 后端与 QQ 空间交互 → Cookie 存入内存
  2. 抓取:循环调用互动列表接口 → 拿到一批互动记录 → 从中提取原始动态 → 入库
  3. 断点续传:每批完成后更新任务状态表 → 下次启动时读这个位置继续
  4. 限流检测:检测响应状态码 → 触发限流时暂停 + 倒计时
  5. 媒体缓存:下载图片视频到本地路径 → 在数据库里记录路径引用

为什么 Rust 好

对于 QzoneArchive 这种"长时间挂机、需要处理网络波动和限流、需要内存安全"的工具,Rust 的优势特别明显: