引言
目前微信公众号采集基本只有几种特定的方法了
-
搜狗微信
无法采集历史了,而且搜索也不按时间排序。获取的数据的价值不高,不过可以通过他来获取公众号的biz。 -
微信公众平台
微信公众平台虽然可采集历史,但限制很大,没抓多少就被封接口了。 -
安卓端微信
网上很多关于xposed hook微信公众号实时推送文章的一些采集方案,这个能用。但是只能使用旧版微信,新版微信对xposed有检测。而且旧版微信会限制刚注册的微信号登陆。不过有方法解决:hook掉检测的代码,目前我还做不到这个程度。我见过有大佬实现了成品,但价格劝退。 -
一些第三方的平台
有很多第三方的平台会提供一些微信的数据,比如最热文章等。可看需求是否抓取。 -
网页端微信
基本没啥用,大部分账号登不了,登上去采集不了多久也分分钟给你封了 -
Windows端微信
可逆向hook 注入dll来采集。还有一种方法就是拦截修改响应体,并加入相应js来采集(比如间隔一段时间来打开下一个文章)。也可模拟自动化点击操作微信,然后用一些拦截工具拦截到微信的包就可以实现抓取。技术简单但实现较繁琐,且效率较低。且机器的数量需求很大,但配置只需Windows,其他配置可以很低。
正文
微信的采集难度对刚接触的人来说不简单,因为大佬掌握的技术根本不会直接公开出来。要么高价定制产品给其他人,要么卖数据。这也很正常,因为知道的人越多,掌握的采集技术不值钱是其次,能用多久就成问题了,万一放出来没多久就被微信针对了呢。
我接触微信采集也有小半年了,尝试过很多方法,最终找到一个还可以接受的采集方法。
功能(所有功能都是基于Windows端微信,也就是你在电脑上聊天的那个软件)
- 可实时监控公众号的推送,即公众号新发布的文章。误差在10秒以内。
- 可以采集公众号的历史文章(非模拟点击拦截)
- 可以不关注采集公众号最近10天发布的文章
- 可以采集文章的内容、评论和阅读数等(通过这种方法采集的阅读数有限,大概每个号每天有两三千次,后面可以继续通过模拟点击来采集,也可以直接更换IP)
- 可以通过微信消息调度采集历史和文章(监控某个联系人的消息,当收到指定格式(json字典)的内容的,启动相应采集程序)
- 可以读取微信关注的公众号列表(不包含biz字段)
- 当然,模拟点击我也实现了。不是基于屏幕坐标,是基于控件句柄和屏幕搜图,所以在任何分辨率的电脑运行应该都没问题(目前还在测试阶段)
- 每个电脑可以实现多开微信来抓取(测试2-3个号不会有问题,基本都是两个号,部分机器登了三个号)
技术
- 监控公众号的推送是通过hook Windows端微信实现的,即拦截微信软件接受微信服务器消息的代码段。
- 历史和文章等的采集则是控制微信浏览器来实现的,用的不是操作鼠标键盘,不过其中部分功能实现需要模拟鼠标键盘。比如第一次启动微信浏览器。
- 微信消息调度也是通过hook Windows端微信实现的,当然我也弄过微信机器人,可通过代码收发消息。
其他
技术太复杂学不会怎么办?我已经将所有功能封装成exe,只需要操作界面就可以采集微信文章(需要懂得基础的东西,比如json和网页解析),解析需要你自己写,因为我不知道你需要哪些字段。采集软件不到2M,占用资源很小,只要电脑配置足够运行微信都没问题。另外,如果需要自己二次封装扩展功能的话,可以提供代码和指导。如果只是想要数据的话也行。
演示
阅读数
演示图(图中监控账号就是我的,欢迎添加交流)
演示动图
视频太大,上传不了,就简单转个动图看看:https://wwx.lanzoux.com/iRUrdhru06f。动图中有三个窗口,左边的是微信浏览器,右上的是采集程序,右下的是任务栏,任务栏中显示的WXSpider就是右上的采集程序,放在里面只是为了展示一下程序占用的资源。
监控推送
程序中监控是指要监控哪个微信好友的消息,当收到该好友指定格式消息时,开启采集程序采集相应内容。设置是设置邮箱发送的一些信息,当微信意外退出登录时会发邮件通知。
历史
历史和阅读数类似,都是控制微信浏览器访问指定URL,然后得到参数,在请求历史文章列表。就不放动图了。
其他
直接控制浏览器来采集效率确实高了,也方便了很多。但是请求量是有限制的,可通过换IP解决(IP质量要好,我试了一些代理微信浏览器打开网页很慢)。而限制最低的方法就是模拟点击加拦截了,所以我加了一个模拟点击打开URL的功能,当程序达到限制时,依旧可以通过模拟点击来继续采集阅读数。当然历史文章接口的限制更高,封接口的频率也高,所以无法通过模拟点击突破。测试大概每个账号24小时内可以访问320-330次接口,每次接口返回10天的历史数据,不管每天发了几条,每天发了8条,则每个接口返回80条文章数据。
温馨提示
如果你不是工作需要,只是想学技术的话,请勿打扰。当然,有钱可以随意。