From:http://www.blog2019.net/post/138
相关阅读:
一套价值十万的微信公众号采集解决方案(免费送)
数据采集采集架构中各模块详细分析
基于大数据平台的互联网数据采集平台基本架构
教你一种1分钟下载1万个网页的方法,你学吗?
uvloop:一个比gevent还要快两倍的 Python 异步网络框架
数据采集中,如何建立一套行之有效的监控体系?
3人团队,如何管理10万采集网站?(最全、最细解读)
爬虫系列之基于XPosed框架的微信公众号采集
本文主要用于描述微信采集过程中,各流程节点的解决方案。详细介绍了采集架构、手机号购买注意事项、微信注册注意事项、微信号养号注意事项、公众号采集方式,以及采集过程中遇到的问题等。
微信数据采集主要分为四个阶段:
大致框架如下图1-1所示:
微信采集主要需要手机和手机号,但由于需要大批量采集,手机的统一管理尤为重要。所以,同时需要手机支架、HUB集线器及智能插座等辅助设备,同时需要一个6.5~7.8平方米的空间。下面是对各个设备的配置等作以详细的说明。
由于使用XPosed插件进行采集,所以对手机本身本身硬件要求较高,为了保证采集正常,手机不出现卡死、假死等现象,需要手机内存最低2G,操作系统版本要求为 Android 5.X及以上版本。同时,为了降低充电的次数,减少电池损耗,尽量选择待机长的机型。综合以上几个因素,手机每台费用在400-600元之间。
注意事项:
最好购买有“永不锁屏”设置的手机,因为在锁屏状态下无法接收到微信公众号自动推送的信息。
手机号购买注意事项:
注意事项:
也可以直接购买流量卡。但是如果微信异常或封号,解封没有手机号就比较麻烦了。
由于微信采集需要使用大量的手机,且手机需要长时间处于非锁屏状态,需要长时间充电、散热、封号处理等。所以,手机的统一管理就显得尤为重要。如下图2-1所示(费用782元左右),需要特定的支架,用于安放手机,方便手机的管理、充电、微信号异常(封号)处理等。
由于整体采集使用的手机较多,每个手机通过独立的插座转接头的方式进行充电、USB链接等比较麻烦,不易于管理。所以,需要使用HUB集线器进行统一管理,如下图2-2、2-3所示,目前,市场上20个USB口的HUB大概在250-400元;30至32个USB口的HUB在400~550元
由于采集使用的手机较低端,硬件质量较差,电池使用时间过长或者长期充电,容易导致手机电池鼓包,存在较大的安全隐患。所以,使用智能插座可以在每周的固定时间,统一给手机充电N小时,然后自动断电,依次循环往复。如下图2-3所示。其中智能插座的费用大概在:50~150元之间。
需要一名运维人员(可为实习生)专门负责采集监控、手机监控、微信号监控、微信号解封等。
根据目前了解到的市面上微信采集情况,一个比较完善微信采集平台,每天需要处理的大概任务量如下所示:
每个微信号最多只能关注1000个公众号。所以,需要450~500个微信号。微信一般的封号概率在20%左右,为了保证采集的稳定性,需要多出100个左右的微信号作为备用。
目前微信采集主要有以下三种方式:
经过各方面比对,最终选取第三种方式,也就是直接通过VirtualXposed监控微信APP发出和接收的所有请求数据包,对其进行解析,分析出符合要求的文章链接。
由于使用VirtualXposed拦截微信推送信息的方式,会对微信客户端进行篡
改,腾讯有可能升级技术,导致VirtualXposed插件无法再使用。或者,腾讯能通过技术准确的检测手机是否安装了VirtualXposed插件,从而大量封号,导致采集无法稳定进行。目前了解到的可行的备用方案有以下几种方式:
(一)使用3.2.1中的第二种方式。该种方式需要微信号在2017年10月份以前注册,否则无法登陆网页版;
(二)使用 AnyProxy 抓包的方式。该种方式对技术要求较高,目前尚未进行详细的测试。
微信采集整体流程如下图3-1所示:
其中主要分为三部分:
公众号收集可以通过以下步骤进行处理:
微信公众号添加详见4.3节。
微信文章 URL 处理流程如下图3-2所示:
文章正文处理流程如下图3-3所示:
微信采集过程中的数据存储主要分为三块,一是微信号和公众号的存储;二是公众号文章列表的存储;三是文章正文信息的存储。各个模块的存储详见下述介绍。
字段名称 |
类型 |
长度 |
为空 |
备注 |
id |
int |
11 |
NO |
主键id |
webchat_mobile_code |
int |
11 |
NO |
手机号 |
webchat_mobile_user |
String |
20 |
NO |
手机号所属人 |
webchat_mobile |
int |
1 |
NO3 |
运营商;1:联通;2:移动;3:电信 |
webchat_mobile_purchase |
String |
10 |
YES |
购买日期;yyyy-MM-dd |
webchat_code |
String |
100 |
NO |
微信号 |
webchat_nk |
String |
100 |
NO |
昵称 |
webchat_passw |
String |
50 |
YES |
微信密码 |
wechat_attiones |
int |
4 |
NO |
关注公众号数量 |
webchat_mark |
String |
255 |
YES |
说明 |
字段名称 |
类型 |
长度 |
为空 |
备注 |
id |
int |
11 |
NO |
|
wechat_name |
varchar |
50 |
NO |
微信号名称 |
wechat_code |
varchar |
60 |
NO |
微信号 |
wechat_index_url |
varchar |
200 |
YES |
个人首页链接 |
webchat_biz |
varchar |
50 |
NO |
biz用户唯一标识 |
webchat_id |
int |
11 |
YES |
微信账号表ID |
在每个微信关注的公众号推送文章后,通过手机中安装的VirtualXposed插件,获取接收到的数据包,然后把数据包+手机号,一同发送到Redis接口,接口对数据包进行解析,把文章URL数据存放到Redis集群中。
根据八友微信接口每日的数据量分析,微信全量采集时需要处理的比较活跃的公众号在40~50万个,每天文章量在80~120万左右。为了便于管理,计划在Redis集群中,每天生成一个hash类型的缓存表,表名格式为:WeChat_yyyyMMdd,其中数据格式为key=URL,value=当前添加时间。如下图3-4所示
微信文章通过分布式方式进行,每个采集脚本请求Redis接口服务,获取一定量的文章URL,然后采集正文,推送到kafka中。同时,请求过的URL信息,Redis接口会把信息从WeChat_yyyyMMdd缓存中删除,并保存到采集历史缓存中。hash类型的缓存表表名格式为:WeChat_History_yyyyMMdd,如下图3-2所示。其中key=URL,value=请求时的当前系统时间。如下图3-5所示
整个采集流程中需要监控的节点主要为:XPosed插件;Redis接口服务接收和解析、入库;正文采集(源码获取、解析,kafka推送)。具体处理如下:
主要分为两部分,一是XPosed插件自身的监控,防止长时间运行导致死机等;二是XPosed数据包发送。
主要监控XPosed数据包解析和保存另两个步骤,在出现异常时把数据写到本地文件,待正常时重新进行二次处理。
正文采集监控点主要包括:已采集URL记录、正文源码下载、正文解析,以及信息推送kafka等四部分。
同时,需要监控服务器IP被封的情况;
目前有些网站有公众号的搜索功能,前期可以使用项目相关的关键词在这些网站上进行搜索,获取部分新注册的公众号。搜索平台如下表3-1:
网站名称 |
链接 |
备注 |
搜狗微信公众号搜索 |
http://weixin.sogou.com/weixin?type=1&query=%E9%93%B6%E8%A1%8C&ie=utf8&s_from=input&_sug_=y&_sug_type_= |
|
推信网微信公众号推荐 |
http://www.tuixinwang.cn/so.aspx?wd=%e9%87%91%e8%9e%8d&t=weixin&p=16 |
|
聚微信 |
https://www.juweixin.com/weixin/index/0/1?a=1&per_page=1540 |
表 3-1
微信公众号数据的采集运维工作,主要体现在微信号的注册、养号、解封等工作上,至于微信文章的采集,基于现有的服务器,使用分布式可以较容易的进行处理。在微信号前期注册和养号期间,计划分配到数据管理中心各人员,作为一个KPI加分指标。由各人员在家中或者上下班路上,进行微信号注册、养号(发朋友圈、点赞、聊天)等。
由于微信号的监管逐步加强,新注册的微信号被封的概率较大,所以微信号在注册时需要追寻一定的规则,具体注意事项如下:
注意事项:
现在有专门卖微信号,买回来以后就可以使用,不过为了安全起见,还是建议登录一周,期间发一些朋友圈,或加一些微信,每天随便聊几句,这样可以降低异常概率
由于每个微信号每天最多只能关注40-50个公众号,同时为了保证微信号的稳定性(不被封号),需要公众号的添加分布在不同时间、不同地点。可以所有采集相关人员参与,同时根据实际情况做出相应的奖罚。
具体实施步骤如下:
按上述方式,每天可以添加公众号:2400~3000个【5(台/人·天)*40~50(公众号)*12(总人数)】。40~50万个公众号最快需要123个工作日,
可以通过奖惩的方式,鼓励相关人员进行处理,加快进度。具体如下:
由于微信采集需要大批量的手机作为支撑。为了保证采集的稳定性,以及手机的安全性(主要为手机电池),手机的统一管理极为重要。主要通过以下步骤来方便实现统一管理:
购买统一手机支架:要求手机支架稳定、利于手机散热、充电、拿取等;如下图4-1
同时对手机支架进行编号:
主要是对手机进行编号,分为以下几步:
对手机支架和手机进行编号以后,在每个支架、支架每层、每个手机位上贴上相应的标签;然后,根据规则生成手机编号,贴于手机背部。最终效果类似下图4-2
手机群系统,内部是套软件,外部是一台电脑和多个手机,逻辑是模拟手机的人工操作,使用手机自己的流量,不容易被封号。方便养号、解封等操作,群控软件效果如下图4-3、4-4所示:
手机群控软件(Total Control)报价如下:
项目 |
官方价格 |
多设备控制 (10) |
¥260/年 |
多设备控制 (20) |
¥540/年 |
多设备控制 (30) |
¥800/年 |
多设备控制 (50) (40) |
¥1400/年 (¥1600/年) |
多设备控制 (70) (60) |
¥2800/年 (¥3200/年) |
多设备控制 (100) |
¥4460/年 (¥5000/年) |
Total Control有以下主要特点:
主要用于在公众号添加阶段,给每个手机发送待关注的公众号文章,方便相关人员进行公众号的关注;