晨露博客

关注互联网,关注科技,关注生活!

上一篇: MySQL数据库之性能优化 下一篇:WebQQ设计之获取登录令牌

WebQQ设计分析之登陆协议前面给大家总体介绍了WebQQ设计的基本流程和结构框架,以后将为大家一步一步的实现这个WebQQ软件。今天就先为大家分析WebQQ程序的第一步:登陆协议分析。

大家知道,在登陆WebQQ的时候,有时候是需要输入验证码的。那么,这也是我们必须做的第一步工作,那就是获取验证码,当然,需要获取的验证码是图片格式的哦。

1、获取验证码

用Web登录QQ时需要先打开web.qq.com,但我们用的是应用程序模拟浏览器登录,所以这一步是没有必要的,所以我们主要看看点击“登录”按钮时浏览器向服务器发送什么数据了。Web登录QQ输入帐号输入焦点离开时,有时会提示要输入验证码,那么第一步就是要看看什么样的QQ号需要输入验证码。

例如,用HttpWatch就可以查看是一条GET形式的代码:GET http://ptlogin2.qq.com/check?uin=515667845&appid=1002101&r=0.8849248

“515667845”是我测试用的QQ号,r的值是个随机数,可以由程序编写生成,然后向服务器发送这串数据。

则服务器返回“ptui_checkVC('0','!OMD');”

括号里有两个被逗号隔开的单引号引着的数据,第一个值如果为0,则第二值为验证码,即不需要再从服务器获取验证码图片了,这个就是验证码了;第一个值如果不是1,则需要从服务器获取验证码图片,验证码需要根据图片人工输入。

2、获取验证码图片

如果第一步中返回的数据中,括号里第一个单引号引起来的数据为0,则不需要这步。

取得验证码的请求是:GET http://captcha.qq.com/getimage?aid=1002101&r=0.7712672651606319&uin=1030196367&vc_type=……

“http://captcha.qq.com/getimage ”固定是不用怀疑的,aid=100210是固定的(看web.qq.com的页面数据就能找到了),r=0.7712672651606319是个随机数也毫无疑问,可以由程序编写生成uin=515667845是自己的QQ号,vc_type=...是js文件生成的,具体怎么回事在此不用知道。

研究表明,“GET http://captcha.qq.com/getimage?0.7712672651606319 ”这样就可以,后面那个随机数写成固定的就行了,服务器肯定不会每次都给你一样的验证码。

获取验证码图片的同时,还需要获取Cookie,verifysession的值,登录时要用。

 

3、输入帐号、密码及验证码登录

GET http://ptlogin2.qq.com/login?u=515667845&p=……&verifycode=afbc&remember_uin=1&aid=1002101&u1=http%3A%2F%2Fweb.qq.com%2Fmain.shtml%3Fdirect__2&h=1&ptredirect=1&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert

“http://ptlogin2.qq.com/login ” 不必讨论,u=515667845是QQ号,p=...是密码,这密码并不是原始密码很正常,不然盗个QQ号也太容易了(插一句,其实服务器也不知道你密码是什么,但它知道你密码经过处理以后长什么样,所以你密码丢了,它只会给你新密码,而不会告诉你旧密码,因为它也不知道啊,^_^),这个密码好像是 用MD5对原始密码加密,用输入的验证码处理一下再用MD5加密得到的。verifycode=afbc就是你输入的验证 码,remember_uin=1是记住帐号,aid=1002101同上,u1=http%3A%2F %2Fweb.qq.com%2Fmain.shtml%3Fdirect__2固定,本来%3A%2F%2F表示“://”,%3F表示“?”,但这里 不能代替,是个转义字符。webqq_type是隐身标志,后面其他都固定。

注意要设置Cookie,verifysession的值。

4、登录结果

登陆时服务器返回消息:ptuiCB('0','0','http://web.qq.com/main.shtml?direct__2','1');这是是登录成功的结果

括号中的第一个值是登录结果参数,

0:登录成功!
1:系统繁忙,请稍后重试。
2:已经过期的QQ号码。
3:您输入的密码有误,请重试。
4:您输入的验证码有误,请重试。
5:校验失败。
6:密码错误。如果您刚修改过密码, 请稍后再登录.
7:您的输入有误, 请重试。
8:您的IP输入错误的次数过多,请稍后再试。

http://web.qq.com/main.shtml?direct__2 是登录成功后浏览器用的地址,应用程序用不着,固定这个地址就可以。

注意,登录成功的话要获取Cookie值,后面要用,尤其是skey,ptcz,ptwebqq。

另外还有一个参数verifysession,就是验证码的那个Cookie,也要用。

这样,整个WebQQ的登陆过程就清楚了了。下一次将接着介绍怎样获取登陆令牌。

 

 

小博文章如没有特殊说明均为原创,如要帮忙推广还望加上我的链接哦!
  • 本文Url: http://www.chenlublog.com/post/web-qq-login-protocol.html (出自: 晨露博客)
  • 点击这里获取该日志的TrackBack引用地址

    • Gravatar Icon
      回复
    • quote 1.地球博客2011-11-22 15:50:33
    • 博主分析的很详细,学习了。
      醉梦 于 2012-2-12 21:06:30 回复
      http://blog.csdn.net/kloxo/article/details/7252990
    • Gravatar Icon
      回复
    • quote 3.激光切割机2011-11-24 11:57:18
    • 这个东西一直想学,但不知道该怎么下手
      醉梦 于 2012-2-12 21:05:31 回复
      完整版协议在这里呢http://blog.csdn.net/kloxo/article/details/7252990
      共同学习欢迎加入QQ群93772282
    • Gravatar Icon
      回复
    • quote 4.植物2011-11-24 16:33:21
    • web QQ?还是第一次听说啊

    发表评论:

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    关于本文

    您正在阅读的是:WebQQ设计之登陆协议分析
    morningdew 发表于:2011-11-22 11:49:4
    分类:网络编程
    关键词:QQ  编程  WebQQ  

    博客作者

    Morningdew

    晨露博客

    热门文章

    最近更新

    最新评论及回复

    最近留言

    站类搜索

    博文分类

    博文归档

    Copyright ©2010 晨露博客. All Rights Reserved.网站地图  Theme Designed By TangChang
    本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.
    This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.
    CONTACT ME:E-mail:tcmorningdew@gmail.com QQ:515667845<山景城的城主>   津备ICP09004821   GO TO TOP

    Powered By Z-Blog 1.8 Walle Build 91204