其实16年后几个月算法就已经较大幅度改变了,只是无验证码情况下,我上篇文章15年的老算法仍然可以用,首先说下,我后面提交的某些参数是不必要的,尤其是一些直接写成常量的参数,抓包直接copy过来的,具体没筛选。

http://xui.ptlogin2.qq.com/cgi-bin/xlogin。。。

访问这个地址能从cookies里取得pt_login_sig,后面check时会有一个参数与之对应,这个login_sig早就有了,有无皆可,至少我一直没用到过,

进入正题,先说无需验证码的,老规矩从check开始,

URL_CHECK = 'http://check.ptlogin2.qq.com/check' +\'?regmaster=' +\'&pt_tea=2' +\'&pt_vcode=1' +\'&uin=%s' % UID +\'&appid=%s' % APPID +\'&js_ver=10188' +\'&js_type=1' +\'&login_sig=%s' % login_sig +\'&r=0.14723663520999253' +\'u1=http://qzs.qq.com/qzone/v5/loginsucc.html?para=izone' +\'pt_uistyle=40';

采用新算法时pt_tea必须为2,pt_vcode没做过多测试,反正目前我填几都木影响,其他参数木啥好说的。

ptui_checkVC('0','!TPX','\x39\x37\x35\x10\x4a\x1f\x20\x2d','6f5d1367563ef5429b0585cb305087bcbb176cddf9b51dfafe8c3e3bc0f15ffc466996e04ccd6e1f14f2809ad3d5cbda78f697de2876156e','3');

字段一pt_vcode_v1,0代表不需要验证码,1代表需要,字段二就是验证码,字段三是pt_uin,密码加密时需要,第四个字段是pt_verifysession_v1,登录时要用,最后字段是pt_randsalt,用qq号登录时是2,用邮箱是3,手机我没测试。

然后就可以登录了,

URL_LOGIN = 'http://ptlogin2.qq.com/login' +\'?u=%s' % UID +\'&verifycode=%s' % VCODE +\'&pt_vcode_v1=%s' % PT_VCODE_V1 +\'&pt_verifysession_v1=%s' % PT_VERIFYSESSION_V1 +\'&p=%s' % P +\'&pt_randsalt=%s' % PT_RANDSALT+\'&u1=http%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone' +\'&ptredirect=0' +\'&h=1' +\'&t=1' +\'&g=1' +\'&from_ui=1' +\'&ptlang=2052' +\'&action=3-21-1482653919209' +\'&js_ver=10188' +\'&js_type=1' +\'&login_sig=%s' % LOGIN_SIG +\'&pt_uistyle=40' +\'&aid=549000912' +\'&daid=5';

VCODE就是之前返回的验证码,其他都懂的,login_sig写不写随意。

=============================================================================================

再来说说需要验证码的登录流程,稍微麻烦点:

首先还是check,

ptui_checkVC('1','5JoPkMMc6KxpJ8H0jkMhKHJ9_IJNzqQCOuTJ7oAYNh7l4KruqQswfQ**','\x00\x00\x00\x00\x4f\xa7\xac\x11','','2');

这次需要验证码才能登录,所以pt_vcode_v1变成1,字段二不同了哦,它叫cap_cd,后面获取验证码时要用到,字段三还是pt_uin不变,字段四pt_verifysession_v1这次为空,后面才能得到,pt_randsalt意义相同。

之后我们先要取得vsig参数:

    URL = 'http://captcha.qq.com/cap_union_new_show' +\'?aid=%s' % APPID +\'&asig=&captype=&protocol=http&clientype=2&disturblevel=&apptype=2&curenv=inner&noBorder=noborder&showtype=embed' +\'&uid=%s' % UID +\'&cap_cd=%s' % CAP_CD +\'&lang=2052';

APPID都知道吧,乱写也行,UID无须解释,CAP_CD就是之前check时返回的,之后会返回一个html,里面会有一串字符,非常显眼,

类似gRSMPwMX2Qhy9U03oFBkR23PLvQ_fGVKhXb80RWDhKHDQJCC2J7JZJh9YHAAkDSDKdDnJJiIon3-ny3JmmTfRqOSBHx62pVx4LlBhH1AIN52Jr9Ev8C57TA**,直接抠出来就行了。

有了cap_cd和vsig就能取回验证码了。

    URL = 'http://captcha.qq.com/cap_union_new_getcapbysig?' +\'aid=%s' % APPID +\'&asig=&captype=&protocol=http&clientype=2&disturblevel=&apptype=2&curenv=inner&noBorder=noborder&showtype=embed' +\'&uid=%s' % UID +\'&cap_cd=%s' % CAP_CD +\'&lang=2052&rnd=7440&rand=0.8917365573600687' +\'&vsig=%s' % VSIG +\'&ischartype=1';

一目了然,但返回的图片里的验证码并不是最后登录时提交的验证码,正式登录前还需要一个步骤取得必要的数据,

            URL_VERIFY = 'http://captcha.qq.com/cap_union_new_verify?random=1482310265526';postdata= {  'aid': APPID,'asig': '','captype': '','protocol': 'http','clientype': 2,'disturblevel': '','apptype': 2,'curenv': 'inner','noBorder': 'noborder','showtype': 'embed','uid': UID,'cap_cd': checkinfo['cap_cd'],'lang': 2052,'subcapclass': 0,'collect' : '','vsig': VSIG,'cdata': 0,'ans': USER_VCODE,};

checkinfo['cap_cd']就是之前我们一直在说的cap_cd, VSIG是刚刚抠出来的那一串,collect的生成很复杂,但在这里并不重要,可以为空,USER_VCODE就是我们刚才得到的图片里的验证码,值得注意的是新的算法在这一步需要post数据,而不是get。

其后服务器将返回如下数据:

enter: {'ticket': 't02D-rmFY2NgRig_BIingh0O8bDJMDyEwbmE8uv7s7ZzBBDaqLf5XAy_J8_HGP3Nb4oB99Z6MJuPVdwGmEthEyXUlZzzPEDFxx37r8X98CbAAC*', 'errorCode': '0', 'randstr': '@57S', 'errMessage': 'OK' }

其中randstr就是后面登陆时提交给服务器的验证码,还记的我们最初check时pt_verifysession_v1为空么,没错,就是这里的ticket.

一切就绪,可以登录了:

        URL_LOGIN = 'http://ptlogin2.qq.com/login' +\'?u=%s' % UID +\'&verifycode=%s' % VCODE +\'&pt_vcode_v1=%s' % PT_VCODE_V1 +\'&pt_verifysession_v1=%s' % PT_VERIFYSESSION_V1 +\'&p=%s' % P +\'&pt_randsalt=%s' % PT_RANDSALT+\'&u1=http%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone' +\'&ptredirect=0' +\'&h=1' +\'&t=1' +\'&g=1' +\'&from_ui=1' +\'&ptlang=2052' +\'&action=3-21-1482653919209' +\'&js_ver=10188' +\'&js_type=1' +\'&login_sig=%s' % LOGIN_SIG +\'&pt_uistyle=40' +\'&aid=549000912' +\'&daid=5';

所有参数之前都解释过了,唯独p,p的加密算法也变了,都在c_login_2.js这个文件里,文件很长,乱糟糟,所以继续发扬拿来主义吧,随便改改用本地js引擎拿结果即可。

转载于:https://www.cnblogs.com/reaper-spring/p/6290837.html

2017 最新qq登录算法相关推荐

  1. 2017最新qq第三方登陆教程

    一.注册成为开发者 链接:https://connect.qq.com/index.html 二.创建应用 注册成功后在   应用管理 ->网站应用 里创建自己的应用 三.获取app Id 和 ...

  2. ios QQ 登录提示下载安装最新版本qq

    您没有安装最新版本qq,请先下载并安装,登录更安全 解决方法: 如果确定工程配置没问题,或者之前上线可以,现在不行了,可以先联系客服 qq登录客服:800013811, 选择人工服务 说明情况,人家会 ...

  3. iOS开发之第三方登录QQ -- 史上最全最新第三方登录QQ方式实现

    项目地址 :  https://github.com/zhonggaorong/QQLoginDemo/tree/master 最新版本的qq登录实现步骤实现: 1. 首先,你需要去向腾讯申请账号. ...

  4. 网站接入QQ登录最新2020 java版本

    1.首先先注册账号,然后填资料审核,等个三四天吧大概 https://connect.qq.com/ 2.审核通过后点击创建应用,把备案号什么的都填(这个审核两天之内一般) !!! 这里有个重点,网站 ...

  5. 2015最新iOS QQ登录(64位)

    QQ登录集成步骤 1.去腾讯开放平台注册开发者,然后创建应用,完善应用信息,提交审核,审核成功后就可以使用APP ID和APP KEY. 2.下载官方SDK,参考官方文档,也可以查看官方demo 3. ...

  6. html 加QQ链接QQ版本不支持,网站接入QQ登录(JS版)【最新教程 04.10更新】,亲身失败百次的总结...

    开发阶段(偏后端的同学可以查看 PHP版 教程) 3.1. 因为 QQ互联 官网只是简单的提供了 JS-SDK 以及相关的 API,可能部分同学初见比较茫然.所以为了帮助同学们更好理解,我整理出以下内 ...

  7. Unity Shader(一) Lowpoly动态低多边形 (QQ登录界面低边动画)

    前言 在逛论坛的时候偶然发现有人在问动态低多边形(Lowpoly)是如何实现的,因为经常编写UGUI拓展对顶点操作较为熟悉的我立马就想到利用继承UnityEngine.Graphic,重写OnPopu ...

  8. 仿 手机QQ 登录、注册、找回密码、好友列表、QQ状态等功能的实现

    仿 手机QQ 登录.注册.找回密码.好友列表.QQ状态等功能的实现 全文 图 + 代码 .... 福利!!!(QQ登录背景,过度页面背景) 1.加载过程中的背景 2.登录页面 ==1. 登录页面 布局 ...

  9. 战双帕弥什qq登录服务器未响应是什么意思,战双帕弥什qq登录

    战双帕弥什qq登录是一款非常经典的二次元手游,玩家在这款战双帕弥什qq登录游戏中有很多有趣的角色可以体验,玩家在这里有很多好玩的游戏玩法可以享受,还有超多礼包等着玩家前来体验,感兴趣的玩家快来下载这款 ...

最新文章

  1. PyTorch 的 Autograd详解
  2. golang bool布尔类型浅讲
  3. SLAM Cartographer(16)约束构建器
  4. socket结构和几个IP地址转换函数
  5. java deque.pop_Java - dequeue的介紹及用法
  6. 【概率论与数理统计】小结8 - 三大抽样分布
  7. curl 使用 ~/.netrc ( Windows 上是 _netrc ) 问题
  8. 工程图字体宋体仿宋_宋体和仿宋体的区别
  9. 李开复写给中国大学生的信
  10. uwp浏览器java源码_在UWP应用程序中打开UWP
  11. opencv+python获取摄像头视频流并翻转保存文件
  12. 一站式WPF--依赖属性(DependencyProperty)一
  13. java 四分位算法_四分位数怎么算
  14. Windows主机加固
  15. 基于主从博弈的社区综合能源系统分布式协同优化运行策略(Matlab代码实现)
  16. MySQL中PreparedStatement sql中in的引号问题
  17. LeetCode 从零单刷个人笔记整理(持续更新)
  18. Android studio中.9图片的含义及制作教程
  19. scroll-view 竖向滚动高度设置
  20. 海量数据搜索算法优化(转)

热门文章

  1. java牛奶订购系统,Java IO系统
  2. delphi中pos的用法
  3. Apache Velocity 模板语言 特殊字符${ $!{ 原样输出问题 转义符 # ! 无效
  4. Can‘t connect to MySQL server on ‘localhost‘ (10061)
  5. 孩子学python用的笔记本电脑_教孩子学Python 后的一点感受
  6. slam入门2:轮式里程计与2D激光联合标定及里程计内参校准
  7. Android TextView、EditText显示输入法自带表情,记录一下
  8. vue使用keep-alive缓存页面 回到滚动位置
  9. 5G、AI、物联网、AR、VR入围2019年度十大科技热词
  10. 这里,陌生人发的动态比朋友圈有趣多了!