阅读目录       

1,WEBQQ的登陆协议

2,传说中的心跳包

3,获得群,好友,

4实战(盗号-外挂-广告)

 

 

要说怎么突然研究起WEBQQ,也是比较偶然的机会,因为前一份工作专注于B2C商城的开发,

经常,自己写点工具,模拟一个HTTP请求来进行秒杀之类的,然后联想到QQ的农场,牧场

有很多辅助的小工具,自己开始研究WEBQQ,时间大概是2个双休,4天.

 

 

1,WEBQQ登陆协议

工具:火狐+firebug

1, 进入WEBQQ, http://web.qq.com/,

通过工具分析,可以知道,通过WEB登陆,会首先GET一个请求过去

http://check.ptlogin2.qq.com/check?uin=236773862&appid=1003903&r=0.14233942252344134,我们只详细分析下这一个请求,看看,这个请求到底携带了什么样的数据

请求头部这些内容,就是等会,模拟HTTP提交需要的,

这个GET请求返回ptui_checkVC('0','!W61','\x00\x00\x00\x00\x9b\x8f\xdb\xab');这样的字符串,其中第一个字符串,’0’代表不需要验证码,’!w61’这个数据,是等会登陆需要的,

第3个参数没用,

我输入密码登陆,监控到这样一个请求

http://ptlogin2.qq.com/login?u=236773862&p=C678AF49F29847C34BA8165EDE59C5A7&verifycode=quhw&webqq_type=10&remember_uin=1&login2qq=1&aid=1003903&u1=http%3A%2F%2Fweb.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=8-38-447467&mibao_css=m_webqq&t=3&g=1

这个不用多说了,接着用C#进行模拟就行了,其中分清哪些是不变的就行了

String loginUrl = "http://ptlogin2.qq.com/login?u=" + qq + "&p=" + md5pass + "&verifycode=" + verifyCode + "&webqq_type=10&remember_uin=1&login2qq=0&aid=1003903&u1=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=6-25-303994&mibao_css=m_webqq&t=1&g=1";

不用多说了吧, md5pass这个是密码加密后的一个参数

加密的方式,就是QQ号,密码的明文,还有就是验证码,如果没有验证码就是,’!w61’这个参数,至于如何加密的,其实也非常简单,腾讯的加密肯定在客户端加密然后传输的,找到相应的JS文件,然后改写成C#版本就行了,至于第三个参数,就是验证码或者是’!w61’了,

ptuiCB('0','0','http://web2.qq.com/loginproxy.html?login2qq=1&webqq_type=10','0','登录成功!', 'Zr');

登陆成功后,返回这样的一个格式,一旦登陆成功,我就可以拿到COOKie

有了COOKIE,可以取出PTWEBQQ,和Skey,因为接着还会有一个POST包过去

http://d.web2.qq.com/channel/login2

其中这个POST请求需要PTWEBQQ,我们构造一下,POST过去

String postData = String.Format("r=%7B%22status%22%3A%22online%22%2C%22ptwebqq%22%3A%22{0}%22%2C%22passwd_sig%22%3A%22%22%2C%22clientid%22%3A%22{1}%22%2C%22psessionid%22%3Anull%7D&clientid={2}&psessionid=null", this.ptwebqq, this.clientid, this.clientid);

String login3 = QQ.getHtml(channelLoginUrl, "post", postData);

其中clientid是个随机数,自己定义就行了,那么到此,登陆就完成了,我们看一下界面

1,心跳包

顾名思义,心跳包,就是维持一个长连接,让WEBQQ保持在线的一种机制,.这个心跳包非常简单

http://d.web2.qq.com/channel/poll2只需要每隔几秒,或者写一个死循环也可以,,

这个地址POST

这样一段数据,就可以了,其中必要的参数,在登陆的时候可以全部拿到,这里值得一说的是,当POST这个数据过去后,服务器会等大概30秒左右的时间,如果30秒,QQ没有收到任何信息,那么它会自动返回,如果有信息会携带信息返回

实际上,这个心跳包弄清楚后,后面基本就没难度了,自己完全可以写一个简单的QQ,,难道这就是所谓的长连接??

1,获得群和好友

      获得群和好友,然后模拟HTTP请求,就可以聊天了。。。这里简单的说

对这个地址POST,然后会返回一个JSON,自己解析吧,后面已经没有技术含量了,体力活了

1,实战

我记得腾讯有很多游戏。。。同样的方法,先写个简单的3366外挂,其实很简单,就是一个get请求过去,分数什么的自己写吧,,把外挂上传,其实盗个什么QQ号的,没一点技术含量,,

 

自己尝试了下,。。。在比如说

等等吧,盗来的QQ号,有什么用??呵呵,我个人都是拿来上传我的外挂,然后盗更多的号,其实研究WEBQQ或者PCQQ协议的人,都是为了打广告,我至今难于忘记,那个卖铁观音茶的广告,几乎每个人的群里都会有这么一个广告。。,不光是QQ.新浪微博刷粉也可以这样搞,本人精力有限,连写这篇文章,都是赶出来的,有兴趣的同事,可以找我要源码,或者一起研究都可以

BY gitdnn

漫谈WebQQ 协议的更多相关文章

  1. MingQQ v1.0高仿版开源了,使用WebQQ协议实现了QQ客户端基本的聊天功能...

    MingQQ v1.0高仿版开源了,使用WebQQ协议实现了QQ客户端基本的聊天功能... MingQQ目前支持的功能如下:1.支持普通方式登录.验证码方式登录.注销.保持在线.改变在线状态.2.支持 ...

  2. webqq协议分析之~~~~登陆

    最近好几个新项目积一起了,比较忙,所以博客迟迟未更新,还请各位见谅!下面来继续分析webqq协议,本章将说明如何实现登陆 1:输入QQ号和密码登陆,检测HTTP请求url如下,这是第一次登陆 http ...

  3. 用Qt写了一个qq客户端,采用webqq协议,发出来和大家分享一下---大神请无视

    首先做以下声明: 本程序基于腾讯公司的webqq协议开发,所有相关版权归腾讯公司所有.此程序只用于技术交流和学习,不得用于其他方面. ---开发者:雨后星辰,转载请注明出处:http://www.cn ...

  4. C# WebQQ协议群发机器人(一)

    原创性申明 本文地址 http://blog.csdn.net/zhujunxxxxx/article/details/38931287 转载的话请注明出处. 之前我也写过一篇使用python来实现的 ...

  5. webqq协议分析之~~~~验证是否需要验证码

    对于小黄鸡我想大家(喜欢在群里bb的人...)肯定一点都不陌生,那段时间大家在群里对小鸡是各种调戏啊,都有点不忍直视.那时我便想能不能自己也做个呢,后来想想还是算了吧,自己技术太渣渣,然后就不了了之. ...

  6. 漫谈TCPIP协议原理

    一.每次说道TCPIP协议,有能说会道者,总爱说三次握手,什么意思? 顾名思义,假设有两个机器A和B 1.当A发送给B一个包的时候,B接收到了,这个时候,B有两个选择,要么将包数据放入缓存,等待处理, ...

  7. C# WebQQ协议群发机器人(二)

    本文出处http://blog.csdn.net/zhujunxxxxx/ 如需转载请注明出处! 接着上一篇http://blog.csdn.net/zhujunxxxxx/article/detai ...

  8. 从新冠疫情出发,漫谈 Gossip 协议

    众所周知周知,疫情仍然在全球各地肆虐.据最新数据统计,截至北京时间 2020-05-28,全球累计确诊 5698703 例,累计死亡 352282 例,累计治愈 2415237 例. 从上面的统计数据 ...

  9. webqq协议请求交互过程

    1.http://my.oschina.net/ij2ee/blog/191692 2.http://www.qqxieyi.com/fenxi_show.asp?id=34

随机推荐

  1. Nginx的Web管理界面收集

    Nginx实在是太强大了!灰度发布.金丝雀发布.负载均衡就只需要简单的几行配置就可以实现,这些特性嗾使微软无法比拟的. 原来Nginx除了使用ngx_http_stub_status_module模块 ...

  2. android应用开发之View的大小计量单位(px、dpi、dp、dip、sp)

    http://blog.csdn.net/ljianhui/article/details/43601495?ref=myread 一.像素(px)与屏幕分辨率 1)px(Pixels ,像素):对应 ...

  3. 【Todo】C++类 & 通用面试题分析记录 & 最难的bug

    1. the most difficult bug u fixed and how u solved this problem.. 解决过很多疑难bug.最困难的分为两类.一类是并发.多线程类的,因为 ...

  4. 自动化运维工具Fabric - 密码管理(env.password and ssh key)

    在使用 Fabric 的过程中,如果大批量服务器处理的话,我们就需要针对配置主机的密码,每台主机的密码相同还好,不同的话,就需要针对不同的主机做配置了,以下有两种配置方式 注:本文主要参考官方文档 P ...

  5. 机器学习优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)

    SGD: 此处的SGD指mini-batch gradient descent,关于batch gradient descent, stochastic gradient descent, 以及 mi ...

  6. Linux下Tomcat VM參数改动

    不可行的方法 最初我直接改动catalina.sh, 将JAVA_OPTS变量加上了 -server -Xms1G -Xmx1G -XX:+UserG1GC 最初看起来没啥问题,可是当服务器运行几天后 ...

  7. Android锁屏或灭屏状态下,高速按两次音量下键实现抓拍功能(1.2Framework层使用startService形式实现)

        如前一篇博文所分析.我们能够使用广播的形式在高速按下两次音量下键的时候发出广播,以方便client进行捕捉. 既然有两种方式能够实现该Issue那么哪种方式是首选呢?     我个人推荐使用启 ...

  8. mysqldbcopy 数据库复制工具

    命令参考 mysqldbcopy --source=root:'xxxxxxx'@database s --destination=root:'^%xxxxxz'@databases orange:o ...

  9. 数据结构与算法之贪心算法 C++实现

    1.基本思路:从问题的某一个初始解触发逐步逼近给定的目标,以尽可能快的求得更好的解. 当达到算法中某一步不能再继续前进时.就停止算法,给出近似值.也就是说贪心算法并不从总体最优考虑,它所作出的选择仅仅 ...

  10. Arcgis Engine(ae)接口详解(2):featureClass查询

    //属性查询~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //IQueryFilter代表查询条件,QueryFilterClass代表只限于属性查询(就是没有空间查询) ...