十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

微信聊天记录导出全攻略:用 wechat-dump 把十年对话搬进浏览器

微信聊天记录导出全攻略:用 wechat-dump 把十年对话搬进浏览器 微信聊天记录导出全攻略用 wechat-dump 把十年对话搬进浏览器【免费下载链接】wechat-dumpAnalyzing your wechat message history from android项目地址: https://gitcode.com/gh_mirrors/we/wechat-dump换机那天我才发现全家十年的微信聊天记录差点彻底蒸发——官方没有导出按钮云备份只恢复最近 90 天剩下的全是加密乱码。折腾了一整周我最终靠开源工具 wechat-dump 完成了微信聊天记录导出它直接从安卓设备读取微信数据库把文字、图片、语音、表情原样还原成一份可永久保存、可离线浏览、可搜索的 HTML 档案。这篇攻略就是我从踩坑到上手的完整实战记录。动手之前微信到底把聊天记录藏在哪里很多人以为聊天记录就是一坨数据库文件其实微信把数据拆成了两半账本EnMicroMsg.db一张加密的 SQLite 表记录每条消息的时间、类型、发送者和正文。仓库手机上的avatar、emoji、image2、voice2、video、sfs等资源目录存着头像、表情、原图和语音文件本体。wechat-dump 干的事就是拿着账本去仓库取货从message、rcontact、ImgInfo2、EmojiInfo这些表里解析出消息索引再去资源目录里找到对应的图片语音最后统一装进网页这个展柜。解析逻辑集中在wechat/parser.py渲染逻辑在wechat/render.py想深入了解运行原理的人可以直接翻源码。前置条件一台 root 手机和三条命令工具的环境要求并不苛刻一台已 root 的安卓手机、开启 USB 调试、电脑上装好 adb 和 Python 3.8。依赖用一条命令装齐pip install -r requirements.txt语音解码还需要sox和项目自带的 Silk 解码器./third-party/compile_silk.sh编译一下即可。装完之后获取数据的两个动作都有现成脚本./android-interact.sh db # 自动定位 userid 目录拉取加密数据库 ./android-interact.sh res # 拉取 avatar/emoji/image2 等全部资源目录脚本会自动在/data/data/com.tencent.mm/MicroMsg下找出那个 32 位十六进制字符的 userid 目录——这是新手最容易卡住的地方手动找的话经常翻错目录。资源体积大脚本会优先用busybox tar打包后传输比adb pull逐文件拷贝快得多。第一个绕不开的坑数据库要自己解密android-interact.sh拉回来的是加密库wechat-dump 明确不负责解密需要自己用 SQLCipher 之类的工具解开密钥通常和设备 IMEI、微信 UIN 相关。解密后得到一个EnMicroMsg.db.decoded这才是工具能读懂的文件。这块没有捷径但别慌——解密只是整个流程里最费心的一步后面就顺畅了。核心操作一条命令导出单个联系人的完整聊天记录所有准备就绪后导出单个联系人的聊天记录只需要一条命令./dump-html.py 联系人显示名称默认生成output.html用浏览器打开就是一份完整的对话档案。常用参数也都给足了./dump-html.py 联系人 --db EnMicroMsg.db.decoded --res resource --output 我的聊天.html--start参数可以只导出某个时间点之后的消息对话太长时工具会自动按 1500 条或时间间隔切片成多个 HTML 文件避免单文件过大卡死浏览器。上面那张截图就是真实导出的效果左侧是语音气泡带时长右侧是绿色文字气泡图片按原始质量嵌入时间戳自动分组整个界面和微信几乎一模一样。图片为什么是黑屏认识 WXGF 这个专有格式第一次导出时我发现表情和图片全是黑块。查了半天才明白微信用自研的WXGF/WXAM 格式本质是 HEVC 视频流套了一层专有容器存图片浏览器根本不认识。wechat-dump 给了两条解码路线路线一本地 ffmpeg 解码。电脑装了 ffmpeg/ffprobe 后wechat/wxgf.py会自动从 WXGF 文件里提取 Annex-B HEVC 比特流单帧转 PNG、多帧转 GIF全程本地完成最省事。路线二安卓端 WXGF Decoder 服务器。没有 ffmpeg 的环境可以在安卓设备上装WXGFDecoder这个配套应用点一下START SERVER把地址以--wxgf-server ws://设备IP:端口传给导出命令手机就变成了一个解码服务器电脑把图片数据发过去、收回来的是标准格式。下面就是它运行时的界面两条路都失败时工具会回退显示占位符至少不会让整个页面崩掉。语音、表情、视频这些硬骨头是怎么啃下来的文字和图片搞定后剩下的三类消息才是真正体现工具功底的地方语音微信把语音存成 Silk 编码电脑没法直接播。wechat-dump 内置了完整的 Silk 解码器源码third-party/silk/配合 sox 转成 mp3 嵌进网页时长、播放按钮都保留。表情包EmojiInfo表里只存表情的 md5 和 CDN 地址。工具会先在本地emoji目录里找找不到再按需从网络拉取拉回来的表情还会写进本地缓存下次导出直接命中不用重复下载。视频消息表里的视频索引会对应到video目录同时生成缩略图网页里点开即看。从存档升级到分析把聊天记录变成数据导出 HTML 只是第一步wechat-dump 真正的隐藏价值在于它把数据交给了你。配套的几个脚本能立刻把对话变成统计报表./list-chats.py decoded.db # 列出所有聊天对象 ./dump-msg.py decoded.db output_dir # 全量导出纯文本消息 ./count-message.sh output_dir # 统计每个人的消息数量 ./plot-num-msg-by-time.py # 按时间画消息分布曲线朋友最近就在用这套脚本做我和女朋友谁话多的年度复盘几秒钟出结果数据都来自原始数据库比截图统计靠谱得多。想验证工具是否适配你的微信版本跑一次list-chats.py就是最直接的体检。避坑清单半年实测攒下的血泪经验emoji 缓存包提前下首次导出如果表情很多联网下载会很慢。可以先把官方发布的 emoji 缓存压缩包解压到项目根目录导出时直接命中本地速度翻倍。资源传输优先用 tar大量小文件用adb pull会慢到怀疑人生脚本里的busybox tar方案强烈建议保留。旧版微信的坑老版本微信的头像索引叫avatar.index要用--avt参数指定新版已经不需要。极少数消息类型会跳过项目 TODO 里明确标注类型大于 10000 和小于 0 的消息可能无法处理遇到别慌属于已知边界。为什么不推荐截图和云备份横向对比一下和手动截图第三方云备份破解版导出器相比wechat-dump 的差异化优势很明显它直接处理原始数据库不经过任何中转服务数据完整性有保障且全程离线截图只能留画面丢时间戳丢上下文云备份受时效和账号限制而它导出的是一份结构完整的网页文字、图片、语音、时间线全在还能被统计脚本二次分析。唯一的门槛就是需要 root 手机和手动解密适合愿意为数据主权花两小时的人。想再进一步从这三处源码开始改造wechat/static/下是一整套 HTML 模板TP_MSG.html、TP_IMG.html、wx.css改一改就能换风格。wechat/msgslice.py控制消息切片逻辑觉得 1500 条一页不合适改阈值就行。项目里散落着不少TODO标注运行grep TODO wechat -R就能看到官方求助清单——修掉一个就是现成的贡献机会。看完这篇最值得你现在就做的事是翻出旧手机root 后跑一遍./android-interact.sh db先确认数据库能不能正常解析再决定要不要走完整导出流程。备份这件事永远是趁数据还在时做而不是等手机坏了再后悔。【免费下载链接】wechat-dumpAnalyzing your wechat message history from android项目地址: https://gitcode.com/gh_mirrors/we/wechat-dump创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表