发新话题
打印

[ZT]打造24小时在线QQ

[ZT]打造24小时在线QQ

hackjam 提供 2010-12-7 18:05


[-]需要工具:Opera浏览器,截取数据包工具(我用的自己做的网络机器狗,在论坛可以搜到)一个,一个新浪云计算平台账号
[-]新浪云计算平台账号注册地址:http://sae.sina.com.cn/ (能注册体验账户)
[-]实现原理:利用云计算平台的定时任务。

如果创建应用请看视频教学:http://xhprof.tools.sinaapp.com/demo_beta/

如果你已经会创建应用,那么请看下面:

打开Opera浏览器,打开地址:http://q32.3g.qq.com/  (该地址为3GQQ的地址)
打开数据包拦截工具,拦截opera.exe进程。
2.JPG




然后在opera里登陆3gqq:
102.jpg





截取到POST数据包:
4.JPG





我们需要的是第二个数据包(POST的内容)
我的为:sid=YRr%2BoQN7y4zJ1MkXUX4bTA%3D%3D&qq=10000&pwd=123&toQQchat=true&q_from=&modifySKey=0&loginType=1&aid=nLoginHandle

复制出来,以后会用到。

然后打开云计算平台软件,登陆,创建一个版本,版本号为:1
创建一个php,因为该云计算平台是基于php的。

1.JPG





右键->编辑
然后编辑这个php,添加代码:





  1. <?php

  2. $f = new SaeFetchurl();

  3. $f->setMethod('POST');

  4. $f->setPostData("xxxxxxxxxxxxxxxx");

  5. $ret = $f->fetch('http://pt.3g.qq.com/handleLogin?r=506972561');

  6. return "ok";

  7. ?>
复制代码

xxxxxxxxxxxxxxxx为刚才提取的POST内容,修改后就跟下面差不多





  1. <?php

  2. $f = new SaeFetchurl();

  3. $f->setMethod('POST');

  4. $f->setPostData("sid=YRr%1BoQN7y4zJOMkXUX4bTA%3D%3D&qq=10000&pwd=123&toQQchat=true&q_from=&modifySKey=0&loginType=1&aid=nLoginHandle");

  5. $ret = $f->fetch('http://pt.3g.qq.com/handleLogin?r=506972561');

  6. return "ok";

  7. ?>
复制代码

然后点上传,ok,现在添加定时任务

右键->编辑config.yaml
5.jpg





在最后面添加代码:
cron:
    - description: cron index
      url: qq.php
      schedule: every 5 mins


本代码的意思就是隔5分钟执行一次qq.php,也就是登陆QQ的代码,3GQQ好像登陆后会5分钟都在线,所以我设为5分钟登陆一次
保存,上传。OK,搞定了!你有一个24小时在线的QQ了!
你想取消的时候怎么办?你可以再次编辑config.yaml,把上述代码删除即可。

ps:定时任务
SAE平台目前提供用户定制cron服务,用户通过增加项目配置文件config.yaml里的cron字段,来定制自己的cron服务,cron服务支持次数、时区、访问权限等功能支持,并且运行在高可靠SLA的分布式架构上,保证用户的定时服务可靠准确。


技术详解:
http://apidoc.sinaapp.com/sae/SaeFetchurl.html

SAE数据抓取class


在SAE下不能直接使用file_get_contents或者curl抓取外部数据.
而SaeFetchurl允许你抓取外部数据.支持的协议为http/https.

默认超时时间
连接超时: 5秒
发送数据超时: 30秒
接收数据超时: 40秒
抓取页面
$f = new SaeFetchurl();
$content = $f->fetch('http://sina.cn');


发起POST请求
$f = new SaeFetchurl();
$f->setMethod('post');
$f->setPostData( array('name'=> 'easychen' , 'email' => '[email protected]' , 'file' => '文件的二进制内容') );
$ret = $f->fetch('http://photo.sinaapp.com/save.php');

//抓取失败时输出错误码和错误信息
if ($ret === false)
         var_dump($f->errno(), $f->errmsg());

TOP

发新话题