大约四年前,我有了一个暗恋对象,所以想要把微信的聊天记录保存起来。那时在网上只有一种要付费的类似软件,所以我想,写一个开源的工具好了。于是这件事 很快就完成了(对应微信 6.0;那时的代码质量很低我知道)。
后来我没有了暗恋对象,也就不再关心这件事。最近,因为有不少人认为这样的功能仍然很有用,并且据我搜索到的情况,仍然没有能让每个人拿来直接用的工具。因为在几年之间文件结构发生了一些变化,我在这里记录下来,方便其他的开发者(对应现在的版本 6.3.25;虽然我没想到还能有什么用)。
过去,我可以提示用户在越狱之后用软件自行把微信 App 所在文件夹复制出来。然而自从某个版本的 iOS 开始,在不越狱的情况下,我们只能看到 /User/Media 这里的文件,而需要的本地数据在 /User/Containers/Data/Application/ 微信的 UID。强迫用户为了这么一件事前去越狱显然不太友好,而对「聊天记录迁移」抓包也不方便,所以我想到另一种途径。
这就是 iTunes 备份。从经验判断,恢复备份之后微信里的聊天记录都还在,说明肯定这些文件在备份的时候保存到了电脑上。它们在哪里?苹果官方给了答案。简单地说,Windows 下在 \用户\(用户名)\AppData\Roaming\Apple Computer\MobileSync\Backup\,然后我不喜欢用 Mac OS。
不过,iTunes 备份的文件夹结构不是很友好,似乎每个手机上的文件名都变成了一串序号,当然打开相关的 plist 然后看出规律也不难。好消息是,已经有很多人做了类似的事情,例如 iphonebackupbrowser,它也是用 C# 写的,用起来比较方便。