一,腾讯网站登陆过程分析
腾讯网站包括qq.com为主域名的网站,包括t.qq.com,www.qq.com以及腾讯数不清的各个子域名,因为腾讯使用的sso登陆,所以登陆流程对于各个子域名都是一样的。下面我就以腾讯微博为例子来介绍一下:
第一步:
当用户在浏览器输入:http://t.qq.com/login.php的时候,浏览器下载页面,执行js检查用户是否qq登陆,如果QQ已经登陆的话,那么显示快速登陆界面,实现方式在ie为active object ,因为快速登陆和我们这次讨论的主题相关不大。所以不讨论。此步骤不影响输入用户名和密码的登陆方式。我们选择使用其他账号登陆。
第二步:
当用户输入QQ账号后,浏览器通过js向登陆服务器发送获取验证码的请求,如下图:
下面我们对请求进行分析:
请求的url是http://check.ptlogin2.qq.com/check传递四个参数uin, appid , r ptlang
uin 用户的登陆账号即qq号码
appid 微博应用的id 相对于统一登陆来说微博也是一个应用
r 随机数,避免缓存
ptlang 用户语言代码
服务器response如下:
设置登陆ptvfsession 的cookie 在域 ptlogin2.qq.com
返回|Response 内容如上,其实上面是一个js函数调用,此函数三个参数,由登陆服务器设置好了,每次请求都会变化,这次为“0”,‘!ZGI’,和“\x00...”。这几个参数的作用在后面介绍。我们记着有这个几个参数即可。
第三步:
用户输入密码,点击登陆,请求过程如下:
分析如下:
请求的url: ptlogin2.qq.com/login 参数较多,我只找比较重要的说一说, u是QQ号码, p 是加密过的密码,verifycode 是验证码或者上一步骤服务器传递过来的参数,aid 是应用id 其他参数不太重要。
请求的cookie:带着上次得到的ptvsession
响应分析如下:
如果用户qq和密码正确的话,用户登录成功,响应的cookie值见上图,我勾选的skey和lkey是用户登录的凭证,有此cookie说明用户已经登录成功。
响应的代码如下:
这同样也是一个js函数。通过文字我们可以判断用户登录成功了。
至此,用户登录完毕。skey 和lkey 的cookie种在了qq.com域名下。所以用户可以在腾讯的各个子站之间漫游,不需要重新登录了。。
大致流程我概括如下:
1,通过用户名称得到vercode
2, 使用vercodemd5 加密密码 之后完成登录。
对登录过程了解之后,就可以使用使用用户名和密码用httpClient或者其他工具来模拟登录了,其中难点是密码的加密算法。算法并不是对用户输入的密码做简单的md5散列,我们下面对密码加密算法进行分析。
二,密码是如何加密的
登录使用的js是login_div.js?1.2.1,下载之后结果如下图:
注意我勾选的ptui_checkVC(B,E,C),是不是感觉很熟悉,对,就是上面第一步中check之后返回的js函数。此js加载之后,首先执行pt.init()初始化函数。具体代码可以仔细分析。我先说重要部分,让我们使用上面的参数“0”,‘!ZGI’,和“\x00...”
进入ptui_checkVC内部:此函数调用其实是:pt.checkVC(B, E, C);
再进入pt.checkVC内部: 具体看下面代码,注意我勾选的两个句子:pt.uin= "\x00..."
当用户点击登录按钮之后,执行的js其实是pt.submit() 代码如下:
我勾选的那端代码就是对密码的加密过程,让我们一句一句的分析:
var D = G.p.value; //得到密码的值
var H = hexchar2bin(md5(D)); //进行一次md5加密,之后转换为字符串
var F = md5(H + pt.uin); // 用上一步的结果和pt.uin链接再进行一次md5加密,
var C = md5(F + G.verifycode.value.toUpperCase()); // 用上一步的结果和verifycode 大写链接再进行一次md5加密
加密完成了。。
后记:
有了这个分析过程,我们可以使用任何语言来实现腾讯网站的登陆了。。。。。。
分享到:
相关推荐
竞品分析报告腾讯微博VS新浪微博.ppt
腾讯微博源代码,想学习android微博开发的童鞋自己拿去看看啊
腾讯微博架构的成长过程.pdf,
浪人腾讯微博营销小助手是一款微博营销辅助软件,功能包括批量发送广播,定时发送广播,离线定时发送广播,离线定时心情签到等。 浪人腾讯微博营销小助手粉丝功能介绍: 1.收听指定用户ID 浪人腾讯微博营销小助手...
腾讯微博爬虫程序例子 腾讯微博爬虫程序例子 腾讯微博爬虫程序例子
腾讯 微博 Java SDK
在手机客户端 向新浪腾讯微博发送微博运用Oauth认证 第三方jar包
腾讯微博备份工具同时还具备导出功能,支持文本txt、... 2、登录后就可以把全部微博内容备份下来保存到本地电脑,包括转载广播、图片。 也可备份指定某个人的微博 3、可以备份并导出QQ说说(腾讯说说)的内容。 腾讯微
易一辅助工具腾讯微博小推兔一键转发软件就是款适用于腾讯微博的增加粉丝的工具。对于那些本来好友就少,粉丝也少的小伙伴来说,借助它就能够快速帮你增加腾讯微博中的粉丝,从而让你在里面成为网络红人! 易一辅助...
Android 手机开发 利用腾讯微博开放平台提供的API发表微博
腾讯微博抓取,实现抓取自己个人信息,听众,收听,发微博私信等,java使用qweibo4j实现
asp.net 腾讯微博SDK OAuth2.0API接口,示例源码,登陆腾讯微博授权成功后可获得昵称、图像、OpenId,最新微博及粉丝等。100%可用,示例应用于 http://goupiaotong.com/login.aspx
这个项目是腾讯微博客服端源码,包函腾讯微博里所有的功能,并且代码中标有注释
腾讯微博批量广播源码,这个是手机GET 提交
腾讯微博架构介绍。想学习架构的同学可以下载了解下!
一键完成腾讯微博微博任务 并领奖.
腾讯微博开放平台api调用实现,下载后可立即使用。
最新模拟登录腾讯微博,分3部,第一步必须先获取login_sig然后才能下面的步骤
仿腾讯微博效果,代码不错经过测试,换一个下载