SmartQQ是腾讯在Web上推出的一款单纯的聊天工具,pc端与移动端都可以访问,接下来具体的分析下登陆流程。

网站:http://w.qq.com/

工具:这个随意能够看到http数据包就可以,浏览器一般都自带开发者工具可以通过快捷键(F12)调出。

重点来了~

提取二维码地址

二维码地址:https://ssl.ptlogin2.qq.com/ptqrshow?appid=501004106&e=0&l=M&s=5&d=72&v=4&t=0.7162917961819727(0.7162917961819727是个随机数字)

请求方式:get

登录检测(第一次登陆):

当你打开http://w.qq.com/网页时,会触发个事件,检测手机端授权。

地址:https://ssl.ptlogin2.qq.com/ptqrlogin?webqq_type=10&remember_uin=1&login2qq=1&aid=501004106&u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=0-0-598617&mibao_css=m_webqq&t=1&g=1&js_type=0&js_ver=10156&login_sig=&pt_randsalt=2

请求方式:get

cookie:使用二维码cookie

响应内容:

当手机端未授权时

ptuiCB('66','0','','0','二维码未失效。(3814721644)', '');
当手机端授权时

ptuiCB('67','0','','0','二维码认证中。(691021781)', '');

当手机端授权成功时

ptuiCB('0','0','http://ptlogin4.web2.qq.com/check_sig?pttype=1& amp;uin=957019238&service=ptqrlogin&nodirect=0& ptsigx=165f2625307b4a9227fb7e973e8ca09bf5a3739efe6756744b4b6c5e5bd947ba747e8249612ee87e860b24f2ebfdc75eedd071b2ec55e6ab5f025f6ac321f3b4& amp;s_url=http%3A%2F %2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&f_url=& amp;ptlang=2052&ptredirect=100&aid=501004106&daid=164& j_later=0&low_login_hour=0&regmaster=0&pt_login_type=3& pt_aid=0&pt_aaid=16&pt_light=0&pt_3rd_aid=0','0','登录成功!', '椰子');)

如果二维码失效,需要重新请求二维码

参数分析:

参数 1:错误码,0没有错误。

参数 2:暂未知。

参数 3:跳转URL,只有访问过跳转URL才算真正第一次登录完毕。

参数 4:未知。

参数 5:描述信息。

参数 6:未知。

第二次登录(登录跳转+正式上线):

跳转登陆

地址:提取第一次登陆成功响应内容中的参数3

请求方式:get

cookie:将上面的cookie合到一起使用

禁止重定向:真

请求个地址不知道干嘛,如果不访问有时会出现100100错误

地址:http://s.web2.qq.com/api/getvfwebqq?ptwebqq=提取第一次登陆成功响应的cookie中的ptwebqq的值&clientid=53999199&psessionid=&t=1458896274129

请求方式:get

cookie:将上面的cookie合到一起使用

协议头:Referer: http://s.web2.qq.com/proxy.html?v=20130916001&callback=1&id=1
    Host: s.web2.qq.com

第二次登陆

地址:http://d1.web2.qq.com/channel/login2

请求方式:post

请求参数:r=%7B%22ptwebqq%22%3A%22提取第一次登陆成功响应的cookie中的ptwebqq的值%22%2C%22clientid%22%3A53999199%2C%22psessionid%22%3A%22%22%2C%22status%22%3A%22online%22%7D

协议头:Referer: http://d1.web2.qq.com/proxy.html?v=20151105001&callback=1&id=2

cookie:将上面的cookie合到一起使用

响应内容:

正式登陆成功~

cookie是非常重要的,cookie注意下,应该将所有的cookie都放到一起。

如果大家文章有什么问题或者哪里写的不对,可以联系的我QQ:957019238!

更新时间:2016年5月27日22:51:48

SmartQQ二维码登陆接口分析的更多相关文章

  1. app扫描二维码登陆

    先说明一下实现原理: 如同微信扫描登陆一样,就是一种pc的自动登陆授权.在网站首页得有切换登陆的选项:密码登陆 扫码登陆 当用户切换到扫码登陆时,向服务器请求一次获得一个唯一的uukey 利用这个uu ...

  2. Spring Cloud OAuth2(二) 扩展登陆方式:账户密码登陆、 手机验证码登陆、 二维码扫码登陆

    概要 基于上文讲解的spring cloud 授权服务的搭建,本文扩展了spring security 的登陆方式,增加手机验证码登陆.二维码登陆. 主要实现方式为使用自定义filter. Authe ...

  3. 第一讲 从头开始做一个web qq 机器人,第一步获取smart qq二维码

    新手教程: 前言:最近在看了一下很久很久以前做的qq机器人失效了,最近也在换工作目前还在职,时间很挺宽裕的.就决定从新搞一个web qq机器人 PC的协议解析出来有点费时间以后再做. 准备工作: 编译 ...

  4. 基于SignalR的消息推送与二维码描登录实现

    1 概要说明 使用微信扫描登录相信大家都不会陌生吧,二维码与手机结合产生了不同应用场景,基于二维码的应用更是比较广泛.为了满足ios.android客户端与web短信平台的结合,特开发了基于Singl ...

  5. C#微信公众号接口开发,灵活利用网页授权、带参数二维码、模板消息,提升用户体验之完成用户绑定个人微信及验证码获取

    一.前言 当下微信公众号几乎已经是每个公司必备的,但是大部分微信公众账号用户体验都欠佳,特别是涉及到用户绑定等,需要用户进行复杂的操作才可以和网站绑定,或者很多公司直接不绑定,而是每次都让用户填写账号 ...

  6. iOS二维码扫描IOS7系统实现

    扫描相关类 二维码扫描需要获取摄像头并读取照片信息,因此我们需要导入系统的AVFoundation框架,创建视频会话.我们需要用到一下几个类: AVCaptureSession 会话对象.此类作为硬件 ...

  7. iOS - 二维码扫描和应用跳转

    序言 前面我们已经调到过怎么制作二维码,在我们能够生成二维码之后,如何对二维码进行扫描呢? 在iOS7之前,大部分应用中使用的二维码扫描是第三方的扫描框架,例如ZXing或者ZBar.使用时集成麻烦, ...

  8. iOS开发-二维码扫描和应用跳转

    iOS开发-二维码扫描和应用跳转   序言 前面我们已经调到过怎么制作二维码,在我们能够生成二维码之后,如何对二维码进行扫描呢? 在iOS7之前,大部分应用中使用的二维码扫描是第三方的扫描框架,例如Z ...

  9. android利用zbar二维码扫描-(解决中文乱码及扫描区域定义)

    写在最前(这是对上一篇博文的问题做的更新[android利用zbar二维码扫描]) project下载   zbarLib编译project  project下载0积分 bug 在2.3的系统中Hol ...

随机推荐

  1. Apache的配置

    Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改. 主站点的配置(基本配置) (1) 基本配置: ServerRoot "/mnt/s ...

  2. 【行为型】Interpreter模式

    解释器模式意图为给定的语言定义其文法表示,同时定义该文法表示的一套解释器来解释语言中的句子.该模式说的简单通俗点,其主要用途是用来解释用的.至于解释什么,则要看具体的上下文环境.我们可以为一个表达式专 ...

  3. JS版本网站资源状态检测

    Title:JS版本网站资源状态检测  --2012-08-28 14:08 前几天需要一个网站状态检测的东东,后面写了个蹩脚的JS版本,里面用到了以前没用过的东西,在这里记下来,其实批处理加curl ...

  4. spark1.1.0源码阅读-dagscheduler and stage

    1. rdd action ->sparkContext.runJob->dagscheduler.runJob def runJob[T, U: ClassTag]( rdd: RDD[ ...

  5. Qt on Android

    Qt on Android Episode 7(翻译) http://blog.csdn.net/foruok/article/details/46323129 Android基础整理之四大组件Act ...

  6. Jquery 对象集合的迭代扩展forEach

    if (jQuery && !jQuery.fn.forEach) { $(function () { (function ($) { $.fn.extend({ forEach: f ...

  7. Android 解决listview中checkBox错位选择

    假如ListView,分成2页(或者设置数据可以纵向拉,可隐藏),每页3条数据,每个Listview的Item 里面有个checkBox,现在,当我选择第一页的前两天数据,翻到第二页,竟然第二页后两条 ...

  8. PHP上传文件出现文件名被截掉第一个字符的问题

    最近用PHP做了一个简单的上传功能,结果出现了一个意想不到的问题.我上传的文件,在获取$_FILES的时候发现文件名的第一个字符被截掉了,因为最开始上传的一直是数字或者字母为名称的文档,也没有太在意这 ...

  9. 黑马程序员_JavaIO流(一)

    IO(Input Output)流 概述: IO流(数据流)用来处理设备之间的数据传输. Java对数据的操作是通过流的方式. Java用于操作流的对象都在IO包中. 流按操作数据分为两种:字节流与字 ...

  10. Spring+Mybatis+mysql配置

    mybatis的映射文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper SY ...