700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 利用搜狗抓取微信公众号文章

利用搜狗抓取微信公众号文章

时间:2019-09-24 13:54:35

相关推荐

利用搜狗抓取微信公众号文章

微信一直是一个自己玩的小圈子,前段时间搜狗推出的微信搜索带来了一丝曙光。搜狗搜索推出了内容搜索和公众号搜索两种,利用后者可以抓取微信公众号的最新内容,看了下还是比较及时的。

每个公众号都有一个openid,最早可以直接利用/gzh?openid=***来获取页面,但改版后对openid进行了加密操作,使用原来的方法返回的数据为空。

利用httpFox追踪一下访问的行为,如下图:

可以看到从按下回车到页面返回还是做了不少工作的。

倒着看吧,倒数第二行,很多*的,如果用浏览器访问这个地址,返回的就是要显示的数据。如下所示:

sogou.weixin.gzhcb({"page":1,"items":["<?xml version=\"1.0\" encoding=\"gbk\"?><DOCUMENT><docid><\/docid><item> <key><![CDATA[http://mp./]]><\/key><tplid><![CDATA[555]]><\/tplid><classid>11002601<\/classid> <display> <docid>ab735a258a90e8e1-6bee54fcbd896b2a-6deb4d71ff08347f1929b25ff173e5de<\/docid> <tplid>550<\/tplid><title><![CDATA[【突发】一艘载有400余人的客轮在长江沉没 搜救正在进行]]><\/title><url><![CDATA[http://mp./s?__biz=MjM5MjAxNDM4MA==&mid=216655341&idx=1&sn=fd0396cb30456a310475ff351e9fa975&3rd=MzA3MDU4NTYzMw==&scene=6#rd]]><\/url><title1><![CDATA[【突发】一艘载有400余人的客轮在长江沉没 搜救正在进行]]><\/title1><imglink>……

稍微看下吧,返回的是一个函数,参数是json格式,里边的“items”项包含了我们需要的数据,数据是用xml封装的。

我们的目标就是拿到这个地址,看一下地址格式吧:

/gzhjs?cb=sogou.weixin.gzhcb&openid=oIWsFt8_jYUmdw1PQgNVhH9vOEvI&eqs=u2sOoEZgaZS%2FoFkRolp3ouB8PR5ws8VLuA6UkIOcm%2FsE6V1su3gtWzdYQvnCCEr9%2FDBil&ekv=4&page=1&t=1433207090966

里边有几个参数:

cb:固定为“sogou.weixin.gzhcb”openid:根据公众号来填eqs:这个比较麻烦,下面再说ekv:貌似填4就可以了page:页码,默认每页显示10条,需要查看更多的时候用它来翻页t:时间参数,貌似并没有什么O用

首先看看上边这些参数缺省的情况下会发生什么,t缺省了没什么影响,page缺省默认返回第一页,ekv或eqs缺省的话返回的结果里没有数据,也就是items里的数据是“[]”

所以现在的关键就在“eqs”上了。

利用chrome的开发者工具看看吧

有两个js

下面这个就是我们需要的返回数据

看看上边那个,主要的是前面两句:

<script>SogouEncrypt.setKv("8d44ae022be","4");window.aes=SogouEncrypt.encryptquery("oIWsFt_a1YRtD7vlIAkWmeqAWcBU","sogou");</script>

字面上来看,是对openid进行了加密操作,有一个办法,就是模拟参数,然后调用这些js,需要继续看看js代码,有点头大。

另辟蹊径吧,发现加密操作中的参数都是固定的,不像新浪微博的加密操作,去看看加密后的结果吧,果然也都是固定的,以“人民日报”为例,openid=“oIWsFt_a1YRtD7vlIAkWmeqAWcBU”,加密后的eqs=“u2sOoEZgaZS/oFkRolp3ouB8PR5ws8VLuA6UkIOcm/sE6V1su3gtWzdYQvnCCEr9/DBil”……

这说明完全不需要那么复杂了,参数都是固定的,自己准备好就成。

ok,在搜狗再度改版之前,这样子是完全可以实现的。

不过好像搜狗推出了发爬虫措施,实际抓数据的时候还是小心一点。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。