您的位置:首页 > 移动开发 > 微信开发

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

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

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

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



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

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

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


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

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

http://weixin.sogou.com/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,在搜狗再度改版之前,这样子是完全可以实现的。

不过好像搜狗推出了发爬虫措施,实际抓数据的时候还是小心一点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: