5 步免费导出微信聊天记录:用 wechat-dump 把安卓里的对话变成可搜索 HTML
【免费下载链接】wechat-dumpAnalyzing your wechat message history from android项目地址: https://gitcode.com/gh_mirrors/we/wechat-dump
你的微信里躺着几年份的聊天记录,想备份却找不到官方出口——截屏翻页太慢、第三方网盘同步怕泄露、云端恢复又只认自家账号。这款开源工具wechat-dump(GitHub 加速计划 / we / wechat-dump)专门解决这个痛点:它从已 root 的安卓手机上直接解析微信数据库,把文字、图片、语音、表情、视频统一渲染成一个独立的 HTML 文件,离线也能打开,还能顺手统计出你和谁聊得最勤。
先看清差距:翻聊天记录 vs 一键导出
一句话定调:wechat-dump 干的事,是把"微信锁死在自己数据库里的消息"翻译成你能看懂、能检索、能分析的普通文件。它不依赖微信的任何导出接口,直接读原始数据,保证一条不漏。
| 对比维度 | 手动截屏 | 微信自带备份 | wechat-dump |
|---|---|---|---|
| 图片语音 | 截屏丢原图 | 只能恢复到微信 | 全部解出并嵌入 HTML |
| 可搜索 | 不能 | 不能 | 浏览器 Ctrl+F 直接搜 |
| 可统计 | 不能 | 不能 | 自带统计脚本 |
| 一次导出耗时 | 以天计 | 5 分钟 | 实测 5 分钟内出结果 |
最短路径实操:从零到 output.html 的 6 个动作
下面这套流程走完,你就能在浏览器里看到自己导出的完整聊天记录。前提条件先列清楚:一台已 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.shsox 用系统包管理器装(macOS 是brew install sox,Ubuntu 是apt install sox)。
第三步,拉取数据库文件。手机连上电脑并开启 USB 调试后运行:
./android-interact.sh db脚本会自动在/data/data/com.tencent.mm/MicroMsg下找一个 32 位十六进制的用户目录,把EnMicroMsg.db和旧版的avatar.index拉到当前目录。
第四步,解密数据库。微信的数据库是加密的,wechat-dump 明确不提供解密方法,你需要用 SQLCipher 等工具自行解密,得到EnMicroMsg.db.decoded。解密密钥通常和设备 IMEI、微信 UIN 相关,这一步以你所用解密工具的官方说明为准。
第五步,拉取资源目录。头像、表情、图片这些原始文件同样需要:
./android-interact.sh res结束后确认当前目录下有一个resource文件夹,里面包含avatar、emoji、image2、sfs、video、voice2六个子目录。
第六步,导出并打开。先查一下该用哪个名字:
./list-chats.py EnMicroMsg.db.decoded然后把你看到的联系人显示名填进命令:
./dump-html.py "郭家賓"几秒钟后当前目录出现output.html,浏览器打开就是完整的聊天页面。想换输出文件名或指定数据库路径,用./dump-html.py -h查看全部参数。
亮点一:专有 WXGF 图片格式的两种解码方案
微信把聊天图片和表情存成自有的 WXGF/WXAM 格式,普通看图软件认不出来。wechat-dump 给了两条路:
- 方案 A(推荐):电脑上装好 ffmpeg,解析时自动在本地解码,全程无感。
- 方案 B:没有 ffmpeg 时,装一个项目自带的 WXGF Decoder 安卓应用当解码服务器,然后在导出命令里追加
--wxgf-server ws://设备IP:8080指向它。
WXGF Decoder 是个图形界面小应用,点一下"START SERVER"就开跑:
注意它依赖原生库,需要 ARMv8(arm64-v8a)架构的设备,并且要和电脑连在同一个 WiFi 下。日志里那两行size=174061和After decoding: size=348182就是在告诉你:原始 WXGF 字节流已经被还原成标准图片了。
亮点二:20 多种消息类型的完整还原
解析器对消息类型做了精细区分,光是常量就有 20 多个。文字、图片、语音、视频这些基础类型自不必说,红包会解析出"发送者标题",转账会解析出金额描述,位置消息会还原成"名称 + 经纬度",连 QQ 音乐分享都能拆出歌名、歌手和链接。语音消息走 Silk 解码器转成可播放格式,嵌入 HTML 后点一下就能听,时长显示也一并保留。
亮点三:三条命令,把聊天记录变成数据
导出之外,项目还送你几个统计小工具。想拿到所有聊天对象的纯文本消息,一条命令搞定:
./dump-msg.py EnMicroMsg.db.decoded output_dir想统计每个对话的消息数量,再跑:
./count-message.sh output_dir想看清自己的活跃时段,./plot-num-msg-by-time.py会按时间画出消息分布图。这三步走完,你的聊天记录就从"封闭数据"变成了"可分析数据"。
避坑锦囊:新手最容易栽的 4 个跟头
❌ 数据库没解密就开跑 → ✅ 先确认文件头。dump-html.py默认找EnMicroMsg.db.decoded,如果直接拿加密库喂进去,解析器会报错甚至卡死。动手前先确认这个文件是解密产物。
❌ 手动去翻用户目录拼路径 → ✅ 让脚本自己找。android-interact.sh会扫描 32 位十六进制的目录名并自动选中,省去你在 root 文件系统里摸索的功夫。万一它选错了(README 里也提示过可能选中错误 userid),再手动指定。
❌ 在 Android 系统自带 tar 上硬拉大目录 → ✅ 优先 busybox。微信资源目录动辄几个 G,系统自带 tar 遇到长路径容易断。脚本默认优先尝试busybox tar,失败才退回adb pull,所以别在中途手动中断它。
❌ 首次导出等表情下载等到怀疑人生 → ✅ 提前解压表情缓存。表情包数量庞大,官方发布页提供了emoji.cache.tar.bz2缓存包,下载后解压到项目根目录,渲染时就能跳过大量网络下载。
❌ WXGF 图片显示为空白 → ✅ 检查解码链路。先确认 ffmpeg 是否真的在 PATH 里,没有就走方案 B 并核对ws://地址能否从电脑访问(ping一下手机 IP 最直接)。
真实效果演示:一张截图看懂导出的成品
下面是项目仓库里一份真实导出的 HTML 截图,聊天对象是"郭家賓":
逐条解读这张图,你能看到几个关键设计:
- 时间分片:截图里 7:44、2:52、17:48:50 这些灰色时间戳不是随手打的。渲染器把两条消息间隔超过 5 分钟的对话切成分段,换天则强制开启新分段——这也是为什么长篇聊天记录能被组织得井井有条。
- 气泡方向:左侧绿色气泡是对方消息(带头像),右侧绿色气泡是本人消息,方向逻辑和微信一致,看一眼就懂。
- 内嵌图片:图片消息以原图质量嵌进气泡内,不需要外部加载,这正是"独立 HTML 文件离线可看"的底气。
- 自动分卷:消息量特别大的对话,单文件会按每 1500 条左右拆分成
output00.html、output01.html依次命名,避免一个 HTML 大得让浏览器卡死。
收尾:下一步你可以做什么
到这里你已经完整跑通了导出流程。想往深了走,这三个方向最值得尝试:
- 批量导出所有联系人:写个 shell 循环,把
list-chats.py的输出喂给dump-html.py,一个脚本搞定全家桶。 - 定制页面样式:消息模板在 wechat/static/ 目录里,改
TP_MSG.html和wx.css就能换掉默认的绿白配色,做成你自己的风格。 - 按时间段切片导出:
dump-html.py支持--start "2024-01-01 00:00:00"参数,想只导出某一年的记录,一条命令即可。
继续深入了解,可以直接翻仓库根目录的 README.md 和 WXGFDecoder/ 的说明。工具在 2025/01/01 验证过最新版微信,但微信每次更新都可能调整数据库结构,如果遇到解析异常,去项目的 wiki 或 Issues 里看看有没有人报告相同情况——那里通常藏着最快的解法。
【免费下载链接】wechat-dumpAnalyzing your wechat message history from android项目地址: https://gitcode.com/gh_mirrors/we/wechat-dump
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考