基于本文开发浏览器插件皮皮华插件
本插件的核心功能是服务器支持检测cookie到期时间,并能在cookie即将到期时自动登录并更新最新的cookie。插件的源码已开源,可下载zip格式的安装文件解压后查看源代码。由于注册用户过多,已限制新用户使用。
前言
现如今越来越多的网站采用QQ或微信作为用户的一种快速登陆方式。随着互联网技术的发展,对自动化登陆的要求也随之产生,那么本文就由QQ出发,深入分析下QQ的授权流程,并如何实现自动化登陆。关键代码不分享,仅供参考学习。
首先简单看看QQ第三方网站授权登陆的流程图
简单原理
接触过自动登陆QQ的朋友都知道,最难的就是过验证码,可以参考目前网上例如使用python或者接码平台等方式,但本文的简化这些步骤,服务器的IP多登陆几次成为常用IP后登陆就不需要验证。当然,本文的重点不是QQ登陆,而是如何授权第三方网站。
1、获取需授权的QQ账号信息
-
如何实现加密验证
使用Fiddler抓包分析登陆流程,重点要解决p参数的加密过程。按F12调试发现以下函数
可看出共使用了TEA、RSA、BASE64一共3种方式混合加密,并且这3种加密函数全由原生JS实现,以上函数使用PHP重写后:
其中TEA和RSA的加密因为嫌麻烦就直接用PHP运行js代码了(需要安装v8js扩展)。以下函数的JS代码也是在c_login_2.js中提取的。
-
模拟用户QQ登陆
2、怎样授权第三方网站并拿到第三方网站的cookie
同样使用Fiddler抓包分析登陆流程,整个过程分3步走。
1)获取state
某些网站在接入Oauth2.0时并没有做state验证,所以也不需要此步骤。以下以网易云音乐为例。
通过Fiddler找到网易云音乐对应获取state的url:https://music.163.com/api/sns/authorize?snsType=5&clientType=web2&callbackType=Login&forcelogin=true
模拟请求该链接后通过正则匹配获取state的值。
2)授权第三方网页
通过POST请求https://graph.qq.com/oauth2.0/authorize传入最重要的client_id、redirect_uri、state、g_tk这4个参数,其中g_tk由p_skey计算得出。如果授权成功则会返回授权成功后的回调url。
3)获取回调网页Cookie
模拟请求上一步获取到的回调url即可获取到对应网站的cookie信息。
总结
通过以上流程即可全自动化的实现登录,并且可以在此基础上增加cookie到期时间判断,实现定时更新第三方网站的cookie。
以下为PHP版完整的第三方授权类,
本文仅供思路参考,严禁用于非法用途,转载请注明出处。
本文地址:http://huazai.eleuu.com/?post=33
版权声明:若无注明,本文皆为“皮皮华博客”原创,转载请保留文章出处。
发表吐槽
你肿么看?
既然没有吐槽,那就赶紧抢沙发吧!