5分钟上手wechat-dump:把安卓微信聊天记录完整导出成HTML的实战指南
【免费下载链接】wechat-dumpAnalyzing your wechat message history from android项目地址: https://gitcode.com/gh_mirrors/we/wechat-dump
当你想永久保存聊天记录,却发现微信根本没有"导出"按钮
你有没有过这样的时刻:手机里攒了好几年的微信聊天记录,想整理成一份可以永久保存、随时翻阅的个人档案,结果翻遍设置也没找到"导出聊天记录"这个功能。复制粘贴?几千条消息根本不现实。截图?那得截到什么时候。官方不给入口,数据就永远锁在手机里——这正是绝大多数微信用户面对的尴尬。
好在开源社区有解决方案。wechat-dump就是这样一个工具:它从安卓设备中读取并解析微信聊天数据库,把文字、图片、语音、表情一键渲染成自包含的 HTML 文件,浏览器打开即可离线浏览。你不需要写任何代码,跟着下面的步骤走,5 分钟就能生成自己的第一份聊天档案。
一句话说清:wechat-dump 到底解决了什么
它把锁在微信里的聊天记录,变成完全属于你、可离线查看、可统计、可二次开发的数据资产。
和市面上零散的"截图整理法"不同,wechat-dump 有三个鲜明的差异点:
- 直接解析原始数据库,保证数据完整,不遗漏任何一条消息;
- 产物是单个自包含 HTML,图片、样式全部内嵌,拷走即用,无需联网;
- 解析模块完全开放,你可以在此基础上写自己的脚本,继续挖掘聊天数据。
项目最近一次在最新版微信上验证通过,工具链成熟稳定,可以放心上手。
跟着我做:从安卓手机到一份 HTML 聊天档案
下面进入实战。整个过程分为四步,每一步做完你都能看到明确的结果。
第一步:准备环境,三行命令装好依赖
你需要准备的东西很常规:一台已 root 的安卓手机、装了 adb 的电脑(Linux / macOS / Win10+Bash 均可)、Python 3.8 及以上版本。接着克隆项目并安装依赖:
git clone https://gitcode.com/gh_mirrors/we/wechat-dump cd wechat-dump pip install -r requirements.txt如果想让语音消息也能转成可播放的格式,再补两件事:安装命令行工具sox,然后编译项目自带的 Silk 语音解码器:
./third-party/compile_silk.sh到这里,环境就绪。✅
第二步:从手机拉取数据库与资源文件
微信的数据分为两部分:聊天内容的数据库,以及头像、图片、语音、表情等资源文件。项目提供了自动化脚本,一条命令搞定:
./android-interact.sh db ./android-interact.sh resdb会在手机/data/data/com.tencent.mm/MicroMsg下自动定位那个 32 位十六进制字符的 userid 目录,拉取EnMicroMsg.db数据库;res则把avatar、emoji、image2、voice2等资源目录打包传回本地的resource目录。资源传输可能比较耗时,脚本会自动尝试 busybox tar、tar、adb pull 三种方式,按最快可行的来。
第三步:解密数据库,先看看有哪些聊天
微信数据库是加密的,wechat-dump 本身不做解密,你需要用 SQLCipher 之类的工具把EnMicroMsg.db解密成明文,并命名为EnMicroMsg.db.decoded(这是工具默认读取的文件名,也可以用--db参数指定别的路径)。
解密完成后,先列出所有聊天,确认联系人名称:
./list-chats.py EnMicroMsg.db.decoded运行结果会打印每个聊天对象在数据库中的准确显示名称。这个名称很关键,下一步要用它。
第四步:一键生成 HTML,浏览器里回顾历史
现在到了最有成就感的一步。选择你想导出的联系人,运行:
./dump-html.py "联系人的显示名称"等待几秒,当前目录就会出现output.html,直接用浏览器打开,一份还原微信界面的聊天记录就呈现在你眼前了——绿色气泡是你的消息,灰色气泡是对方的,时间戳清晰分隔,图片、表情、语音都嵌入其中。🚀
如果你想要按时间区间导出,或者换输出路径,工具都提供了对应参数:
./dump-html.py "联系人" --output my_chat.html --start "2020-01-01 00:00:00"避坑锦囊:四个高频问题一次讲透
新手最容易卡住的,往往是下面这几个地方。这里统一用"现象→原因→解决办法"帮你排掉。
⚠️ 资源拉取失败或极慢
- 现象:
./android-interact.sh res一直失败,或传输速度感人。 - 原因:不同微信版本资源目录不同——老版本在
/mnt/sdcard/tencent/MicroMsg,脚本默认值只适配新版;另外安卓系统的 tar 在长路径下容易报错。 - 解决:先检查脚本顶部的
RES_DIR是否与你的机型一致;传输时优先让设备端用 busybox tar 打包再传,效率高得多。
⚠️ 找不到联系人
- 现象:
dump-html.py报Couldn't find the chat xxx。 - 原因:你输入的名称和数据库里存的显示名称不完全一致(比如多了空格或特殊符号)。
- 解决:先运行
./list-chats.py,把打印出来的名称原样复制进命令。
⚠️ 图片、表情显示为空白
- 现象:HTML 生成了,但图片区域是空的。
- 原因:微信的图片和表情用的是专有的 WXGF/WXAM 格式,电脑端没有解码器;部分表情还会因为微信版本更新导致下载不到。
- 解决:优先给电脑装上 ffmpeg,工具会自动本地解码;装不了就启用安卓解码服务器(见下文进阶玩法)。表情缺失可以预先下载项目提供的 emoji 缓存包并解压到项目目录,大幅减少下载量。
⚠️ 语音消息无法播放
- 现象:HTML 里语音条点不开。
- 原因:缺少
sox或 Silk 解码器。 - 解决:安装 sox,并执行
./third-party/compile_silk.sh编译项目内置的 Silk 解码源码,然后重新生成 HTML。
进阶玩法:如果还想更进一步
基础导出你已经掌握了,接下来这些能力能让这份档案更有价值。
批量导出多个联系人
写一个几行的 bash 循环,一次导出所有想保留的聊天:
#!/bin/bash for name in "张三" "李四" "王五"; do ./dump-html.py "$name" --output "${name}.html" done全量文本统计与时间分布分析
先把所有聊天的纯文本导出来,再做统计:
./dump-msg.py EnMicroMsg.db.decoded output_dir ./count-message.sh output_dircount-message.sh会输出每个会话的行数、字符数、词数排序表;再用./plot-num-msg-by-time.py,还能把消息数量随时间的变化画成分布图,看看你们聊得最火热的是哪几个月。
WXGF 图片解码:ffmpeg 之外的第二方案
没有 ffmpeg 的环境,可以用项目内置的 WXGF Decoder 安卓应用当解码服务器。装上 APK、点一下"Start Server",在导出命令里加上--wxgf-server ws://设备IP:端口即可,应用界面上会实时打印解码日志:
模板定制与二次开发
生成的 HTML 样式来自wechat/static/目录下的模板文件,TP_MSG.html控制消息布局、TP_IMG.html控制图片展示、wx.css控制整体风格,改完即生效。如果你懂一点 Python,wechat/目录下的 parser、render、res 模块都是独立可复用的,完全可以基于它们写自己的聊天数据分析程序。
成果验收:此刻你拥有了一份怎样的档案
我们来看看实际导出的效果。下图是一份真实生成的 HTML 聊天记录:左右气泡区分收发双方,时间戳清晰分隔时段,文字、图片、语音一应俱全,视觉效果和微信本体几乎一致:
更重要的是,这份文件是自包含的——它不依赖网络,不依赖微信服务器,你可以把它拷到 U 盘、存进网盘,或者上传到自己的博客。哪怕将来手机换了、微信号没了,这段对话历史依然完整地属于你。
下一步:从这份档案出发
此刻你已经拥有了一份可离线查看的完整聊天档案。如果想玩得更深,项目的源码结构非常清晰:wechat/是核心解析与渲染模块,WXGFDecoder/是安卓解码应用,third-party/内置了 Silk 语音解码器。项目还公开了待办清单,比如更完整的表情下载、罕见消息类型的支持、host 端 WXGF 解码覆盖等,都是不错的贡献方向。
把工具装进你的开发环境,花 5 分钟导出一份自己的聊天记录——当你第一次在浏览器里翻看那些年聊过的话,你会明白为什么这件事值得做。现在就动手吧。🚀
【免费下载链接】wechat-dumpAnalyzing your wechat message history from android项目地址: https://gitcode.com/gh_mirrors/we/wechat-dump
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考