申明:本文章只做研究之用,不得用于商业目的,不得大规模推出自己的QQ代替腾讯的产品,后果自负。

绪:

一直想弄个程序与QQ直接通信,再弄个聊天机器人什么的,困于无从下手:QQ太麻烦了,抓包来看看吧,全是乱码,没个能读通的,明显加过密,解密的难度也太大了。

好在出了个WebQQ,一切问题都解决了,因为浏览器要运行程序,得从服务器下载数据啊,也就是源代码了。源代码都有了,还有什么不能解决的?

在此,推荐一款抓包工具,Fiddler,英文版的,但太好用了,不得不推荐一下。

本系列文章针对的是WebQQ的version:1.1版本,网址:http://web.qq.com

1、获取验证码

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

GET http://ptlogin2.qq.com/check?uin=1030196367&appid=1002101&r=0.8849248

“1030196367”是我测试用的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=1030196367是QQ号,vc_type=...是js文件生成的,具体怎么回事就不知道了。

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

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

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

GET http://ptlogin2.qq.com/login?u=1030196367&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=1030196367是QQ号,p=...是密码,这密码并不是原始密码很正常,不然盗个QQ号也太容易了(插一句,其实服务器也不知道你密码是什么,但它知道你密码经过处理以后长什么样,所以你密码丢了,它只会给你新密码,而不会告诉你旧密码,因为它也不知道啊,^_^),这个密码好像是用MD5对原始密码加密,用输入的验证码处理一下再用MD5加密得到的,具体可以到js文件里研究一下。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,也要用。

作者:yjh4866

源地址:http://blog.csdn.net/yjh4866

WebQQ协议分析(1)——登录相关推荐

  1. 网页微信协议分析(一)——登录

    参考:https://www.52pojie.cn/thread-836149-1-1.html 1,先分析二维码,多次刷新页面对比,红色部分属于变动的参数 二维码请求地址:https://login ...

  2. webqq登录协议分析

    webqq登录协议分析 通过webqq接口,可以实现发送.接收qq消息. 1.首先调用:http://ptlogin2.qq.com/check?appid=1002101&uin=qq号码& ...

  3. FTP协议中的登录 上传 下载 新建目录 删除目录 的wireshark包分析(一文看完TCP包分析,附源文件,ppt,操作视频)

    ​​​​​​​目录 一原理 二.FTP登录 三.FTP下载 四.FTP上传 五.FTP新建目录 六.FTP删除目录 一原理 前言:TCP/IP四层模型和OSI模型对照,以及FTP在模型中的位置. • ...

  4. QQ2007Bate3协议分析——登录认证篇

    作者:charytang 联系方式:Email: runtang@vip.sina.com    QQ:3398171 创建时间:2007年7月31日星期二 1.      说明: 本文以QQ2007 ...

  5. 某游戏盒登录协议分析

    前言 距离上次写博客已经过去了一个月,博主本人在这期间也分析了不少案列,这次分享一个比较综合的案例,难易程度偏简单,适合协议分析练手,下面直接进入正题. 准备工作 首先我们得安装抓包软件,我这里是用F ...

  6. webqq2协议分析和qq聊天机器人简单实现(转)

    webqq2协议分析和qq聊天机器人简单实现 转之http://hfutxf.javaeye.com/blog/800866 通过webqq接口,可以实现发送qq消息接收qq消息等,这样,想实现一个q ...

  7. VC++分析数据包实现Telnet协议分析

    Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力.在终端使用者的电脑上使用telnet程序,用它连接 ...

  8. Java 实现 SSH 协议的客户端登录认证方式--转载

    背景 在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了解.首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不同计算机之间 ...

  9. 钉钉小程序可以上传文件_怎样禁止钉钉外发文件?钉钉文件传输协议分析

    钉钉(DingTalk)是中国领先的智能移动办公平台,用于商务沟通和工作协同.越来越多企业采用钉钉来进行办公自动化,但是由此带来的信息安全问题也不能忽视.钉钉软件可以很容易的上传附件.外发和接收文件, ...

最新文章

  1. Intellij IDEA中生成jar包
  2. Uva 1103 Ancient Messages
  3. HTML cellpadding与cellspacing属性
  4. Leetcode155最小栈
  5. 百度云虚拟机 隐藏index.php,wamp server虚拟主机设置index.php隐藏(入口文件隐藏)
  6. Dubbo为什么用Go重写?
  7. 大学生计算机基础清考试卷,天大《计算机网络基础》4月毕业清考作业考核试题模板.doc...
  8. 【转】两厢车与三厢车安全性哪个好?
  9. 基于PHP、Mysql的电影院售票系统
  10. noip2013 day2
  11. leafletjs 热力图_leaflet.js自定义热力图效果实例
  12. 浏览器插件镜像下载地址
  13. 小学校本课程计算机前言,《创意手工》三河小学校本课程——序言
  14. memcpy和memmove以及memcmp
  15. Fedora安装字体方法和Ubuntu非常不同!
  16. mysql命令行参数
  17. python爬取整个网站的广告敏感词_Python实现敏感词过滤的4种方法
  18. 关于华为的高薪和华为的加班
  19. 数字图像基本处理算法
  20. 五金手册_五金反引号

热门文章

  1. 北航研究生院--《云计算技术原理》(1)
  2. 【玩转python】python实现代替QQ邮箱发出邮件(附源码,新手也能用!)
  3. Java编写一个桌球_java练习题——简易的桌球游戏
  4. html5相邻选择器,相邻选择器 - 无可奈何花落去 似曾相识燕归来 - BlogJava
  5. 「蓝湖设计协作平台」一切为了更好的交付
  6. 什么是电商ERP,有什么作用
  7. 意大利作曲家维瓦尔第
  8. sharesdk分享qq空间-错误码1001
  9. 百度地图自定义标注点
  10. 家庭nas方案_openmediavault入门:家庭NAS解决方案