怎样读取微信运动数据接口?
怎样读取微信运动数据接口?有很多朋友想要了解这一方面的知识,从而找到小编,小编将在本文为大家介绍这一流程及其原理~
前几天遇到一个奇怪的需求:抓取微信用户的“微信运动”数据。“微信运动”是腾讯官方的公众号,从用户手机中读取运动数据。对于一些公众号和微信合作方,腾讯有开放“微信运动”的数据接口,但对于普通开发者和公众号,想要获取用户的这些数据其实也不难!
“微信运动”能够向朋友分享一个包含有运动数据的网页,网页中就有我们需要的数据。url类似于:hw.weixin.qq/steprank/step/personal?openid=o95gOt1TKSg3s05ibokCOGcjJ0Mc
在微信PC客户端打开是这样的:
但是在浏览器中打开这个网页得到的结果却是提示:请在微信客户端打开!可以猜测到,服务器可能会根据请求头来判定该请求是否来自微信客户端的内置浏览器。尝试在windows下用fiddler进行抓包(请忽略xp,这是我的笔记本上唯一能用的windows虚拟机了=_=):
可以看到在请求这个url时,请求头的各个信息。让我们来尝试伪造Request Headers看看能不能获取对应的网页源代码吧。
其实可以先通过Chrome下的一些工具例如Edit the cookie, Modify Headers来伪造Request Headers以模拟微信浏览器。伪造请求头后成功在浏览器中get到了对应的网页。
看来通过伪造Request Headers应该就能请求到含有运动数据的页面了!现在可以开始写代码了,尝试用Python的requests库模拟微信客户端内置浏览器获取含有运动数据的页面。作为可能是蓝星上最适宜人类食用的HTTP库,只需要将Cookies,Headers作为get方法的参数就能够达到我们想要的效果了。
解释运行后成功请求到了含有微信运动数据的源代码!在审查源代码的过程中会发现,如图上灰色部分,实际的运动数据隐藏在JavaScript代码中的一段 JSON code中,我选择通过正则表达式匹配到JSON code,再通过Python内置的json库解析。
通过url不难看出来其中有一个url参数openid,应该是“微信运动”公众号对应的用户openid。公众号想要获取用户微信运动数据之前,应当引导用户分享一次当日运动数据,获取链接中的openid。
还有就是Cookie过期的问题,虽然目前抓取的Cookie用了三天还没过期,但长期使用的话还是应当定期更新Cookie,并建议用多个Cookie同时进行抓取,减小爬虫突然中断的概率。
以上就是读取微信运动数据接口的全部内容,希望能够对需要的朋友有一些帮助,想要了解更多的微信开发素材,可以访问微微风网站哦!
相关推荐:
《微信api接口是什么 微信API接口大全》
《微信api接口配置怎么弄》
《关于微信API接口开发,微信API接口开发教程》
下一篇:微信运动数据api如何实现?