怎么写关于微信爬虫应该如何抓取朋友圈呢?微信公众号爬虫抓取原理是什么?
现在很多朋友会觉得小编在这里给大家介绍了很多关于微信的内容。我想大家基本应该都明白一些关于微信爬虫应该如何爬朋友圈的事情该怎么写?这里,就让小编来讲解一下,这里有一个很好的介绍,关于微信爬虫应该如何爬取朋友圈?
微信公众号爬虫爬行,公众号爬虫爬行的原理是什么?下面小编就为大家介绍一下微信公众号爬虫的爬取原理。阅读完以下内容,您将对微信公众号爬虫抓取有更深入的了解。
爬取微信公众号的原理是什么?
无论是爬取微信公众号的新方案还是爬取微信公众号的旧方案,获取公众号文章列表并获取阅读点赞,
获取评论等接口可以通过抓包来获取。以上接口均需要授权。主要有以下授权参数:
uin:对于微信用户来说,公众号ID原本是一个数字,但是经过base64后传递的结果。
key:绑定公众号和uin,过期时间半小时左右pass_ticket:另一个验证码,绑定uin req_id:
在文章的HTML 中,每个请求都会不同。构成获取点赞接口的RequestBody受限于该获取点赞接口的出现频率。
测试结果是,一个微信账号5分钟内可以查看30篇文章的阅读和点赞。
老方案爬取微信公众号的原理:
以前微信网页版的限制并没有那么严格。当时采用的主要思路是使用微信网页版,然后使用请求来模拟登录。
然后继续访问类似如下的接口来爬取信息:
当时为了让爬虫的多个实例运行,我使用了Celery框架(现在觉得简直是弱智,只需要启动程序N次就可以运行多个实例了……),因为它是模拟登录,
所以我写了一套复杂的东西来生成二维码,然后获取登录URL。具体模拟登录原理可以参考这个wechat-deleted-friends,以及相关的Celery
Task里写的逻辑太复杂了。一个Task有请求断线重连机制、模拟登录机制、解析列表、解析文章等。
另外,由于网页版微信的同步机制非常复杂,有时会直接断开连接,需要手动再次登录,非常麻烦。
此后,网页版微信无法再获取Key(2016年开始),该方案被放弃。
微信公众号抓取新方案原理:
经领导提醒,结构发生了变化。项目总体结构如下:
Seeds是一个生产者,这里指的是通过某种方式获取uin、key、pass_ticket信息,
这个想法类似于中间人攻击+解析Squid日志。
消费者C1从Q1队列中取出种子,爬取某个公众号的文章列表。解析完成后,将文章Meta信息放入队列Q2中。
消费者C2获得文章的原始信息后,可以直接对数据库进行爬取操作。之后就可以继续添加队列,抓取文章阅读、点赞相关的数据。
由于频率限制。一个微信账号每天最多只能获取8000条文章阅读和点赞信息。
废弃了Celery和它默认的RabbitMQ队列,这种东西太重了。使用beanstalkd 作为消息队列。
目前的效果是单个微信账号每天更新公众号文章约4万篇。如果想继续增加数量,可以通过添加机器来扩展Update。
生成密钥的方式是编写密钥向导脚本,不断生成文章列表URL并不断点击。
使用Squid作为代理获取带Key的URL(Squid需要配置ssl-bump透明代理)
通过以上,小编这里就给大家好好介绍一下微信爬虫应该如何抓取朋友圈?关于微信爬虫应该如何爬行,我想大家基本上应该都了解很多了。如何捕捉朋友圈?