Skip to content

微信消息类型说明

WeLink 解析微信解密后的 SQLite 数据库,消息存储在 message_N.dbMsg_* 表中。每条消息的类型由 local_type 字段标识。

注意事项

  • local_type 在数据库中存储为 64 位整数,高位可能包含额外标志位
  • WeLink 使用低 16 位 (local_type & 0xFFFF) 作为真正的消息类型
  • Type 49(应用消息)的 message_content 通常是 zstd 压缩 的,需要根据 WCDB_CT_message_content = 4 判断并解压后才能解析

基础消息类型

local_type类型名称说明
1文本纯文字消息
3图片图片消息
34语音语音消息
42名片分享联系人名片,XML 格式包含头像、昵称等
43视频视频消息
47表情自定义表情/GIF 动图
48位置共享地理位置,XML 格式包含经纬度、POI 名称、营业信息等
49应用消息见下方"应用消息子类型"详细说明
50通话语音/视频通话记录,XML 格式包含通话时长
10000系统消息撤回提示、入群通知、好友添加确认等
11000系统通知系统级通知
66企微联系人企业微信联系人卡片
67企微客服企业微信客服消息

应用消息子类型(Type 49)

Type 49 是一个"容器类型",内部 XML 的 <type> 标签进一步区分子类型。WeLink 通过内容关键词判断分类:

判断条件类型名称说明
wcpay + redenvelope红包微信红包(个人红包、群红包、拼手气红包等)
wcpay 不含 redenvelope转账微信转账
refermsg引用引用/回复他人消息
weappinfominiprogram小程序分享小程序卡片
<type>5</type> / <type>4</type> / <type>6</type>链接/文件网页链接、文件传输
<type>51</type> / <type>63</type>视频号视频号内容分享、视频号直播
其他其他群公告 (<type>53</type>)、音乐分享 (<type>76</type>)、群接龙 (<type>87</type>) 等

应用消息 <type> 编号参考

以下是已知的 type 49 内部子类型编号:

<type>说明
1文本链接(早期格式)
2图片链接
3音乐分享(旧版)
4文件传输(发送方)
5网页/公众号文章链接
6文件传输(接收方)
8GIF 动图(表情商店)
17实时位置共享
19合并转发的聊天记录
24收藏笔记分享
40好友推荐
51视频号视频分享
53群公告
57引用消息(XML 结构引用)
62短视频(朋友圈)
63视频号直播
76音乐分享
87群待办/群接龙
92拍一拍(新版本)
101音乐分享(新版本)
124未知(极少量)

内容存储

压缩机制

微信数据库使用 WCDB_CT_message_content 字段标识内容压缩方式:

含义
0未压缩,message_content 为原始 UTF-8 文本
4zstd 压缩,需解压后才能获得原始 XML/文本

所有 type 49 的消息几乎都是 zstd 压缩的。读取时必须先检查 WCDB_CT_message_content,如果为 4 则需要 zstd 解压。

群消息格式

群聊中的消息 message_content 格式为:

wxid_xxxxx:\n实际消息内容

即发送者 wxid + 冒号 + 换行 + 正文。real_sender_id 字段关联 Name2Id 表可获取发送者身份。

WeLink 在以下场景使用消息类型:

  1. 消息类型分布饼图(私聊 & 群聊):分类为 文本/图片/语音/视频/表情/引用/小程序/链接文件/红包/转账/位置/名片/通话/视频号/其他
  2. 红包/转账统计(私聊详情):分别统计红包和转账次数,记录每笔时间和收发方向
  3. 联系人列表:红包/转账总数支持排序
  4. 撤回统计:type 10000 中的撤回提示单独统计

WeLink · AGPL-3.0 · 所有数据仅在本地处理,不上传任何服务器 · vdev