近期为了努力提高生活质量,花了好多时间研究如何基于微信造一些恰饭的小软件。
把这些软件放在博客里卖一卖,我的博客也跟着变成了卖软件的小网站,虽然有违博客应有初衷,但活下去才是第一要务。
博客确实有点荒废了,那现在应该写点东西,把我做的小工具里需要用到的知识做一些抛砖引玉性的叙述,用于给需要的人少走一些弯路。
首先阅读本内容前,先要学会解码微信的数据文件,相关的资料和方法在这里:
https://www.qinyuanyang.com/post/341.html
根据本文的原理,我造了一个小工具,可以实现一键导出微信的通讯录,软件叫做【微信通讯抽水机】,可以点击这里找到:
https://www.qinyuanyang.com/post/340.html
注意:按上面提供的资料和相关功能,学会对微信电脑版的数据文件解码后,才有下面的事,本文章只说数据文件的解析,解码文件的,就不再说了,因为看了这些资料还是研究不会的话,就该交学费了,以下是本文主题
数据文件解码后,后缀是.db文件,实际上是Sqlite的数据库文件,可以使用相关的数据库管理软件打开,此处提供一个软件下载,是我最喜欢的数据库管理软件,也就是“Navicat Premium 12”
点击这里可下载,其中附带了一个和谐工具,让这个收费软件变成不要钱的盗版软件,自行安装使用即可,Crack文件夹里有盗版工具和使用说明,自己照着搞一下即可,这个不是本文主题
解码目标文件:
拿到密钥后,只需要对该文件解码即可,解码后的文件:
然后使用 Navicat 软件打开该sqlite数据库文件,展开数据表,可以看到以下内容,本文主要探讨以下三个表
先打开Contact表,如下所示:
上图可以看到的信息是这样,如果微信是一个个人,它一般会有微信号和名字,为什么说“一般”,因为有些人真的没有微信号,是用手机注册的,或者早期用QQ导入的,只有一个wxid开头的码,这个在别的微信中是加不了人的
在UserName中,如果是 gh_ 开头的,表示这个号是一个公众号
如果是openim结尾的,表示这是一个企业微信号
以下是字段解释
UserName:原始微信号,如果不是wxid开头,一般可以用于加人
Alias:改过之后的微信号,如果存在,那就是用这个加人,不一定会有
Remark:你给这个人加的备注名
NickName:这个人给自己取的微信名称
LabelIDList:你给这个人分配的标签的ID号,有可能有多个,使用英文逗号做分隔
打开ContactHeadImgUrl表:
以下是字段解释
usrName:原始微信号
smallHeadImgUrl:小头像的链接,小头像,要来没啥用
bigHeadImgUrl:大头像链接,打开可以看到高清头像
打开ContactLabel表:
这里很明显可以看出来是什么东西了
如果我们要导出联系人的各项信息,肯定得过滤一些内容,比如公众号、系统账号、企业微信号等,还有其它一些比如Type和VerifyFlag字段,有一些特定的数字,表示它不是一个个人微信账号,比如Type需要过滤(0,4,6,8,256, 2050),VerifyFlag需要过滤(8,24)
还有一些系统账号,比如漂流瓶、QQ邮件提醒等的账号需要过滤,最终可以写出一段用于查询信息的SQL语句,比如下图:
头像可以通过链接直接下载到,标签名可以通过标签ID获取到,比如下图:
经过这些步骤,和两段SQL,联系人就全出来了
既然可以通过人工分析出来,并且也不难,这样就可以通过做一个全自动化的软件,一步实现以上的功能,也就是我的【微信通讯录抽水机】软件了,需要的话可以点击下面下载到:
https://www.qinyuanyang.com/post/340.html