曾经尝试过抓取微信文章的小伙伴,一定很熟悉搜狗微信。搜狗微信是腾讯官方提供的搜索引擎,专门用来搜索微信公众号发表的文章(不包含服务号)。
对于想要获取微信文章进行研究学习的小伙伴,首先探索的途径通常是搜狗微信。那么关于搜狗微信以及微信相关的抓取,需要知晓以下关于微信文章链接的常识。
搜狗微信搜索出来的文章链接均为微信的临时链接,通过客户端查看的文章链接均为永久链接
临时链接https://mp.weixin.qq.com/s?src=11×tamp=1532856601&ver=1028&signature=eJN640RjdfsNhOXpOBZF9blBd4fbsYzDp9va9p8yhHGwDSc1*UPlviVRt*o2do10V-WJ-lxf8eD5FYWEC8ZMfNhyu1iTwYw9Qel1BqVhNlF8cKAxXIorsK-Bu2BcplG2&new=1
特点为:
快速辨识方法:链接中含有signature字段。
微信永久链接-原始长链接:https://mp.weixin.qq.com/s?__biz=MzI2MjAwODM0Ng==&mid=2660080082&idx=1&sn=f84457b8ee976e373eacc698d2b276db&scene=0
微信永久链接-短连接:https://mp.weixin.qq.com/s/AEfszx7uOxVgfVlmUls7UA
特点为:
微信文章相关参数解释:
原始长链接和短连接可以通过查看网页源码的方式看到这些参数
biz:微信公众号的唯一标识ID
mid:每次推送生成一个mid,同一次推送下mid相同
idx:当次推送的位置(1为首篇,2为第二篇…)
sn:每一篇文章的唯一ID,也是区别临时链接和永久链接的关键参数
临时链接的页面上是没有sn的,只能通过临时链接中本身的signature参数来找到该篇文章,但是该参数如前所述是有有效期的。因此抓取到的微信临时链接只能保证6小时内可以打开,超出时效后只能复制到微信中查看。
那么微信临时链接如何转为永久链接呢?
当然方案还是有的,这里又要牵扯到微信转换临时链接的机制 uin 以及 key,请继续往下看。
那么大家一定会有一个问题:如何让临时链接不再过期?或者说如何把临时链接转换为永久链接。
对于这个问题首先跟大家说一个事实,就是不论是临时链接转永久链接还是获取微信文章的互动数,都是需要微信号参与进来的。因此这是一个存在成本的问题(微信封号越来越严重等)。那么链接转换究竟是如何做到的?
通过使用Charles抓包工具研究微信客户端的行为我们可以发现:
在用户从客户端内点击临时链接时,客户端会赋予该链接两个参数,一个是uin一个是key,含有这两个参数的临时链接将能够自动跳转到永久链接上去。
那么我们不禁要问了,uin和key又是什么?
uin:微信用户唯一标志
key:转换临时链接到永久链接的凭据,分为公众号key(仅对当前公众号下的文章有效),万能key(可用于任何公众号的转换),有效期约为40分钟~2小时。
只要你能获得万能key,就意味着你可以随意将临时链接转换为永久链接了。这里需注意的是单个key的有效期,以及使用频率,过于频繁key将直接失效,而获取key过于频繁将导致微信账号被封禁!
综上来看,转化临时链接的关键在于得到uin和key,而uin和key与微信账号密切相关,所以是需要成本的。但是,如果你厉害到可以破解掉微信的客户端(windows、安卓都可以),得到key的生成规则,那你就可以为所欲为了,至于难度和可行度…你懂的。并且这么做并不符合相关法律法规哦…但是不能排除已经有人做到了这一点,毕竟市场上还是有不少数据公司以微信数据为生。
可以看出方案一能够完全避免使用key而保证临时链接永远不过期。当然如果需要获取互动数还是要选择方案2或者3
有些小伙伴询问如何把公众号列表页面变成永久链接,这个是不存在的,本文讲的全部是“文章页面”。公众号页面通过添加key可以在浏览器中直接打开,但是有效期仍然是与key相同的两个小时。公众号页面不存在所谓的永久有效的连接,不然的话公众号的抓取不就变得非常简单了吗?
搜狗微信已经是我们的老朋友了,但凡是涉及到微信文章的抓取一定是绕不开这个渠道的。
但毕竟搜狗也不是做慈善的,不会放开让你无限地去抓取微信的内容,也就是说搜狗是有反爬策略的。具体的反爬策略通过不断地边缘测试后可以发现:
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