最近抖音上有一个视频很火。打开一个叫 QzoneArchive 的工具,扫码登录,点一下归档,十多年前删掉的 QQ 空间说说和照片又出现在屏幕上。有些空间说说下面还能看见当年的点赞和评论。
这很容易让人产生一个疑问。QQ 空间里已经删掉的内容,工具是从哪里翻出来的?
我把 QzoneArchive 的项目说明、源代码从头到尾解析了一下。
它利用了两种仍是由 QQ 空间提供的数据。删掉的说说是从互动记录中提取出来的,仍然在相册回收站中的照片则可以通过 QQ 的恢复接口放回空间。
能找回多少,要看账号过去留下了多少互动,也要看 QQ 的接口现在还肯返回什么。短视频里常见的“全部恢复”四个字,确实说大了。
接下来我会先从技术角度拆开 QzoneArchive,解释它怎样沿着互动记录找到已删除的说说,也会讲清照片恢复、数据存储和断点续传的原理。原理讲完以后,文章会进入完整的使用教程,从官方下载开始,带着你们完成安装,再走一遍扫码归档和相册恢复。即使没接触过 GitHub 和开源软件,也可以照着操作。
如果你只想使用这个工具,可以直接跳到第二部分。
第一部分 QzoneArchive 为什么能找回已经删除的内容删掉的内容重新出现,关键在 QQ 空间现在还能返回什么。下面沿着源码走一遍,从扫码后的接口请求讲到本地 SQLite,再分清说说归档和相册恢复的两条路径。读完这一部分,你会知道自己的账号大概能找回什么,也能提前判断哪些内容已经没有恢复条件。
它读取的是 QQ 空间互动列表一条说说发布以后,常常会带来一串后续记录。有人点赞,QQ 空间会生成一条互动通知。有人评论或回复,又会产生新的通知。这些通知供“与我相关”这一类页面使用,它们和个人主页上的说说列表属于不同的数据入口。
QzoneArchive 读取的是 QQ 空间移动端互动接口 mobile.qzone.qq.com/get_feeds。项目的原理说明也公开写明了这条数据来源。
接口返回的每条互动记录由两部分组成。外层记录谁在什么时候做了什么,里面的 original 节点保存被互动的原动态。原动态中可能带有正文、作者、发布时间、图片地址、视频信息和评论内容。
这就是部分已删除说说还能出现的原因。说说从个人主页上消失了,与它有关的互动通知仍有可能被当前账号读取。程序顺着互动通知进入 original 节点,便能把那条说说重新整理出来。
这项能力有一个很硬的前提。
一条说说从来没有被点赞或评论,它通常不会进入互动列表。说说删掉以后,程序也就找不到可以追溯的记录。项目作者在 README 中明确写了这个限制。
从扫码登录到请求接口用户扫码以后,程序得到当前 QQ 空间会话的 Cookie。Rust 后端会从 p_skey 计算接口需要的 g_tk,随后携带这些会话信息访问 QQ 空间。二维码登录期间,用户不用把 QQ 密码填进 QzoneArchive。按照项目说明,登录凭证保存在 Rust 后端内存里,也不会写进运行日志。
开始归档后,当前接口实现先用 refresh_type=1 请求第一页。服务端返回 attachinfo,程序把它保存下来,继续翻页时改用 refresh_type=2,并将上一页的游标作为 res_attach 传回去。
这个游标里含有偏移量和时间边界。程序沿着游标逐页读取,直到接口表示没有更多内容。当前源码主要使用 res_type=1 这一条互动流。
请求拿到 JSON 后,归档程序会读取 cell_id、cell_summary、cell_pic 和 cell_video 等字段。作者、发布时间和互动类型也会一起解析。留言板采用另一种内容结构,程序会根据应用编号与动态键把它单独归类。
内容怎样存进本地QzoneArchive 在本机建立一个 SQLite 数据库。互动事件写进 archive_feeds,整理后的原动态写进 archive_dynamics。前者保留点赞、评论、回复和原始 JSON,后者供界面展示说说正文与媒体。
数据库会用账号编号和互动键识别重复事件,也会用账号编号和动态编号识别同一条说说。程序重新从第一页校验时,已经保存的内容会更新或跳过,不会一遍遍复制。
这套存法还给后续修复留了余地。界面平时读取整理后的字段。某类旧评论解析错了,开发者仍能利用保留下来的原始 JSON 修改解析方式,不必要求用户重新找一份源数据。
前端使用 Vue 3 和 TypeScript,桌面外壳采用 Tauri 2。登录、接口请求、数据解析和 SQLite 写入主要由 Rust 完成。归档数据留在当前设备,项目方没有用于接收用户空间内容的云端服务。
找回图片还要看源文件在不在互动记录中通常保存图片地址和相关参数,照片文件仍要从 QQ 图片服务下载。老版本 QQ 空间留下的字段并不整齐。同一张照片可能带有多个尺寸,也可能同时出现新版地址和旧版 busi_param 地址。
QzoneArchive 会依次尝试这些候选地址,并测试是否需要携带 Cookie 或来源页。文件下载回来以后,程序还会检查文件头,确认收到的是 JPEG、PNG、GIF 或其他支持的图片格式。QQ 常见的“图片不存在”占位图有固定特征,程序会把它识别出来,免得在界面里假装恢复成功。
成功下载的照片会缓存在本地。以后再次打开,软件可以直接读取缓存。
互动记录仍在,只能证明这张图片当年存在过。QQ 的图片节点还保留源文件,程序才有照片可下。源文件已经清理,所有候选地址都失效,最后可能只剩说说文字、发布时间和互动关系。
视频更容易受地址时效影响。项目文档提醒,QQ 视频链接的签名会过期。旧视频打不开时,可以重新归档一次,尝试刷新地址。服务端已经没有源文件,重新归档也不会增加成功率。
相册恢复使用 QQ 回收站接口相册走的是另一套流程。
用户打开软件里的“回收站”,QzoneArchive 会弹出 QQ 空间的独立密码验证页。密码由 QQ 页面处理,软件只接收验证成功后的临时签名 pwd2sig。随后,程序读取回收站相册和照片,再调用 QQ 空间的相册恢复接口。
整本相册可以恢复到原空间。单张照片也能放进已有相册,或者先新建一个相册再恢复。当前版本自动新建的相册会设为公开,私人照片最好先在 QQ 空间建好权限合适的相册,然后在软件里选择“已有相册”。
这里的恢复范围由 QQ 回收站决定。工具能列出的相册才有机会恢复。回收站已经清空,照片也不再由接口返回,QzoneArchive 无法延长平台的保留时间。
说说归档与相册恢复的结果也不同。说说通常进入本地 SQLite 和归档界面,不会自动重新发布到 QQ 空间。相册调用 QQ 的恢复接口,成功以后会重新出现在空间里。
想找的内容数据来自哪里最后保存在哪里成功条件已删除说说与互动移动端互动列表本机归档产生过互动,而且接口仍能返回已删除相册与照片QQ 空间回收站原 QQ 空间回收站仍能列出内容,并通过独立密码验证为什么归档中断以后还能继续老 QQ 号可能积累了很多页互动记录。连续快速请求容易触发接口限制,QzoneArchive 默认每页等待约 3 秒,设置页建议使用 3 到 5 秒。程序还会给等待时间增加一点随机变化。
同一账号每 10 分钟最多请求 300 页。达到限制后,任务保存当前进度并暂停,倒计时结束才能继续。
程序每读完一页,都会把下一页游标和已经保存的数量写入检查点。中断时间较短时,它会沿着原游标继续。游标放得太久可能失效,程序便从第一页重新校验,数据库负责去重。某一页反复报错时,当前版本还能记录异常位置,先读后面的内容,再回头单独重试。
这几处设计没有提高恢复上限,却能减少长任务跑到一半全部重来的情况。
图:QzoneArchive 通过检查点、频率保护和异常页记录,降低长时间归档中途失败后全部重来的风险。
它找不回哪些内容从未产生互动的已删除说说,通常无法通过这条互动流恢复。接口已经停止返回的记录也不会出现。动态的文字还在而图片源文件失效时,软件只能保住仍可读取的部分。
当前项目还有一个公开的数据覆盖问题。问题单中有用户报告,部分账号的 res_type=2 存在另一段互动流,而当前版本主要读取 res_type=1。本人尚未删除的说说也可能需要另一条说说列表接口补全。归档数量因此会随账号和接口返回变化,结果少几条未必是用户点错了按钮。
QQ 空间的访问权限仍然有效。当前账号无权读取的内容,工具也拿不到。请把它用于本人账号,或者已经取得明确授权的账号。
第二部分 普通人怎么安装和使用 QzoneArchive从这里开始只讲操作。对技术原理没兴趣,可以直接从这一节往下看。
第一步只从官方地址下载打开 QzoneArchive 官方仓库,点击右侧或页面中的 Releases,进入版本发布页。文件名看起来很多,普通用户只要认设备和后缀。或者跟你的AI工具说,比如豆包什么的都可以请从项目官方 GitHub Release 下载 QzoneArchive v1.0.3的Windows x64安装包,在D盘新建 QzoneArchive 文件夹,下载后核对官方文件大小和SHA-256。只下载,不要自动安装。
项目 README 已经发出安全提醒,近期有人使用非仓库来源的软件后发生账号信息泄露。这款工具需要登录 QQ 空间,来历不明的安装包风险很高。短视频评论区、陌生网盘群和二次打包网站里的版本都不要碰。
第二步选对安装包Windows 10 及更新系统下载名字里带 x64-setup.exe 的文件。它是普通安装程序,双击后按提示走完即可。系统通常已经安装 WebView2,缺少时安装程序会尝试补齐。对大多数人来说,Windows 版最省心。
Android 手机下载 app-universal-release.apk。系统提示不允许安装未知来源应用时,只给当前浏览器或文件管理器临时授权。软件装好以后,可以把这项授权关掉。
Mac 用户先看处理器。苹果 M 系列芯片选择 aarch64.dmg,Intel 芯片选择 x64.dmg。截至 2026 年 8 月,项目有一条公开问题记录指出 v1.0.3 的 Mac 安装包签名不完整,部分电脑会提示应用损坏或无法验证。普通用户遇到这种提示,可以等待项目更新签名,或者暂时换到 Windows 和 Android。不要照搬陌生网页上的命令关闭系统保护。
Linux 发布物包括 .deb、.rpm 和 .AppImage,按发行版选择即可。iPhone 发布页中的 IPA 没有签名,无法像 App Store 应用那样直接安装,不适合作为普通用户的首选。
第三步扫码登录自己的 QQ 空间启动软件以后先看免责声明,然后点击登录。Windows 等桌面版本可以使用手机 QQ 扫二维码,也提供网页登录。
扫码时确认手机 QQ 当前登录的是准备归档的账号。任务运行期间不要切换手机 QQ 账号,项目文档提示这样做可能带来账号冻结风险。
登录成功后,页面会显示账号昵称和 QQ 号。到这里先别急着改设置。默认的单页获取间隔是 3000 毫秒,已经适合大多数网络环境。网络不稳定时可以改成 5000 毫秒。间隔调得很小不会多找回内容,只会更容易撞上限流。
第四步开始第一次归档打开左侧的“任务”,找到“QQ 空间动态归档”,点击“开始归档”。接下来可以把软件放在一边,让它按页读取。
任务卡片会显示已经读取的页数、拿到的事件数和保存数量。老账号跑很久很正常。速度慢通常说明程序正在遵守请求间隔,并不等于卡死。
出现“频率保护”以后就等倒计时。关掉软件、电脑休眠或临时断网也不用慌,下次打开可以继续。真有异常页面,任务下方会出现跳过记录,等主任务结束后再重试。
第五步查看找回的内容任务结束后打开“归档”。这里按本人动态、其他动态和留言分类。点开一条说说,可以查看正文、图片、点赞用户和评论回复。
“媒体”页面会把照片与视频按年份排列,找老照片比一页页翻说说方便。“联系人”页面则会统计互动对象,适合看看这些年谁最常出现在评论区。
图片第一次打开时仍要联网下载。下载成功后,软件会把图片缓存在本机。某张图片只显示加载失败,先点重试。几个候选地址都失败,通常说明 QQ 端的源文件已经无法读取。
第六步把重要内容再备份一份归档页面支持导出 HTML。导出的文件可以在浏览器里打开,正文、时间、评论和页面样式都会保留下来。
当前源码生成的 HTML 仍可能引用 QQ 在线图片和视频地址。只保存一个 HTML 文件,几年后未必还能看到全部媒体。重要照片最好另外下载,本地数据库和导出文件也复制到可信的移动硬盘或加密存储中。
公开分享以前先检查内容。归档里可能带有好友昵称、QQ 号和评论,图片中也可能出现其他人。需要公开的部分先打码。
想恢复相册,再走一次回收站流程打开侧边栏中的“回收站”,点击验证独立密码。软件会弹出 QQ 空间页面,完成验证后自动读取可恢复的相册和照片。
想恢复整本相册,就进入对应相册后选择整册恢复。只想恢复几张照片,回到“全部照片”,勾选照片,再选择一个已有相册。软件也能新建相册,不过当前版本会把新相册设为公开,涉及私人内容时别顺手一路点确定。
恢复完成后回 QQ 空间相册检查一次。回收站里的内容会变化,目标相册也可能有权限设置,确认照片已经出现再结束操作。
遇到问题先看这几处归档数量很少时,先想一下早年的说说有没有人点赞或评论。互动少,能够沿互动列表找回的内容自然也少。公开问题单提到的数据覆盖缺口也可能影响结果。
视频打不开时重新归档,看看能否刷新签名。图片一直失败时,换网络和重试有用,但解决不了 QQ 已经清掉源文件的情况。
扫码或接口连续报错时先停一会儿。反复刷新和缩短请求间隔通常只会增加限制。项目支持续传,没必要和倒计时较劲。
如果安装包来自第三方,直接卸载,改从官方 Release 重新下载。账号已经出现异常登录提醒时,尽快在 QQ 安全中心检查设备并修改密码。
如果这个项目帮你找回了重要内容,可以到 QzoneArchive 官方仓库 给作者点一个 Star。你的 Star 会让更多需要备份 QQ 空间的人找到它。