分享自己|分享胡吉阳|分享Hackfan 注册 | 登陆
浏览模式: 标准 | 列表全部文章

小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代码
  1. <?php   
  2. date_default_timezone_set("Asia/Shanghai");   
  3.   
  4. class XiaoI   
  5. {   
  6.     //by Hackfan   
  7.     public $sid = '';   
  8.   
  9.     public function __construct($sid = false)   
  10.     {   
  11.         if(!$sid)   
  12.         {   
  13.             $this->join();   
  14.         }   
  15.         else  
  16.         {   
  17.             $this->sid = $sid;   
  18.         }   
  19.     }   
  20.     public function join()   
  21.     {   
  22.         $fp = fsockopen('202.109.73.87', 80);   
  23.         fwrite($fp'GET /engine/flashrobot2/webbot.js HTTP/1.1  
  24. Connection: Close  
  25. Host: 202.109.73.87  
  26.  
  27. ');   
  28.         $r = '';   
  29.         while(!feof($fp))   
  30.         {   
  31.             $r .= fgets($fp, 512);   
  32.         }   
  33.         fclose($fp);   
  34.         preg_match('!var __sessionId = "(\d+)";!',$r$match);   
  35.         $this->sid = $match[1];   
  36.   
  37.         $fp = fsockopen('202.109.73.87', 80);   
  38.         fwrite($fp'GET /engine/flashrobot2/send.js?SID='.$this->sid.'&USR='.$this->sid.'&CMD=JOIN&r= HTTP/1.1  
  39. Connection: Close  
  40. Host: 202.109.73.87  
  41.  
  42. ');   
  43.         fclose($fp);   
  44.   
  45.         $fpr = fsockopen('202.109.73.87', 80);   
  46.         fwrite($fpr'GET /engine/flashrobot2/recv.js?SID='.$this->sid.'&USR='.$this->sid.'&r= HTTP/1.1  
  47. Connection: Close  
  48. Host: 202.109.73.87  
  49.  
  50. ');   
  51.         fclose($fpr);   
  52.   
  53.     }   
  54.     public function chat($msg)   
  55.     {   
  56.         $fpr = fsockopen('202.109.73.87', 80);   
  57.         fwrite($fpr'GET /engine/flashrobot2/recv.js?SID='.$this->sid.'&USR='.$this->sid.'&r= HTTP/1.1  
  58. Connection: Close  
  59. Host: 202.109.73.87  
  60.  
  61. ');   
  62.         $fps = fsockopen('202.109.73.87', 80);   
  63.         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  
  64. Connection: Close  
  65. Host: 202.109.73.87  
  66.  
  67. ');   
  68.         fclose($fps);   
  69.   
  70.         $r = '';   
  71.         while(!feof($fpr))   
  72.         {   
  73.             $r .= fgets($fpr, 512);   
  74.         }   
  75.         fclose($fpr);   
  76.   
  77.         if(preg_match('!"MSG":"(.*?)"!'str_replace(array("\r""\n"), array(''), $r), $match))   
  78.         {   
  79.             return $match[1];   
  80.         }   
  81.         else  
  82.         {   
  83.             return false;   
  84.         }   
  85.     }   
  86. }   
  87. ?>  

具体运行代码如下:

PHP代码
  1. <?php   
  2. require('xiaoi.php');   
  3. $i = new XiaoI();   
  4. while(1)   
  5. {   
  6.     echo 'me: ';   
  7.     $s = trim(fgets(STDIN));   
  8.     $s = iconv('gb2312''utf-8'$s);   
  9.     echo 'xiaoi: '.$i->chat($s)."\n";   
  10. }  

运行效果如下:

大小: 38.77 K
尺寸: 430 x 363
浏览: 27 次
点击打开新窗口浏览全图

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

Tags: 小i, xiaoi, 接口

浏览器存在“误访”漏洞,泄露用户COOKIES![Hackfan原]

  最近一段时间查看Webserver的Log,总是能够发现一些奇怪的现象:莫名其妙的出现其他网站,甚至是xiaonei.com这样大网站的主机头:

LOG
  1. 124.115.220.98 hd28.xiaonei.com - [28/Nov/2008:14:51:21 +0800] "GET /photos/hd28/20080711/10/08/tiny_608n169.jpg HTTP/1.1" 404 345 "http://club.xiaonei.com/show_114_639146_1.html" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.1)"  

  显示主机头hd28.xiaonei.com,是校内用来存放用户头像的服务器。

  由于我的服务器不存在该图片,自然返回404错误。

  但是该HTTP请求也带来了用户的COOKIES信息,可以利用该COOKIES信息获得用户身份。

 

  而我在来路http://club.xiaonei.com/show_114_639146_1.html页面,只插入了以下代码:

XML/HTML代码
  1. <img src="http://www.hackfan.net/rg.jpg">  

 

  此图片存放在我的服务器www.hackfan.net上,做了Redirect处理,指向xiaonei.com的某个页面。

  通过大量的log观察,发现此现象为小概率事件,而且只发生在Windows NT 6.0的MSIE7.0下。该

 

  可以认为是Vista的IE7在连接调度的时候发生了致命的错误!

 

  黑客可以通过在大型网站插入跨站图片,来盗取用户COOKIES。本文章作者Hackfan,转载请注明。

Tags: ie7.0, vista, 浏览器漏洞, cookies, 误访

域名注册之路

  我第一个正式花钱注册的域名是msger.net,2003年12月17日。

  那几个月其实觊觎的是msger.com,时不时地会上万网来查询这个域名是否被人注册,每次看到“未注册”的提示心里总是美滋滋的。

  但是那件事情还是发生了,某一天,当我再次查询msger.com注册信息的时候,万网无情的告诉我:“您查询的域名已经被注册。”打击我还不忘礼貌。

  我手有些抖,这么好的一个域名就从我手边溜走。马上查询msger.net,未注册。当天我就注册了msger.net,注册期5年。

  可能是因为这次经历,使得我对域名注册态度激进起来。但是在hackfan.com上我仍然犯了错误。

  曾经通过国外某注册商,注册了包括chaoxiang.com、hackfan.com在内的很多域名,几个星期后,一封国外寄来的催款单告诉我,每个域名我需要支付60USD。简直是强钱,我当然不会支付。

  结果hackfan.com就被那家公司搞去了。最近发现hackfan.cn、hackfan.com.cn也被国内某些人士注册,这个我并不担心,我相信他们在到期后会还给我的^_^。

 

  说说最近从万网、容大转出域名到易名的故事。

 

  万网是国内最著名的域名注册商,因此从他那转出域名,还是比较方便的。首先填表,我要将两家公司域名、几个属于我个人的域名转出,于是我分别填写了三份表格,并配有两家公司营业执照复印件、法定代表人签名盖章、我的身份证复印件、我的签字。结果我名下的域名可以被转出,并且成功转出到易名,但是两家公司因“证件有效期过期”为由没有被受理,由于那两个域名的注册期快到了,因此我不得不在万网进行续费。

  最近我的hujiy.com、hujiy.net也要到期了,因此找到容大互联要求转出域名,对方居然说必须要续费一年才能转出。不过续费的价格只是68元/年,比Ename贵8元,因此忍气吞声一次,续了费。

  之所以将域名转入易名,理由有:

  • 注册费用便宜,国际域名60元/年,国内域名第一年1元/年,续费还有优惠。
  • 管理特别方便,续费、修改记录、停放,都支持批量操作。

  可以说,这两点就决定了我选择Ename。

Tags: 域名, 注册, 转出, 万网, 容大

关于PHP引用存在的小缺陷

首先测试如下代码:

PHP代码
  1. <?php   
  2.   
  3. error_reporting(E_ALL);   
  4.   
  5. echo $a;   
  6.   
  7. ?>  

输出:

PHP输出
  1. Notice: Undefined variable: a in E:\a.php on line 5  

解释:因为$a没有被初始化,可能会存在问题,因此PHP给了一个Notice错误。给Notice错误的原因是,提醒你正在使用一个未初始化的变量

 

然后我们看下面这段代码:

PHP代码
  1. <?php   
  2.   
  3. error_reporting(E_ALL);   
  4.   
  5. $b = $a;   
  6.   
  7. echo $b;   
  8.   
  9. ?>  

输出:

PHP输出
  1. Notice: Undefined variable: a in E:\a.php on line 5  

解释:第五行,$b=$a,因为$a没有被初始化但是却被程序读取,因此在读取的时候,PHP给出了Notice错误。但是这并不影响对$b的赋值,$b被赋予了null值。$a仍然未定义。

以下代码及输出验证了上面的分析:

PHP代码
  1. <?php      
  2.      
  3. error_reporting(E_ALL);      
  4.      
  5. $b = $a;   
  6. echo $a;   
  7.   
  8. var_dump($a);   
  9. var_dump($b);   
  10.      
  11. ?>  

输出:

PHP输出
  1. Notice: Undefined variable: a in E:\a.php on line 5
  2. Notice: Undefined variable: a in E:\a.php on line 6
  3. Notice: Undefined variable: a in E:\a.php on line 8
  4. NULL
  5. NULL

然后引用登场:

PHP代码
  1. <?php      
  2.      
  3. error_reporting(E_ALL);      
  4.      
  5. $b = &$a;   
  6. echo $a;   
  7.   
  8. var_dump($a);   
  9. var_dump($b);   
  10.      
  11. ?>  

输出:

PHP输出
  1. NULL
  2. NULL

疑问:为什么$a没有定义,却并不产生Notice错误?

 

把此现象作为BUG提交到PHP.NET:http://bugs.php.net/bug.php?id=43785

得到的回复:

[12 Jan 3:34pm UTC] tony2001@php.net

There is no notice so that you could pass variables by reference with no
need to declare them before.

Tags: php引用, 缺陷

笔记本卡吗?不要把责任推到双核上!

从去年年底开始,本人买了1年的笔记本开始出现如下症状:

  • 玩大型游戏、网络游戏,如CS、命令与征服·将军、QQ桌球等,每隔一段时间CPU占用率升至100%,机器非常卡,CS的FPS从99帧降至20帧,根本无法玩。
  • 安装操作系统,经常装到一半突然关机,从光盘安装关机的概率非常大,有一次装XP居然关机数十次。

通过Google、百度的帮助,我了解到以下可能性会引起上述全部或者部分症状:

  • 没有打双核补丁
  • 电源不稳定
  • 机器散热性不良

经过几个月的努力,我尝试了如下方法:

  • 打满补丁
  • 不使用集合插座,而是单独插在插座上,并且坚持不开大功率设备

但是问题始终如一,今天我好奇地拆开笔记本后,看到了如下场景:

大小: 165.34 K
尺寸: 500 x 376
浏览: 22 次
点击打开新窗口浏览全图

大小: 119.25 K
尺寸: 500 x 376
浏览: 26 次
点击打开新窗口浏览全图

然后我清洁了一下:

大小: 78 K
尺寸: 500 x 376
浏览: 10 次
点击打开新窗口浏览全图

问题解决了。

当你的笔记本电脑出现和我类似的症状,请看看你的散热器是否被灰尘覆盖了。

Tags: 打游戏卡, 死机, 突然关机, 笔记本, 双核补丁

Apache mod_deflate 配置须谨慎

  前一阵子发现通过Web从服务器下载大文件的时候,响应特别慢,但是小文件速度还可以。

  本来没放在心上,不过今天下载公司产品说明书又遇到这回事儿了,不得不重视起来,不然丢失潜在客户损失就大了。

  问题肯定出在Apache上,我翻阅了一下Apache的配置历史,发现启用了mod_deflate模块。

 

  mod_deflate在Web服务器层进行压缩控制,因此不需要通过修改程序代码就可以达到减小传输文件大小的功能。但是对于特别大的文件,在压缩的时候需要花费一定的时间,因此下载的人会在一段时间内无法得到响应。

  查看了Apache的配置:

 

Apache配置代码
  1. <ifmodule mod_deflate.c>  
  2.     DeflateCompressionLevel 9   
  3.     SetOutputFilter DEFLATE   
  4.     #DeflateFilterNote Input instream   
  5.     #DeflateFilterNote Output outstream   
  6.     #DeflateFilterNote Ratio ratio   
  7.     #LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate   
  8.     #CustomLog logs/deflate_log.log deflate   
  9. </ifmodule>  

 

修改为:

 

Apache配置代码
  1. <ifmodule mod_deflate.c>  
  2.     AddOutputFilterByType DEFLATE text/html text/plain text/css   
  3.     DeflateCompressionLevel 9   
  4.     SetOutputFilter DEFLATE   
  5.     #DeflateFilterNote Input instream   
  6.     #DeflateFilterNote Output outstream   
  7.     #DeflateFilterNote Ratio ratio   
  8.     #LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate   
  9.     #CustomLog logs/deflate_log.log deflate   
  10. </ifmodule>  

 

  问题解决

Tags: apache, 压缩, mod_deflate, deflate

快速识别手机质量的好坏

待机状态时,按*#06#,屏幕上会出现一个序列号,看第七个和第八个数。

然后对照下表

0,0  代表是原产公司生产的,是质量最好的手机(原装手机)

0,1  or  1,0代表是芬兰生产的,是非常好的手机

0,8  or  8,0代表是德国生产的,是好一点儿的手机

0,2  or  2,0代表是阿拉伯生产的,是很差的手机

1,3  代表是阿赛拜疆生产的,是非常非常差的手机

万网G邮箱试用-介绍、申请试用

  今天又一次接到一直很热情的万网王小姐的电话。

  她再一次的向我推荐了万网的G邮箱业务。之前她向我推荐过,我特意去了解了一下,但由于目前公司用的是网易免费邮箱,效果也挺好,因此没有考虑购买。

  以下是万网G邮箱的介绍:

中国万网企业邮箱
国际级双线机房 海外畅游南北互通
海外多点双向转发 传输加密收发可靠
唯一启用全球垃圾邮件爆发实时监控系统
专业企业邮箱运营经验 百万级企业用户的选择
“中国信息安全值得信赖的企业邮件系统品牌”唯一得主

产品特点:
•每个帐号默认为1G 具体大小可自由调整
2个帐号起卖
•免费开通邮件监控功能
•安全证书 确保您邮件的高度安全
•免费网络存储 可发送超大附件
•国际级双线机房 解决丢退信问题
•海外多点双向转发 传输加密收发可靠
•高效反垃圾防病毒
•空间自由定制 DIY灵活购买;示例:如果您需要16个帐号,可以按需购买16个帐号的邮箱;如要27个帐号就购买27个帐号的邮箱

 

  邮箱功能
  支持独立域名、POP3加密认证收信、SMTP加密认证发信
  Web界面普通用户功能
  邮件搜索、邮件收发、信件管理、签名管理、自动转发、自动回复、个人资料管理、密码设置、语音邮件、

  视频邮件、好友列表地址管理、分组列表地址管理、公共组地址列表、邮件过滤、空间卫士、页面风格设置、

  网络功能、Webmail日志查询、安全邮件
  Web界面邮箱管理员功能
  普通用户功能、邮件域管理、公共组地址管理、用户管理(添加、删除、查找)、邮件监控、定制空间限制、
  定制邮件数限制、定制邮件大小限制、空间、邮件数报警

 

 价格如下:

绿色G邮箱 DIY方式按需购买
总空间 E-mail
信箱数
单个邮箱
最大空间
价 格 积分数  
2G 2 2G 280元/年 840  
5G 5 5G 700元/年 2100  
10G 10 10G 1400元/年 4200  
20G 20 20G 2600元/年 7800  
50G 50 50G 6500元/年 19500  
80G 80 80G 9600元/年 28800  
100G 100 100G 12000元/年 36000  
200G 200 200G 22000元/年 66000  

  对于小公司来说,购买两个G邮箱足够使用了。

  我已经申请了试用,试用邮箱:mail@hackfan.net,请广大朋友包括垃圾邮件前来测试。

Tags: 万网, g邮箱, 试用

Records:1112