一、公众号抓取来源
1、搜狗预览器抓取:公众号搜索功能,不过现在已经关闭入口了。
2、通过个人公众号来抓取微信文章,缺点cookies易过期,且频率过高时会进行封账号处理。
3、通过监听微信app公众号插入数据库操作进行监听,获取公众号信息发送到自建服务器上,优点是实时性强,且抓取链接为永久链接。
二、分析微信数据库结构
微信数据库采用sqlite存储在本地目录为:/data/data/com.tencent.mm/MicroMsg/{$目录}/EnMicroMsg.db
目录为最长的那个
EnMicroMsg.db为微信最主要的数据库,里面包含头像信息,好友列表,微信信息排列顺序,微信聊天记录,表情之类的数据。
EnMicroMsg.db 密码解析:
获取imei值和uin值
1. uin值
ROOT后的手机,找到和MicroMsg目录同一级目录中的/shared_prefs/system_config_prefs.xml:
2. imei值
当前手机拨号界面输入*#06#查看IMEI
3.imei值+uin值 通过md5在线加密,在获取32位小写前“7位”作为“密码”
三、数据库分析
使用sqlcipher打开数据库后 找到关键表 message
Gh开头的为公众号的信息,但是发现内容被置空,猜测是插入后进行了一次数据更新操作,导致表内数据置空。
采用hook微信插入操作来拦截数据
数据库类名为 SQLiteDatabase
方法名 insertWithOnConflict
通过拿到sql的句柄来获取插入的操作
可以看到公众号信息等;
通过匹配其中的信息来抓取其中的公众号
console.log("公众号:虫术")
欢迎大家前来交流