【Ono】QQ空间协议分析----扫码登录----【1】
刚好开学空闲时间较多,打算写一套QQ空间协议分析系列的文章记录一下。需要有一点点的编程基础,纯小白观看可能会引起不适 !
演示环境/工具:
win10/Eclipse
计划/目标:
从登陆到对QQ空间所有功能进行分析 。 (我只是对实现的过程进行讲述,具体代码的实现得大家自己手动)
欲善事必先利器,建议开始写时将基础框架写好。QQ空间无非就是GET,PSOT,Cookie只要将处理这些处理好剩下的一切都很简单了。
https://static.52pojie.cn/static/image/hrline/line3.pnghttps://static.52pojie.cn/static/image/hrline/line3.pnghttps://static.52pojie.cn/static/image/hrline/line3.png
为什么选择扫码登录呢?
扫码登录方式最简单,账号密码登录会有滑块验证有时还会有设备锁验证必须要扫码才能登陆!So,账号密码登录方式的先往后稍稍
https://static.52pojie.cn/static/image/hrline/line3.pnghttps://static.52pojie.cn/static/image/hrline/line3.pnghttps://static.52pojie.cn/static/image/hrline/line3.png
Action
扫码登录的流程:
1. 获取二维码图片
2.从Cookie中将qrsign值取进行计算结果就是ptqrtoken -- 该值监听二维码状态时需要
2.1.获取ptqrtoken的算法
3.二维码状态监听(共四个状态,二维码未失效、扫描未确定登录、已确定登录、二维码已失效)
4.当监听到确定登录后进行以下操作
4.1. 取出确定登录的Cookie
4.2. 确定登录后在返回信息中有一个RediractUrl,我们将它取出来
4.3 用确定登录的Cookie访问RediractUrl (需要禁止重定向访问)
4.4 访问RediractUrl之后得到的Cookie和以上步骤的Cookie进行合并,登录就算完成了!此时此刻就可以去
--end
https://static.52pojie.cn/static/image/hrline/line3.pnghttps://static.52pojie.cn/static/image/hrline/line3.pnghttps://static.52pojie.cn/static/image/hrline/line3.png
1. 获取二维码图片【GET】:
Url:https://ssl.ptlogin2.qq.com/ptqrshow?appid=549000912&e=2&l=M&s=3&d=72&v=4&t=0.24200843129159022&daid=5&pt_3rd_aid=0
访问并将图片保存至本地,将Set-Cookie(返回Cookie)记录
https://static.52pojie.cn/static/image/hrline/line3.pnghttps://static.52pojie.cn/static/image/hrline/line3.pnghttps://static.52pojie.cn/static/image/hrline/line3.png
2.从Cookie中将qrsign值取出进行计算,得到的结果就是ptqrtoken -- 该值监听二维码状态时需要:
为了节省时间直接上代码
/**
* 计算qrsign得到Ptqrtoken
* @Param qrsign
* @return
*/
public String getptqrtoken(String qrsign) {
int e = 0;
for (int i = 0; i < qrsign.length(); ++i) {
e += (e << 5) + (int)(char)(qrsign.charAt(i));
}
return (2147483647&e)+"";
}
https://static.52pojie.cn/static/image/hrline/line3.pnghttps://static.52pojie.cn/static/image/hrline/line3.pnghttps://static.52pojie.cn/static/image/hrline/line3.png
3.二维码状态监听(共四个状态,二维码未失效、扫描未确定登录、已确定登录、二维码已失效)【GET】:
Url:https://ssl.ptlogin2.qq.com/ptqrlogin?u1=https%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&ptqrtoken=ptqrtoken&ptredirect=0&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-0-1568112411698&js_ver=19081313&js_type=1&login_sig=qrsign&pt_uistyle=40&aid=549000912&daid=5&
Response:ptuiCB('66','0','','0','二维码未失效。(1181763324)', '')
当监听到登录成功后,注意以下点:
4.1. 取出确定登录的Cookie
4.2. 确定登录后在返回信息中有一个RediractUrl,我们将它取出来
4.3 用确定登录的Cookie访问RediractUrl (需要禁止重定向访问)必须禁止重定向否则将取不到Cookie
4.4 访问RediractUrl之后得到的Cookie和以上步骤的Cookie进行合并,登录就算完成了!此时此刻就可以去
https://static.52pojie.cn/static/image/hrline/line3.pnghttps://static.52pojie.cn/static/image/hrline/line3.pnghttps://static.52pojie.cn/static/image/hrline/line3.png
二维码登录到此就算完成了,是不是很简单?
给大家看看我的实现,是否很简单明了很舒服的感觉
继文章开头所说的 :
欲善事必先利器,建议开始写时将基础框架写好。
QQ空间无非就是GET,PSOT,Cookie只要将处理这些处理好剩下的一切都很简单了。
1.
2.
Dream_Peng 发表于 2021-2-8 16:07
其实重要的还是那个ptqrtoken 的计算方式 是怎么找出来的其余的都简单,奈何被你零句话带过
通过QQ js里面的(hash33)函数找的
function hash33(t) {
for (var e = 0, i = 0, n = t.length; i < n; ++i)
e += (e << 5) + t.charCodeAt(i);
return 2147483647 & e
} Dream_Peng 发表于 2021-2-24 09:13
其实我已经发过了但是这个函数 我也不知道怎么找出来的 就想知道下 怎么去找这个函数
https://imgcache.qq.com/ptlogin/ver/10233/js/c_login_2.js?max_age=604800&ptui_identifier=000E010D989AA31CE07BA6E98F56BC76012729B221D540BFF0DE375CAC8A
全文搜一下函数就能找到了 谢谢,学习了 感谢分享 什么编程语言写的,没看到 小猪嘟嘟 发表于 2019-9-10 20:28
什么编程语言写的,没看到
java写的最近刚好在学这个 还看得懂一部分研究一下 我想实现一下感觉老哥你代码没给全啊 {:301_1010:} 老哥,你在哪学习的呀? 老哥,能不能你所涉及到的类全部都写出来呀。比如那个qzoneinterface这个类就没有列出来呀。我实现不了呀。 麻烦楼主分享下全代码啊~~~~我看着你界面好像用的是HBuiliderX吧