[458]抓取微信公众号(一)

微信文章抓取(1):微信公众号文章抓取常识之临时链接、永久链接

曾经尝试过抓取微信文章的小伙伴,一定很熟悉搜狗微信。搜狗微信是腾讯官方提供的搜索引擎,专门用来搜索微信公众号发表的文章(不包含服务号)。

对于想要获取微信文章进行研究学习的小伙伴,首先探索的途径通常是搜狗微信。那么关于搜狗微信以及微信相关的抓取,需要知晓以下关于微信文章链接的常识。

搜狗微信搜索出来的文章链接均为微信的临时链接,通过客户端查看的文章链接均为永久链接

临时链接https://mp.weixin.qq.com/s?src=11×tamp=1532856601&ver=1028&signature=eJN640RjdfsNhOXpOBZF9blBd4fbsYzDp9va9p8yhHGwDSc1*UPlviVRt*o2do10V-WJ-lxf8eD5FYWEC8ZMfNhyu1iTwYw9Qel1BqVhNlF8cKAxXIorsK-Bu2BcplG2&new=1

特点为:

  1. 浏览有效期自生成起6个小时,超出时间直接使用浏览器访问将会显示链接已过期,可以通过微信客户端访问(此时将自动转变为微信永久链接的短连接形式)
  2. 链接有效期自生成起约50天,超出该期限的链接将无法在客户端中打开,将显示系统错误。这就是微信临时链接在微信客户端查看显示系统错误的原因。
  3. 临时链接直接在浏览器中浏览不显示阅读数以及点赞数,页面中仅包含biz,mid,idx,不包含sn参数(稍后解释)

快速辨识方法:链接中含有signature字段。

微信永久链接-原始长链接:https://mp.weixin.qq.com/s?__biz=MzI2MjAwODM0Ng==&mid=2660080082&idx=1&sn=f84457b8ee976e373eacc698d2b276db&scene=0

微信永久链接-短连接:https://mp.weixin.qq.com/s/AEfszx7uOxVgfVlmUls7UA

特点为:

  1. 永久有效,可直接在浏览器中访问不会有时效限制
  2. 直接访问仍然没有阅读数以及点赞数,页面中包含biz,mid,idx和sn参数
  3. 短连接可以通过拼接参数的方式还原成长链接,长链接需借助客户端转为短连接

微信文章相关参数解释:

原始长链接和短连接可以通过查看网页源码的方式看到这些参数

[458]抓取微信公众号(一)_第1张图片

biz:微信公众号的唯一标识ID

mid:每次推送生成一个mid,同一次推送下mid相同

idx:当次推送的位置(1为首篇,2为第二篇…)

sn:每一篇文章的唯一ID,也是区别临时链接和永久链接的关键参数

临时链接的页面上是没有sn的,只能通过临时链接中本身的signature参数来找到该篇文章,但是该参数如前所述是有有效期的。因此抓取到的微信临时链接只能保证6小时内可以打开,超出时效后只能复制到微信中查看。

那么微信临时链接如何转为永久链接呢?

当然方案还是有的,这里又要牵扯到微信转换临时链接的机制 uin 以及 key,请继续往下看。

微信文章抓取(2):微信临时链接转永久链接方法,一招摆脱链接过期烦恼

那么大家一定会有一个问题:如何让临时链接不再过期?或者说如何把临时链接转换为永久链接。

对于这个问题首先跟大家说一个事实,就是不论是临时链接转永久链接还是获取微信文章的互动数,都是需要微信号参与进来的。因此这是一个存在成本的问题(微信封号越来越严重等)。那么链接转换究竟是如何做到的?

通过使用Charles抓包工具研究微信客户端的行为我们可以发现:

在用户从客户端内点击临时链接时,客户端会赋予该链接两个参数,一个是uin一个是key,含有这两个参数的临时链接将能够自动跳转到永久链接上去。

那么我们不禁要问了,uin和key又是什么?
uin:微信用户唯一标志
key:转换临时链接到永久链接的凭据,分为公众号key(仅对当前公众号下的文章有效),万能key(可用于任何公众号的转换),有效期约为40分钟~2小时。

只要你能获得万能key,就意味着你可以随意将临时链接转换为永久链接了。这里需注意的是单个key的有效期,以及使用频率,过于频繁key将直接失效,而获取key过于频繁将导致微信账号被封禁!

综上来看,转化临时链接的关键在于得到uin和key,而uin和key与微信账号密切相关,所以是需要成本的。但是,如果你厉害到可以破解掉微信的客户端(windows、安卓都可以),得到key的生成规则,那你就可以为所欲为了,至于难度和可行度…你懂的。并且这么做并不符合相关法律法规哦…但是不能排除已经有人做到了这一点,毕竟市场上还是有不少数据公司以微信数据为生。

那么作为只是学习以及研究为目的的广大小白同学,如何让自己抓回来的文章更持久呢?

  1. 搜狗微信在2018年7月下旬更新了分享功能,你会发现每次搜索出来的文章右侧会多出一个分享按钮,而该分享功能所对应的链接并不是临时链接,而是全新的分享链接,其实这个链接就是一个API,当你访问的时候会立即跳转到一个全新的临时链接上,由于是刚刚生成的因此无论是谁在什么时候点击,打开的临时链接一定是新鲜热乎的。用分享链接替代临时链接保存,可以保证文章永远不会过期。连接形式: http://weixin.sogou.com/api/share
    [458]抓取微信公众号(一)_第2张图片
  2. 使用Charles配合自动化点击获得永久链接,具体思路是通过自动化的行为将临时链接发送到微信上并且自动化点击查看文章,此时charles将获得文章的真实链接地址。不过需要注意访问频率
  3. 第三方网站提供的转换工具:www.cpopweixin.com 输入临时链接后会返回一个添加了uin和key的链接,也就是说这个网站提供了uin和key给大家使用。

可以看出方案一能够完全避免使用key而保证临时链接永远不过期。当然如果需要获取互动数还是要选择方案2或者3

有些小伙伴询问如何把公众号列表页面变成永久链接,这个是不存在的,本文讲的全部是“文章页面”。公众号页面通过添加key可以在浏览器中直接打开,但是有效期仍然是与key相同的两个小时。公众号页面不存在所谓的永久有效的连接,不然的话公众号的抓取不就变得非常简单了吗?

微信文章抓取(3):在封禁的边缘试探搜狗微信的反爬策略

搜狗微信已经是我们的老朋友了,但凡是涉及到微信文章的抓取一定是绕不开这个渠道的。

但毕竟搜狗也不是做慈善的,不会放开让你无限地去抓取微信的内容,也就是说搜狗是有反爬策略的。具体的反爬策略通过不断地边缘测试后可以发现:
1.搜索结果为微信临时链接,浏览有效期为6个小时
2.搜索结果限制浏览页数为10页,登录后最多可以浏览100页内容
3.1分钟内连续翻页达到30次以上将出现验证码
4.文章页面过于频繁访问将被封禁2~24小时,所有微信文章将显示请使用微信扫码阅读
5.经常触发验证码的IP将被拉黑,所有搜索均需要先输入验证码

最后,想要应对以上的限制的方法都是有的,无非是使用代理等一些常见的抓取手段,其实如果你能认真研究的话,你是能够发现搜狗的验证码是可以绕过的。

来源:http://www.xiaomilu.top/archives/155
http://www.xiaomilu.top/archives/185
http://www.xiaomilu.top/archives/194

你可能感兴趣的:(爬虫进阶)