实现基本QQ功能的PHP类:QQ机器人_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

实现基本QQ功能的PHP类:QQ机器人

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:机器人功能基本实现
黑客防线网安网讯:  1、研究说明    Tencent在tqq.tencent.com的8000有一个使用HTTP的QQ接口,通过这个接口,可以进行一些基本的操作,如:登陆、登出、改变登陆状态(上线、忙碌、离线、隐身)、添加删除...
  1、研究说明
  
  Tencent在tqq.tencent.com的8000有一个使用HTTP的QQ接口通过这个接口可以进行一些基本的操作,如:登陆、登出、改变登陆状态(上线、忙碌、离线、隐身)、添加删除好友、查看好友信息、发送验证信息(接受被加为好友、申请加对方为好友、拒绝被加为好友)、收发用户消息、系统信息
  
  目前我研究的是1.1版本的HTTPQQ协议,研究是微程在的成果上进行的,不敢说有什么超越,只不过更为详细和准确
  
  2、接口说明:
  
  接口位置:tqq.tencent.com:8000
  
  通信协议:HTTP
  
  数据传输方法:POST
  
  HTTP请求格式:
  
  POSTHTTP/1.1
  
  Host:tqq.tencent.com:8000
  
  Content-Type:text/plain;charset=UTF-8
  
  Content-length:长度
  
  Connection:close
  
  数据
  
  其中长度为数据的长度,数据的格式:
  
  VER=1.1&CMD=命令&SEQ=标记&UIN=QQ号&....
  
  以上4个参数是每个请求都必有的。其中,VER表示协议的版本,目前为1.1,据说1.2已经出来了,这个乱写的话,服务器返回NULL;CMD为操作的指令,有Login、List、Query_Stat、GetInfo、AddToList、Ack_AddToList、DelFromList、Change_Stat、GetMsgEx、CLTMSG、Logout;SEQ为当前请求的标记,防止重复发送,可以用当前时间,也可以用随机数;UIN是当前执行操作的QQ号。不过不同的CMD还需要不同的参数,下面我就公布我的研究成果。
  
  3、研究方法:
  
  我对目前网上的资料不够满意,就自己写程序,发送多条相同CMD不同参数的请求,根据服务器的返回,来做判断。感兴趣的朋友可以参考一下,此处可以跳过。
  
  下面我公布我探测的代码(PHP):
  
  <?
  
  $uin="QQ号";
  
  $pwd=md5("QQ密码");
  
  //登陆测试
  
  $poststring[]="VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=1&LC=9326B87B234E7235";
  
  //注意:登陆测试不能同时进行,必须等到服务器认为QQ断开了,才能够测试,不然结果不可信
  
  /*******
  
  $poststring[]="VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=0&LC=9326B87B234E7235";
  
  $poststring[]="VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=1&LC=9326B87B234E7235";
  
  $poststring[]="VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=2&LC=9326B87B234E7235";
  
  $poststring[]="VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=3&LC=9326B87B234E7235";
  
  $poststring[]="VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M6=1&LC=9326B87B234E7235";
  
  $poststring[]="VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M6=1&LC=1223423545756679";
  
  *******/
  
  //得到好友列表
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin;
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0";
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160";
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=0";
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=".rand(1,10);
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=0";
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0";
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0";
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
  
  $poststring[]="VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=106814";
  
  //得到在线列表
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin;
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0";
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160";
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=0";
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=".rand(1,10);
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=0";
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0";
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0";
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
  
  $poststring[]="VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=106814";
  
  //查看好友信息
  
  $poststring[]="VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=0&UN=106814";
  
  $poststring[]="VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=1&UN=106814";
  
  $poststring[]="VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=2&UN=106814";
  
  $poststring[]="VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=3&UN=106814";
  
  $poststring[]="VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=4&UN=106814";
  
  $poststring[]="VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=5&UN=106814";
  
  //增加好友
  
  $poststring[]="VER=1.1&CMD=AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814";
  
  //发送验证
  
  $poststring[]="VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=0&RS=TEST";
  
  $poststring[]="VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=1&RS=TEST";
  
  $poststring[]="VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=2&RS=TEST";
  
  $poststring[]="VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=3&RS=TEST";
  
  $poststring[]="VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=4&RS=TEST";
  
  $poststring[]="VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=5&RS=TEST";
  
  //删除好友
  
  $poststring[]="VER=1.1&CMD=DelFromList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814";
  
  //改变状态
  
  for($i=0;$i<=60;$i=$i+5)
  
  {
  
  $poststring[]="VER=1.1&CMD=Change_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&ST=".$i;
  
  }
  
  //获得消息
  
  $poststring[]="VER=1.1&CMD=GetMsgEx&SEQ=".rand(1000,9000)."&UIN=".$uin."";
  
  //发送消息
  
  $poststring[]="VER=1.1&CMD=CLTMSG&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&MG=TEST";
  
  //登出
  
  $poststring[]="VER=1.1&CMD=Logout&SEQ=".rand(1000,9000)."&UIN=".$uin."";
  
  $file=fopen("p.txt","w");
  
  foreach($poststringas$k=>$v)
  
  {
  
  ss_timing_start();
  
  $fp=fsockopen("tqq.tencent.com","8000",$errno,$errstr,$timeout=10);
  
  if(!$fp){
  
  //errortellus
  
  $content=$k.chr(13).chr(10)."ERROR:$errstr($errno)";
  
  }else{
  
  //sendtheserverrequest
  
  fputs($fp,"POSTHTTP/1.1");
  
  //fputs($fp,"Host:$host");
  
  //fputs($fp,"Content-type:application/x-www-form-urlencoded");
  
  fputs($fp,"Content-length:".strlen($v)."");
  
  fputs($fp,"Connection:close");
  
  fputs($fp,$v."");
  
  //loopthroughtheresponsefromtheserver
  
  $res="";
  
  while(!feof($fp)){
  
  $res.=fgets($fp,4096);
  
  }
  
  //closefp-wearedonewithit
  
  fclose($fp);
  
  $content=$v.chr(13).chr(10).$res;
  
  }
  
  ss_timing_stop();
  
  $content.=chr(13).chr(10)."Time:".ss_timing_current().chr(13).chr(10)."--------------------------------------".chr(13).chr(10);
  
  fputs($file,$content);
  
  }
  
  fclose($file);
  
  ?>
  
  functionss_timing_start($name="default"){
  
  global$ss_timing_start_times;
  
  $ss_timing_start_times[$name]=explode("",microtime());
  
  }
  
  functionss_timing_stop($name="default"){
  
  global$ss_timing_stop_times;
  
  $ss_timing_stop_times[$name]=explode("",microtime());
  
  }
  
  functionss_timing_current($name="default"){
  
  global$ss_timing_start_times,$ss_timing_stop_times;
  
  if(!isset($ss_timing_start_times[$name])){
  
  return0;
  
  }
  
  if(!isset($ss_timing_stop_times[$name])){
  
  $stop_time=explode("",microtime());
  
  }
  
  else{
  
  $stop_time=$ss_timing_stop_times[$name];
  
  }
  
  $current=$stop_time[1]-$ss_timing_start_times[$name][1];
  
  $current+=$stop_time[0]-$ss_timing_start_times[$name][0];
  
  return$current;
  
  }
  
  ?>
  
  
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17635-1.html
网站维护教程更新时间:2012-09-21 05:22:46  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer