凤凰山笔记

just a diary


  • 首页

  • 归档

  • 标签
凤凰山笔记

小i机器人微信版(最新源码,突破403限制)

发表于 2013-01-17 | 分类于 代码 , 技术宅

这个依然是文字版的,而且不支持语音,是通过抓包分析小i机器人wap版的获取。

可以通过扫描下面的二维码或者直接添加微信号xiaoibot进行关注思密达

但是最近小i wap版的demo可能发现有人盗用了,所以把“机器人”封了,如果用之前的方法,会出现403 forbidden的错误,所以我又重新弄了一下,加上了一些浏览器信息,这样就不会封了~

之前不想公布来着,但是没有但是……共享才是王道,大家共同进步。

上 代码:

<div style="background:#fdfdfd;color:black;"><u>JavaScript+PHP语言</u>: </div>
<div class="source" style="font-family: '[object HTMLOptionElement]', Consolas, 'Lucida Console', 'Courier New'; color: rgb(246, 243, 232); background-color: rgb(36, 36, 36);"><span style="color: rgb(229, 120, 109);">&lt;?php</span> 

/
 
作者:Kaedeen  
来源:http://www.kaedeen.com/  
日期:2013.1.7  
修改:2013.1.15 14号被封掉,错误是403,特此修改

/

//define your token
define("TOKEN", "kaede");
$wxObj = new weixinCallbackApi();
//$wxObj->valid(); //第一次验证时使用
$wxObj->responseMsg();

class weixinCallbackApi
{
   public function valid()
   {
       $echoStr = $_GET["echostr"];

       //valid signature , option
       if($this->checkSignature()){
           echo $echoStr;
           exit;
       }
   }

   public function responseMsg()
   {
       //get post data, May be due to the different environments
       $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

         //extract post data
       if (!empty($postStr)){
               
                 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
               $fromUsername = $postObj->FromUserName;
               $toUsername = $postObj->ToUserName;
               $keyword = trim($postObj->Content);
               $time = time();
               $textTpl = "<xml>
                           <ToUserName><![CDATA[%s]]></ToUserName>
                           <FromUserName><![CDATA[%s]]></FromUserName>
                           <CreateTime>%s</CreateTime>
                           <MsgType><![CDATA[%s]]></MsgType>
                           <Content><![CDATA[%s]]></Content>
                           <FuncFlag>0</FuncFlag>
                           </xml>";    
               
               if(!empty( $keyword ))
               {
                     $msgType = "text";
                   $contentStr = "";
                   $picnews = "";
                   
                   //新关注我的用户
                   if($keyword=='Hello2BizUser')
                   {
                       $contentStr=$this->welcome($toUsername);
                   }
                   
                   
                   $contentStr    = $this->get_wap_xiaoi($keyword);
                   
                   $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                   
                   echo $resultStr;
                   
               }else{
                   echo "Input something…";
               }

       }else {
           echo "";
           exit;
       }
   }
       
   private function checkSignature()
   {
       $signature = $_GET["signature"];
       $timestamp = $_GET["timestamp"];
       $nonce = $_GET["nonce"];    
               
       $token = TOKEN;
       $tmpArr = array($token, $timestamp, $nonce);
       sort($tmpArr);
       $tmpStr = implode( $tmpArr );
       $tmpStr = sha1( $tmpStr );
       
       if( $tmpStr == $signature ){
           return true;
       }else{
           return false;
       }
   }
   
   //调用小i机器人wap版
   public function get_wap_xiaoi($key){
   
    $post_data =
       array(
               'requestContent='.$key,
       );

       $post_data = implode('&',$post_data);
       
       /**old method
       $url='http://nlp.xiaoi.com/robot/demo/wap/wap-demo.action&#39;;
       
       $ch = curl_init();
       curl_setopt($ch, CURLOPT_POST, 1);
       curl_setopt($ch, CURLOPT_URL,$url);
               curl_setopt($ch,CURLOPT_USERAGENT,"Opera/9.60");
       curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
       ob_start();
       curl_exec($ch);
       $result = ob_get_contents() ;
       ob_end_clean();
       
       /
       $url="http://nlp.xiaoi.com/robot/demo/wap/&quot;;
       $ch = curl_init();  
       curl_setopt($ch, CURLOPT_URL, $url);  
       curl_setopt($ch, CURLOPT_HEADER, 1);  
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
       $content = curl_exec($ch);  
       curl_close($ch);  

       //echo $content;

       list($header, $body) = explode("rnrn", $content);  
       preg_match("/set-cookie:([^rn]*)/i", $header, $matches);  
         
       $cookie = $matches[1];  

       $ch = curl_init( );  
       curl_setopt( $ch, CURLOPT_REFERER, "http://nlp.xiaoi.com/robot/demo/wap/&quot; );  
       curl_setopt( $ch, CURLOPT_HEADER, true );  
       curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );  
       curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" );  
       curl_setopt( $ch, CURLOPT_URL, "http://nlp.xiaoi.com/robot/demo/wap/wap-demo.action&quot; );  
       curl_setopt( $ch, CURLOPT_POST, true );  
       curl_setopt( $ch, CURLOPT_POSTFIELDS, $post_data );
       curl_setopt($ch, CURLOPT_COOKIE, $cookie);
       $content = curl_exec($ch);  
       curl_close($ch);  
       
       sae_log($content);
       
       $preg = '/</span>(.*)</p>/iUs';
       preg_match_all($preg,$content,$match);
       $response_msg=$match[0][0];
       $preg = "/</?[^>]+>/i";
       $response_msg=preg_replace($preg,'',$response_msg);
       if("hello,how are you"==$response_msg||"how do you do"==$response_msg)
       {
           $response_msg="小i机器人欢迎您,作者主页地址:www.kaedeen.com。小i机器人不断学习中,欢迎各种调戏…/:,@-D";//欢迎语
       }
       $response_msg=trim($response_msg);
       return $response_msg;
   }
   
   //问候语
   public function welcome($toUsername) {
       if($toUsername=="gh_48776be7ef17"){//微信原始id
           return  "小i机器人欢迎您,作者主页地址:www.kaedeen.com。小i机器人不断学习中,欢迎各种调戏…/:,@-D";//欢迎语
       }
   }
   
}

//sae打日志封装函数
function sae_log($msg)
{
   sae_set_display_errors(false);//关闭信息输出
   if (is_array($msg))
   {
   $msg = implode(",", $msg);
   }
   sae_debug("[BEGIN]".$msg."[END]");//记录日志
   sae_set_display_errors(true);//记录日志后再打开信息输出,否则会阻止正常的错误信息的显示
}

   
?>

凤凰山笔记

有三宝

发表于 2013-01-17 | 分类于 博客

昨天把很多静态资源都改到了SAE二级域名下,现在进进出出是不是比以前爽多了呢?

快腊八了,又老了一岁啊……

 

以下资源是由leyeang收集整理的:

高帅富有三宝 木耳 跑车 和名表
黑木耳有三宝 美瞳 备胎 黑丝脚
穷矮挫有三宝 AV 手纸 射得早
女神有三宝 干嘛 呵呵 去洗澡
宅男有三宝 Dota 基友 破电脑
女屌丝有三宝 虎背 熊腰 眼睛小
女屌丝还有三宝 饼脸 花痴 卖萌照
男屌丝有三宝 撸管 备胎 跪舔屌
男屌丝还有三宝 给跪 吓尿 腕力好
备胎有三宝 人好 随叫 支付宝
丑男有三宝 匡威 刘海 45度角
腐女有三宝 黄瓜 茄子 电动屌
腐女还有三宝 星座 动漫 爱基佬
政府有三宝 和谐 跨省 查水表
周结巴有三宝 哎呦 不错 这个吊
愤愤有三宝 美军 内涵 退灭保
重庆有三宝 打黑 红歌 细软跑
外交部有三宝 抗议 警告 中国好
姐姐有三宝 干净 省钱 对我好
萝莉有三宝 轻音 柔体 易推倒
御姐有三宝 喝酒 洗澡 吃嫩草
黄教主有三宝 angle 内增 闹太套
少将有三宝 爷爷 挖鼻 书法好
大姨妈有三宝 温水 药片 护舒宝
四娘有三宝 韩少 豪宅 45°角
老板有三宝 有房 有车 秘书好

胖纸有三宝 冬暖 夏凉 鸡鸡小
瘦子有三宝 屌大 耐热 吃得少
贫乳有三宝 身轻 省布 不易跌倒
大胸有三宝 有沟 勾人 手感好
正太有三宝 天真 可爱 皮肤好
女王有三宝 木马 皮鞭 拉住燎
豆瓣有三宝 掐架 直播 性骚扰
贴吧有三宝 爆吧 找跨 五毛咬
微博有三宝 明星 爆料 粉丝好
猫扑有三宝 流氓 五毛 奶茶妹妹好
人人有三宝 分享 励志 不顶不是中国佬

凤凰山笔记

博客总算能打开了……

发表于 2013-01-16 | 分类于 啰B嗦

以前一直用的是自助绑定域名,也就通过新浪自己的海外代理连接SAE重定向域名,巨费流量而且访问效果很差,甚至有时会被GFW reset成502返回……

然后前几天就一直也没打开,那个叫蛋疼菊紧啊

于是现在暂时用个5G的外国免费空间做个反向代理吧,也比较慢,不过勉强可以打开了。最近也没空考虑买空间备案的事啊,领导今天又催我了…

再说说说自己最近受得教训。

由于盗用了鲁哥的山杏,以及平时PV过高,被果断加了黑名单,于是马上积极承认和改正了错误并保证以后不犯,总算平息了一场风波。

前几天抓包弄得xiaoi机器人,由于红色石头放出来代码,几个群的哥们马上启用,结果没几天就被小i官方封掉了,报的都是403 forbidden错误……我连夜那个修改啊,终于早上能用了。虽然小i比较垃圾,但是本丝也不告诉你怎么改,呵呵。

不得不说免费共享在中国是完全行不通的。外国人喜欢开源,那是开发的人真心喜欢,很少有功利性质。加上外国人也赞赏这种行为,所以人家paypal链接总是有人点。中国人不一样,好,开源了是吧。要么直接拿走,要么留下邮箱索要,连个AD都不点……你挂的支付宝链接更没人点!

说到最后其实我也是个可耻的蝗虫……

不吐槽,洗洗睡

 

凤凰山笔记

安得广厦千万间

发表于 2013-01-09 | 分类于 博客 , 啰B嗦 , 感悟

住单身宿舍也有不好的地方,就是经常有人检查卫生,看看你叠没叠被子……

按照朋友的看法,搬进宿舍我赚了,因为可以住很长一段时间。据说那些住着公司统一租的房子的同事们,年后也要赶出去一些了,只留下老员工和领导,到时候大家一起无家可归吧。

想想明年就要开始到处萨摩房子打听房价了,加上工资水平有限,压力总是要有的。

偶然听到黑撒的时髦的房奴,里面有句“安得广厦千万间 ,天下寒士俱欢颜”,由陕西方言版的Hip-Hop唱的,很有感觉。

这也是杜甫代表作品〖茅屋为秋风所破歌〗里面的一句.

杜甫生于770年忙于2012年,但是我们也很忙。

其实杜甫和我们一样,忙的是最普通的“生计”。看看他的诗就知道了。

〖茅屋为秋风所破歌〗
作者:杜甫

八月秋高风怒号,卷我屋上三重茅。茅飞度江洒江郊,
高者挂罥长林梢,下者飘转沉塘坳。南村群童欺我老无力,
忍能对面为盗贼,公然抱茅入竹去。唇焦口燥呼不得,
归来倚杖自叹息。俄顷风定云墨色,秋天漠漠向昏黑。
布衾多年冷似铁,骄儿恶卧踏里裂。床床屋漏无干处,
雨脚如麻未断绝。自经丧乱少睡眠,长夜沾湿何由彻。
【安得广厦千万间,大庇天下寒士俱欢颜,风雨不动安如山。】
呜呼何时眼前突兀见此屋,吾庐独破受冻死亦足。

 

 

凤凰山笔记

小i机器人微信版(已公布源码 )

发表于 2013-01-08 | 分类于 代码 , 啰B嗦

先说明一下,这个是文字版的不支持语音,官方有语音版的。

最近比较忙,但是做公司的东西总感觉没意思,就想抽空搞搞自己的东东。于是就有了这个小i机器人,这种权当是思维娱乐了,谁叫美剧冬歇了呢,不过最近一些美剧已经开始更新啦。哈哈

可以通过扫描下面的二维码或者直接添加微信号xiaoibot进行关注哈~

关于源码:

其实很简单,我是抓包分析小i机器人wap版然后用正则表达式处理了一下,原理和之前我博客微信一样,博客微信的源码已经公布了, Kaedeen博客公众微信源码。

源码已经被红色石头公布了,我也不藏着掖着了,大家可以帮我改改,有好意见要告诉我哦~

     <div style="background:#fdfdfd;color:black;"><u>HTML+PHP语言</u>: </div>
<div class="source" style="font-family: '[object HTMLOptionElement]', Consolas, 'Lucida Console', 'Courier New'; color: rgb(246, 243, 232); background-color: rgb(36, 36, 36);"><span style="color: rgb(229, 120, 109);">&lt;?php</span> 

/
 
作者:Kaedeen  
来源:http://www.kaedeen.com/  
日期:2013.1.7  
*  
/

//define your token
define("TOKEN", "kaede");
$wxObj = new weixinCallbackApi();
//$wxObj->valid(); //第一次验证时使用
$wxObj->responseMsg();

class weixinCallbackApi
{
   public function valid()
   {
       $echoStr = $_GET["echostr"];

       //valid signature , option
       if($this->checkSignature()){
           echo $echoStr;
           exit;
       }
   }

   public function responseMsg()
   {
       //get post data, May be due to the different environments
       $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

         //extract post data
       if (!empty($postStr)){
               
                 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
               $fromUsername = $postObj->FromUserName;
               $toUsername = $postObj->ToUserName;
               $keyword = trim($postObj->Content);
               $time = time();
               $textTpl = "<xml>
                           <ToUserName><![CDATA[%s]]></ToUserName>
                           <FromUserName><![CDATA[%s]]></FromUserName>
                           <CreateTime>%s</CreateTime>
                           <MsgType><![CDATA[%s]]></MsgType>
                           <Content><![CDATA[%s]]></Content>
                           <FuncFlag>0</FuncFlag>
                           </xml>";    
               
               if(!empty( $keyword ))
               {
                     $msgType = "text";
                   $contentStr = "";
                   $picnews = "";
                   
                   //新关注我的用户
                   if($keyword=='Hello2BizUser')
                   {
                       $contentStr=$this->welcome($toUsername);
                   }
                   
                   $contentStr    = $this->get_wap_xiaoi($keyword);
                   
                   $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                   
                   echo $resultStr;
                   
               }else{
                   echo "Input something…";
               }

       }else {
           echo "";
           exit;
       }
   }
       
   private function checkSignature()
   {
       $signature = $_GET["signature"];
       $timestamp = $_GET["timestamp"];
       $nonce = $_GET["nonce"];    
               
       $token = TOKEN;
       $tmpArr = array($token, $timestamp, $nonce);
       sort($tmpArr);
       $tmpStr = implode( $tmpArr );
       $tmpStr = sha1( $tmpStr );
       
       if( $tmpStr == $signature ){
           return true;
       }else{
           return false;
       }
   }
   
   //调用小i机器人wap版
   public function get_wap_xiaoi($key){
   
    $post_data =
       array(
               'requestContent='.$key,
       );

       $post_data = implode('&',$post_data);

       $url='http://nlp.xiaoi.com/robot/demo/wap/wap-demo.action&#39;;

       $ch = curl_init();
       curl_setopt($ch, CURLOPT_POST, 1);
       curl_setopt($ch, CURLOPT_URL,$url);
       curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
       ob_start();
       curl_exec($ch);
       $result = ob_get_contents() ;
       ob_end_clean();
       
       $preg = '/</span>(.*)</p>/iUs';
       preg_match_all($preg,$result,$match);
       $response_msg=$match[0][0];
       $preg = "/</?[^>]+>/i";
       $response_msg=preg_replace($preg,'',$response_msg);
       if("hello,how are you"==$response_msg||"how do you do"==$response_msg)
       {
           $response_msg="小i机器人欢迎您,作者主页地址:www.kaedeen.com。小i机器人不断学习中,欢迎各种调戏…/:,@-D";//欢迎语
       }
       $response_msg=trim($response_msg);
       return $response_msg;
   }
   
   //问候语
   public function welcome($toUsername) {
       if($toUsername=="gh_48776be7ef17"){//微信原始id
           return  "小i机器人欢迎您,作者主页地址:www.kaedeen.com。小i机器人不断学习中,欢迎各种调戏…/:,@-D";//欢迎语
       }
   }
   
}

//sae打日志封装函数
function sae_log($msg)
{
   sae_set_display_errors(false);//关闭信息输出
   if (is_array($msg))
   {
   $msg = implode(",", $msg);
   }
   sae_debug("[kaedeen_begin]".$msg."[kaedeen_begin]");//记录日志
   sae_set_display_errors(true);//记录日志后再打开信息输出,否则会阻止正常的错误信息的显示
}

   
?>

凤凰山笔记

最近好忙啊

发表于 2013-01-06 | 分类于 感悟

过节回来还没睡过安稳觉,总是半夜醒几次…可能是刚刚搬进单身宿舍的原因,也可能是没适应新室友的小呼噜。

春节前的工作竟然事先被领导排满了,很是郁闷~昨天领导过来问话,说搞得怎么样了。算上服务器挂了快一天,那时候我才弄了一天啊,能出什么成绩。我呜咽了句“这几天,这几…”,领导颇为生气,马上指示道:“什么这几天这几天的,工作要抓住重点,明天早上给我答复!”。昨天的我很郁闷,加班到办公室没人,然后匆匆跑回宿舍又忙到了凌晨。今天早上去找领导说:“前台差不多了,后台逻辑还要弄弄”。领导高兴的说:“这不是工作量很小嘛…呵…”

公司天天说斗志+方法论,于是我得到了一个结论:

斗志+方法论=码农+房奴
前一阵想好的采集站的事情只能无限期搁置了。想做一个这样的站点,会收集自己感兴趣的内容,比如一些IT新闻,还有最新美剧的下载链接、剧集介绍什么的。呵呵,不过今天发现ghostry电影订阅已经走在了我前面了。

过年回家的朋友们,推荐个帖子,也是从构思特瑞那里知道的:
怎么在12306上选择上中下卧铺?本人特发扫盲帖,简单四步搞定
要学习的东西还很多…

1…222324…27
cloudroc

cloudroc

某种原因留言关闭,如有问题请微信发给我

158 日志
33 分类
115 标签
RSS
GitHub 知乎
Links
  • 开发者头条
  • 网址导航
  • 少侠请留步
  • ghostry
  • SuperMan
  • jack
  • 惶心
© 2013 - 2018 cloudroc
由 Hexo 强力驱动
Hosted by Coding Pages