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

如何寻找出微信官方的微信指数API ?

2017-05-17 16:58 771 查看
不知道什么时候会被封。

微信指数的横空出世,立即就搅了整个互联网,很多人都在观察,很多对标产品也正在紧锣密鼓的开发中。既然要使用微信指数,相信很多人都希望可以获取到微信指数的官方API。现在,我们就来找一找微信指数的API。

第一步,手机搜索微信指数,我们发现微信搜索的BaseUri是
https://search.weixin.qq.com
,但是,这个地址却不能发送到Windows客户端。所以我抓包找到了
https://search.weixin.qq.com/cgi-bin/searchweb/clientjump?tag=wxindex






第二步,在微信的Windows客户端访问
https://search.weixin.qq.com/cgi-bin/searchweb/clientjump?tag=wxindex
,就可以看到微信指数的搜索页面了。如果这时,你用默认浏览器访问该URI,就会发现返回了一段JSON字符串,告诉你参数无效。





第三步,不要气馁,我们继续来。虽然微信指数的首页不能在浏览器中直接访问,但是我们却可以搜索某个关键词进入指数详情页面,这样就可以直接使用浏览器来访问了。





第四步,现在我们得到了
https://search.weixin.qq.com/cgi-bin/h5/wxindex/detail.html?q=%E5%A4%A9%E6%B4%A5#wechat_redirect
这个网址。detail页面既然已经展示使用highcharts的图表,那么数据一定是通过Ajax传入了Json数据,再进行渲染的。

第五步,打开
https://search.weixin.qq.com/cgi-bin/h5/wxindex/detail.html?q=%E5%A4%A9%E6%B4%A5#wechat_redirect
的源代码,从240行开始,我们终于要发现线索了。

baseUrl: "https://wximg.qq.com/mmsearch/h5/dist/"
,指明了js文件所在的路径,下面的两个
key
分别为
20170101-mmsearch-wxindex-common.js
20170101-mmsearch-wxindex-detail.min.js
是我们寻找的关键。





首先我们打开
https://wximg.qq.com/mmsearch/h5/dist/wxindex/wxindex-common.js?v=2
,密密麻麻都是压缩过的js代码。没事,我们只需要寻找关键部分,就是

1
var e=encodeURIComponent(encodeURIComponent(window.location.href.replace(/#[\d\w\=\?.\&]+/,""))),i="//search.weixin.qq.com/cgi-bin/searchweb/getjsapiticket?sign_url="+e;
首先我们来看声明的变量
e
,就是经过URL编码后的一个字符串,然后将它以
key
sign_url
的GET方式访问
search.weixin.qq.com/cgi-bin/searchweb/getjsapiticket
,那么我们就来尝试一下。

将第二步中的URI经过URL编码得到
https%3a%2f%2fsearch.weixin.qq.com%2fcgi-bin%2fsearchweb%2fclientjump%3ftag%3dwxindex
,然后把它附加在
https://search.weixin.qq.com/cgi-bin/searchweb/getjsapiticket?sign_url=
的后面,直接访问它。

又得到了JSON的响应,其他的我们不用管,我们只需要找到
data
中的
timestamp
,它代表了UNIX时间戳的格式,这个格式我们后面需要用到。

第六步,我们打开上一步中找到的第二个js文件
https://wximg.qq.com/mmsearch/h5/dist/wxindex/detail.min.js?v=5
(注意观察这个文件的名字,是不是和
https://search.weixin.qq.com/cgi-bin/h5/wxindex/detail.html?q=
微信#wechat_redirect有些地方很相似呢?)。打开这个js后,发现这就是我们要找的文件,比如“该词条暂未被收录”这个目前只有微信指数搜索的空结果才会提示的
Error
信息,正是对应该文件的标识。

我们还是来找关键部分,

1
getWxIndexData:function(){var e=this,t=new Date;if(e.end_time=t.getTime()/1e3-86400,e.start_time=t.getTime()/1e3-7776e3,e.query){var a="https://search.weixin.qq.com/cgi-bin/searchweb/getwxindex",n={query:e.query,start_time:e.start_time,end_time:e.end_time};
代码其实已经很明显了,
getWxIndexData
就是“获取微信指数数据”的定义,变量t被当前时间赋值,
e.start_time
e.end_time
被t的getTime()方法的返回值做了进一步处理,说明这两个变量就是微信指数中的“7天”、“30天”、“90天”的日期范围起始值,变量a定义了api的地址及我们需要的三个参数:
https://search.weixin.qq.com/cgi-bin/searchweb/getwxindex?query=【关键词】&start_time=【日期范围起始时间戳】&end_time=【日期范围截止时间戳】


最后,我们来验证一下,通过时间戳工具,我们得到了当前的时间戳
1490322890
,那么7天之前(2017年3月24日 10:35:22)的时间戳就是
1489718155
,我们来搜索一下【天津】这个指数,访问URI:
https://search.weixin.qq.com/cgi-bin/searchweb/getwxindex?query=%E5%A4%A9%E6%B4%A5&start_time=1489718155&end_time=1490322890






我们得到了json的响应,数据为
"wxindex": "11666515.00,5237192.00,4685480.00,8226879.00,8329063.50,8431248.00,8431248.00,8431248.00"
,从手机端搜索微信指数并对比一下,以此验证。





以上,完。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: