机器人php接口,小I机器人接口[PHP版本 08.12.7]

以前研究过小I的WebAPI,那个时候很简单,就是一个Http包完成说话、回答

但是现在的小I WebApi复杂了一些,网上也没有现成的资料,于是我着手自己开发。

通过抓包,发现小I WebApi通信原理如下:

以服务器202.109.73.87上机器人/engine/flashrobot2/为例:

1、首先调用/engine/flashrobot2/webbot.js,获得SID,下方以{{SID}}代替

2、调用/engine/flashrobot2/send.js?SID={{SID}}&USR={{SID}}&CMD=JOIN&r=

3、调用/engine/flashrobot2/recv.js?SID={{SID}}&USR={{SID}}&r=

以上完成登录,并且把广告也清除了,然后开始聊天:

4、第一步先调用/engine/flashrobot2/recv.js?SID={{SID}}&USR={{SID}}&r=,不要recv,也不要关闭此连接

5、调用/engine/flashrobot2/send.js?SID={{SID}}&USR={{SID}}&CMD=CHAT&SIG=You&MSG={{MESSAGE}}

其中{{MESSAGE}}为要发的内容,编码为utf-8

6、从刚才调用的recv.js的连接中,recv出内容,用正则表达式提取就OK。

PHP类如下:

PHP代码

date_default_timezone_set("Asia/Shanghai");

classXiaoI

{

//by Hackfan

public$sid='';

publicfunction__construct($sid= false)

{

if(!$sid)

{

$this->join();

}

else

{

$this->sid =$sid;

}

}

publicfunctionjoin()

{

$fp=fsockopen('202.109.73.87', 80);

fwrite($fp,'GET /engine/flashrobot2/webbot.js HTTP/1.1

Connection: Close

Host: 202.109.73.87

');

$r='';

while(!feof($fp))

{

$r.=fgets($fp, 512);

}

fclose($fp);

preg_match('!var __sessionId = "(/d+)";!',$r,$match);

$this->sid =$match[1];

$fp=fsockopen('202.109.73.87', 80);

fwrite($fp,'GET /engine/flashrobot2/send.js?SID='.$this->sid.'&USR='.$this->sid.'&CMD=JOIN&r= HTTP/1.1

Connection: Close

Host: 202.109.73.87

');

fclose($fp);

$fpr=fsockopen('202.109.73.87', 80);

fwrite($fpr,'GET /engine/flashrobot2/recv.js?SID='.$this->sid.'&USR='.$this->sid.'&r= HTTP/1.1

Connection: Close

Host: 202.109.73.87

');

fclose($fpr);

}

publicfunctionchat($msg)

{

$fpr=fsockopen('202.109.73.87', 80);

fwrite($fpr,'GET /engine/flashrobot2/recv.js?SID='.$this->sid.'&USR='.$this->sid.'&r= HTTP/1.1

Connection: Close

Host: 202.109.73.87

');

$fps=fsockopen('202.109.73.87', 80);

fwrite($fps,'GET /engine/flashrobot2/send.js?SID='.$this->sid.'&USR='.$this->sid.'&CMD=CHAT&SIG=You&MSG='.urlencode($msg).'&FTN=&FTS=&FTC=&r= HTTP/1.1

Connection: Close

Host: 202.109.73.87

');

fclose($fps);

$r='';

while(!feof($fpr))

{

$r.=fgets($fpr, 512);

}

fclose($fpr);

if(preg_match('!"MSG":"(.*?)"!',str_replace(array("/r","/n"),array(''),$r),$match))

{

return$match[1];

}

else

{

returnfalse;

}

}

}

?>

具体运行代码如下:

PHP代码

require('xiaoi.php');

$i=newXiaoI();

while(1)

{

echo'me: ';

$s= trim(fgets(STDIN));

$s= iconv('gb2312','utf-8',$s);

echo'xiaoi: '.$i->chat($s)."/n";

}

运行效果如下:

0818b9ca8b590ca3270a3433284dd417.png

作者:Hackfan,转载请保留,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值