备份微信聊天记录
现状
随着时间推移,微信聊天记录占用空间越来越夸张。微信上除了家人和密友,还有了各式各样的群,比如工作群、爱好群。随着手机性能的提升(相机性能导致照片视频变大,运算性能导致可解码的文档变大),聊天记录也突破百 G 并绝尘而去。
虽然近几年手机的存储空间越来越便宜,拿容量当金子卖的苹果也过滤到 128G 起,但不是每个人都有换机计划。
最好的解决方案当然是微信官方出一个云聊天记录的服务,但自从 2021 年传过一次微信拟推出聊天记录付费云存储服务之后,就再无消息。
不能坐以待毙,思考一下目前我们能做些什么。
构思
最佳设计肯定是像 QQ 那样,聊天记录全设备无感漫游。但很显然除了微信官方,谁都做不到。
退而求其次,仅实现手动聊天记录上云,一共需要这么几个功能:
- 上传,用户手动上传微信聊天记录上云;
- 下载,用户手动下载微信聊天记录到手机;
- 查看,用户可以非常灵活的搜索,查看云端聊天记录。
比如,查看时间为 2021 年 8 月份,对象是所有人,包含关键字“家长会”的聊天记录。
又比如,查看时间为 2020 年暑假,视频时间超过 1 分钟 的视频。
上传下载
微信将上传下载功能划分为了两类:
- 备份(Backup)与恢复(Restore)。备份和恢复是全量的、替换的。
- 迁移(Migrate)。迁移是增量的、合并的。
而在我们的设计里,因为云端要尽量保持完整数据,所以完全不需要全量替换,只要增量迁移。
上传方式
微信官方提供了三种上传方式:
- 从手机备份到电脑
- 从手机迁移到电脑
- 从手机迁移到另一台手机或平板
使用平板端
微信支持三端登录,对普通的上班族来说,使用的优先级应该是手机 > 电脑 > 平板,其中平板很可能从来不用。那么我们就可以利用这点,将平板做为同步的中转站。
推荐使用mumu 模拟器,支持使用平板端的微信。
mumu 内置的 adb 等工具在c:\Program Files\NetEase\MuMu Player 12\shell\
。
数据解析
微信管理的用户数据大概有这么几类:
- 聊天记录
- 图片
- 视频
- 语音
- 文件
根据平台不同,分别存放在不同位置。
解密
微信聊天记录使用了微信自研的数据库框架wcdb,特性是使用了sqlcipher对 sqlite 数据库进行加密,并支持了多种语言环境。
桌面端解密
桌面端的解密可以参考PyWxDump开源项目,项目作者将原理写成了公众号系列文章。
移动端解密
android参见文章备份微信聊天记录-android篇。