该app接口很简单,带上身份信息appOpenId和accessToken即可访问数据。
本来本文就应该结束了。
但是多线程一开一分钟过去账号就被踢下线了。
看着数据不多。其实一个英雄有四个登录途径的战力排行,每个登录途径要访问31次省,拿到330个市的数据再去访问330次市去拿到区县数据。意味着一个登录途径要访问360次接口,一个英雄要访问1440次接口,而王者有100多英雄。意味着要请求14万多次服务器才能拿到全部数据。
不被踢才怪。没办法,只能研究登录了。
软件只有微信登录和qq登录,并不支持手机号登录。
观察微信登录接口,发现微信登录后可以refreshWxToken。传入refreshWxToken和accessToken即可重置token有效期为86400秒。
尝试在代码中加入刷新token接口,看能否改变被踢下线的命运。
然而一分钟过去了,账号又又被踢下了线。
所以只能看看qq登录了,卸载手机qq后,系统未检测到手机qq,调用了输入qq账号密码登录页面。
发现state=test,果然开发还是偷懒了,并没有用state去csrf验证,那就简单很多了。复制这个url在浏览器打开。输入账号密码,登录,观察浏览器变化。
果然找到了回传的accessToken。
复制accessToken和openid到爬虫接口正常访问。
接下来的事情就很简单了,selenium封装这个授权页面,账号池里扔几个qq号,多线程爬虫一过期就打开页面重新登录重新生成accessToken
至于qq网页登录的验证码。。安全性就不说了,过验证码的源码百度很多,总的来说能绕就别刚。
文侵删。