微信聊天记录导出完整指南:wechat-dump 让安卓聊天记录一键变成可检索 HTML
【免费下载链接】wechat-dumpAnalyzing your wechat message history from android项目地址: https://gitcode.com/gh_mirrors/we/wechat-dump
你一定遇到过这样的时刻:换新手机前,想把和某个人的微信聊天记录永久存下来,结果翻遍设置只找到"迁移";想统计一下和某位老友到底聊了多少条、语音有多长,微信里却没有任何入口。作为国内最主流的聊天工具,微信从不提供官方导出能力,你的数据被困在 App 里,无法备份、无法分析、无法带走。
wechat-dump正是为解决这个问题而生的安卓微信聊天记录导出工具。它从已 root 的手机中提取微信数据库与资源文件,把文字、图片、语音、表情、视频解析并渲染成一份自包含的 HTML 网页,就像把整个聊天窗口原样搬进浏览器。这篇文章会用一次真实的导出流程,带你从零跑通它,并分享那些文档里没写清的坑。
为什么需要一款微信聊天记录导出工具
微信的数据封闭性,是这款工具存在的全部理由。官方既不开放导出,也不提供任何数据分析接口,用户连自己的聊天记录都无法访问。
wechat-dump 的破局思路很直接:绕过 App 层,直接处理手机上的原始数据库文件。只要设备能拿到 root 权限,就能把EnMicroMsg.db和头像、图片、语音、表情等资源目录完整搬出来,再由项目自带的解析器还原成可读、可渲染的消息流。
它能导出的内容相当完整:
- 文字消息,保留排版和换行
- 图片消息,自动解码嵌入网页
- 语音消息,转成可播放的 mp3
- 视频文件、表情包、引用回复、音乐分享
- 时间戳、系统提示等辅助信息
更重要的是,最终产物是自包含的 HTML 文件,不依赖任何网络服务,离线双击就能浏览,还可以随手传给任何人。
上图就是一份真实导出结果:左侧是对方头像和语音气泡(带时长),右侧是自己的绿色气泡,图片消息原样展示,时间线清晰分隔了不同时段的对话。整个过程没有任何手工整理,全部由工具自动完成。
三分钟跑通第一步:环境准备
先明确一个前提:你需要一台已 root 的安卓手机、一条可用的 adb 连接,以及一台装了 Python 3.8 以上版本的电脑(Linux / macOS / Windows 加 Bash 均可)。
git clone https://gitcode.com/gh_mirrors/we/wechat-dump cd wechat-dump pip install -r requirements.txt除了 Python 依赖,还建议提前装好两个小工具:
- sox:语音处理命令行工具,负责语音消息的格式转换
- ffmpeg / ffprobe:可选但强烈推荐,用于在电脑本地解码微信的 WXGF 专有图片格式
项目还内置了 Silk 语音解码器源码,跑一下./third-party/compile_silk.sh编译即可,语音消息能否正常导出就靠它。
微信数据库提取:最关键的一步
环境就绪后,核心工作是把微信的数据从手机里"搬"出来。项目提供了一个半自动脚本,帮你完成大部分操作:
# 提取数据库和头像索引 ./android-interact.sh db # 提取头像、图片、语音、表情、视频等资源目录 ./android-interact.sh res脚本会自动在手机的/data/data/com.tencent.mm/MicroMsg下寻找那个 32 位十六进制字符组成的用户目录,并把EnMicroMsg.db以及avatar、image2、voice2、emoji、video、sfs等子目录拉到本地resource目录。
这里要提醒一句:拿到手的EnMicroMsg.db是加密的。wechat-dump 本身不负责解密,这一步需要你自己用 SQLCipher 之类的工具处理,密钥通常与设备 IMEI 和微信 UIN 相关。解密后得到一个可被 sqlite3 直接打开的文件,后面所有命令都基于这个"已解码数据库"。
一键生成聊天记录 HTML:完整实操演示
假设你已经拿到了解码后的数据库文件EnMicroMsg.db.decoded和完整的resource目录,接下来就是见证奇迹的时刻:
# 先看看有哪些联系人 ./list-chats.py EnMicroMsg.db.decoded # 导出某个联系人的完整聊天记录 ./dump-html.py "联系人显示名称"执行后,当前目录会生成output.html。用浏览器打开,就能看到前面截图里那种还原度极高的聊天界面——头像、气泡、时间线、图片、语音、表情全部就位。
几个常用参数值得记住:
# 指定输出文件 ./dump-html.py "张三" --output zhangsan.html # 只导出某个时间点之后的消息 ./dump-html.py "张三" --start "2024-01-01 00:00:00" # 消息特别多时,会自动拆分成多个 html 分片输出如果只想导出语音消息,项目还提供了独立脚本dump-audio.py,能把某个联系人的所有语音批量转成带时长的 mp3 文件,一条一条保存到指定目录。
我踩过的坑:WXGF 图片解码失败
第一次跑通dump-html.py后,我发现文字和语音都正常,但很多表情和图片变成了空白占位符。排查后发现,微信的图片和部分表情用的是WXGF/WXAM 专有格式,普通浏览器根本不认。
wechat-dump 给了两条解码路径:
路径一:本机 ffmpeg 解码。只要电脑装了 ffmpeg 和 ffprobe,工具会优先尝试本地解码,单帧输出 PNG,多帧输出 GIF,全程自动,无需干预。
路径二:安卓解码服务器。如果电脑上没有 ffmpeg,项目还附带了一个安卓应用 WXGFDecoder,安装到手机后启动服务器,然后在导出命令中加上:
./dump-html.py "张三" --wxgf-server ws://手机IP:8080前提是电脑和手机处于同一网络。看到下面的界面说明服务器已经就绪。
如果解码仍然失败,多半是 WXGF 文件本身有问题或服务器地址不通,可以先检查应用日志里是否出现了received binary message与After decoding记录。
从"能导出"到"会分析":聊天数据的附加价值
导出 HTML 只是开始。wechat-dump 的价值在于,它把微信数据变成了普通 sqlite 数据库,接下来你想怎么用都行。
项目自带几个分析脚本,几乎零成本上手:
# 把所有聊天导出为纯文本,方便全文检索 ./dump-msg.py EnMicroMsg.db.decoded output_dir # 统计每个联系人的消息条数、字符数 ./count-message.sh output_dir # 绘制某个联系人的消息数量随时间分布图 ./plot-num-msg-by-time.py EnMicroMsg.db.decoded "联系人名称"比如你想知道自己和好友哪段时间聊天最频繁、语音总共聊了几小时,这两条命令就能给出答案。如果想批量导出多个联系人的聊天记录,写个循环脚本调用dump-html.py即可,几十个联系人也就几分钟的事。
表情包缺失问题的省心解法
首次导出时,很多表情需要联网下载,量大且慢。项目提供了预打包的表情缓存,可以在官网 Release 页面找到emoji.cache.tar.bz2,下载后解压到项目根目录,渲染时会优先使用本地缓存,速度提升非常明显,也能避免个别表情因微信版本更新而下不到、只能显示占位符的情况。
这份聊天记录导出工具适合谁
如果你属于下面任何一类,wechat-dump 都值得一试:
- 想永久保存和重要的人之间的聊天,而不是靠截图一张张存
- 想做数据归档,把多年聊天记录变成可检索的本地档案
- 好奇自己的聊天行为数据,比如消息频率、语音时长、活跃时段
- 想基于自己的聊天数据做二次开发
它免费、开源、可离线使用,直接处理原始数据库,数据完整度是截图方案完全比不了的。唯一的门槛是 root 设备和数据库解密,这两步需要一些耐心,但一旦跑通,后面就是复制粘贴级别的操作。
现在就去克隆项目,给你的微信聊天记录建一个真正的数字档案馆吧——那些不会再有新消息的对话框,值得用 HTML 的形式被好好保存下来。
【免费下载链接】wechat-dumpAnalyzing your wechat message history from android项目地址: https://gitcode.com/gh_mirrors/we/wechat-dump
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考