手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

飞信Fetion

最近,飞信好象有了新的更新。在这次更新的基础上,原来所有的API好象都不能用了。估计那些做OPen source的朋友们又不得不去研究URL和抓包处理调试了。
飞信确实有点方便,对于我来说飞信有几个作用

1、服务器定时检测(具体内容可以搜索回忆未来张宴的博客,用某段代码定期检查某个进程,如果发现不正常,通过API发短信通知)
2、SPAM报警(对于垃圾信息、恶意评论等报警:如果评论在一小时内激增,那肯定中招,或者评论中出现某些不良字符,短信通知)
3、好友联系(对于论坛管理员来说,召开管理人员大会,用这个工具,发短信那是相当方便)

其实还有更多创意,HOHO,在这里放上飞信的广告。
我为您提供了创意,也希望您能为我留下一点足迹。。。

呵呵

Tags: 飞信, fetion, api

关于neatpic

看了一下搜索记录,很多朋友到我的勃客上来,都选择了搜索neatpic目录直读版。
这个程序大约在06年左右就没有更新了。
毕竟,neatpic只是一个文件,可做的东西非常少,而且当初是在PHP4下面编写的程序,很多PHP5的高级特性也没有用上。
甚至一些读取目录的算法在如今看来,也是已经有点落后了。不过这也是时代所导致的。
后来出了很多修改版,其中爆上传漏洞的,大多数是把上传开放的版本(原版是需要登录才允许上传图片)。即使这样,如果设置了权限和openbase_dir的话,应该也是没事的。当然,这里面也有对路径判断的不够严谨导致的。

如今walkerlee也不知道在忙些啥,谁知道呢。卖机票?唉。。。不清楚了
如果对neatpic有什么问题,还是可以在这里提问。翻一下源代码,我想,我还是可以知道是怎么回复的吧?HOHO。

Tags: neatpic

IP来源引发的错误

单位的一些代码不想被其他人所访问,因此做了点小小的测试,即利用 apache 的basic auth进行验证
htpasswd -c passwdfile user

创建一个用户,然后在apache的conf里加入以下几行代码,加在directory标签中

XML/HTML代码
  1. AllowOverride AuthConfig  
  2. Order Deny,Allow   #这个,可是有顺序的哦
  3. Deny from all  
  4. Allow from 192.168.0   #这个,是按段来的,并非需要192.168.0.1这样的全部IP
  5. AuthType Basic  
  6. AuthName "Login "  #登录窗口标题
  7. AuthUserFile E:/Server/www/httppasswd  #设定密码文件
  8. Require valid-user   #这一行表示是只允许passwdfile中的用户进行访问
  9. satisfy any  
本来。。。是没有问题了结果我通过域名访问的时候,发现要输入密码。

在同事的测试下才想起,通过域名访问的时候,已经是公网IP了,所以把allow from 192.168.0 改为公网IP(公司内部对外的公网IP前三段)

OK,全解决了。

就因为访问域名的时候,来源是公网IP而不是内网IP,在那里折腾了一个多小时。细节啊。。。郁闷

Tags: ip, 来源

校内狗狗刷骨头的代码

本文是yhustc在娱乐之余利用PHP代码写的刷骨头的文章,现在不知道还能不能用了,但思路和技巧可以参考(这里还有一篇利用greasemonkey来玩开心农场的文章,也可以学习一下哦)

原文网址:http://www.yhustc.com/Blog/172.html

从文章中可以了解,这里面最关键的算法在于code的计算,每一次操作都会返回一个key,用于计算下一次操作的code。如果没有这个,那你所做的外挂程序就无效了。

根据yhustc提供的流程,建议采用firefox(使用firebug插件)进行查看分析(当然还有更多的HTTP分析软件)

不多说了,原文如下:

PHP写的,重在分析,不在可以全文COPY的代码。

校内赚骨头的方法很多,最快的是邀请一下自己的MSN好友,一次送400根。用自己的MSN用户名密码登录后,选任何一个好友(比如自己的MSN小号),直接确定,400根骨头到货了。

但是要不断的得到新的骨头,还要速度快,得靠刷。刷骨头有几个方法,一个是自动玩飞盘,接中一次3根骨头,总体趋势还是赚的。一种是喂其他人的小狗,要喂饥饿,体力为0的,有一根以上的骨头反馈,我遇到过奖20根骨头。

我用的就是第二个方法,因为我发现不是好友的小狗也是可以喂的,也就是喂狗的页面把那个pid从1到***不断的狂加,每个页面试一把,找到饥饿的小狗就喂。

流程如下:

1、登录拿到自己的校内id (actor_Fid)。

2、http://dog.xiaonei.com/pet-profile.do?method=dogXML&&pid+自增ID+&t=毫秒单位时间戳得到小狗的XML格式的属性和用于计算验证code的key

3、如果是饥饿的小狗,喂水、喂食,pid加一回到第二步去找下一只饥饿的小狗

4、喂水、喂食用的是同一个method,只是active_Fid这个参数不同,都会返回当前状态和下一轮计算使用的key,可以在这里检查一下返回,如果狗粮不够了,自动去买一下(这一步很简单,就是一个POST)

补充:首发的时候忘记说明了,买狗粮因为买40kg的,每一袋至少赚6根骨头(喂一只狗花1Kg狗粮,最少加一 根骨头,40Kg狗粮34根骨头一袋),所以默认是买40kg的狗粮,那就要求程序第一次运行的时候有足够的骨头。如果没有这么多,可以修改 Dog.php第139行,把"buy_id"=>3设置成1或2,也就是买5或20Kg的狗粮。

一天刷下来能刷很不少骨头,外加爱心等级飙升。

关键的算法在于code的计算,每一次操作都会返回一个key,用于计算下一次操作的code,参考了一下别人的文章,计算code用下面这个函数

php代码
  1. private function getCode($petId,$key)  
  2. {  
  3.    return md5($key."#".$petId."#".$this->actor_Fid."#".'%$T&*jkhjksdhfjk$%^&*BJHhh');  

后面那堆字符问我怎么知道的?抄的。google 校内狗狗 key code,看到一篇分析文章,他反编译了那个flash,看到的字符串常量。要不然鬼能反过来算这个md5里面是啥。

有了这个code外加cookie,校内的验证就算是过了,那么不断的找饥饿的小狗,post相应动作,其实就跟自己人肉搜索饥饿小狗,再点那个 flash一样。详细代码见附件列表。里面有个Http基类,这个里面封装了curl的get和post操作,带cookie。如果要写需要维护登录状态 的PHP代码,倒是可以用用,直接extends Http,然后调用$this->get $this->post就可以了。

说一下玩飞盘吧,这个实现也就是一个POST请求,返回的数据里会有小狗的属性,可以在体力不足的时候POST一个喂食操作。但是当玩到一定次数的 时候,会有验证码,其实这个验证码破解不难,有兴趣的可以捣鼓捣鼓,切割成单个字母用最大相似度匹配应该可以。由于我自己只是看看流程,不玩狗狗,所以没 有写这部分代码。

运行方式:修改Dog.php最下面的用户名和密码,把php目录添加到path里,在控制台下运行php Dog.php即可。

附件嘛。。。。我这里可以下载,也可以去原文进行下载。

4a09477ae1be3.rar

Tags: 校内网, 骨头

PHP自动识别字符集并完成转码

在PHP处理页面的时候,我们对于字符集的转换都是采用了iconv或者mb_convert等函数,但,这其实是有一个前提的。即我们事先得知道in和out是什么样的编码,我们才能进行正确的转换。
虽然大多数转换都是在gbk和utf-8之间转,但如果不知道转换对象的编码怎么办呢?yhustc.com上就有这么一个函数safeEncoding,可以简单的识别UTF8和GBK的编码(国内,基本上也就这两种最常用吧。big5?咱们不考虑,哈哈)

原文地址为:http://www.yhustc.com/Blog/156.html
内容如下:

YBlog能接收引用通告,但是因为YBlog自己使用的是utf-8编码,如果对方的博客系统使用gb2312的编码的话,POST过来就会出现 乱码(除非对方POST前先转换编码)。在不能保证对方是否一定使用utf-8编码的情况下,自己做一个编码的检查和转换是很有必要的。写了个函数来完成 这个工作,原理很简单,因为gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节,同样每个字节也有取值范围。而英 文不管在何种编码情况下,都是小于128,只占用一个字节(全角除外)。

如果是文件形式的编码检查,还可以直接check utf-8的BOM信息,关于这方面的东西,大家可以看看TP工具箱的编码转换功能,我在那个AppCodingSwitch类中写了比较详细的注释。

话不多说,直接上函数,这个函数是用来对字符串进行检查和转码的。文件的检查与转码,看这里 [膘叔注:这个链接已经不存在了]

php代码
  1. //识别汉字编码,因为YBlog用的是utf-8,如果引用通告发过来的是gb2312的编码的话,需要可以识别并完成编码转换  
  2. function safeEncoding($string,$outEncoding = 'UTF-8')  
  3. {  
  4.     $encoding = "UTF-8";  
  5.     for($i=0;$i<strlen($string);$i++)  
  6.     {  
  7.         if(ord($string{$i})<128)  
  8.             continue;  
  9.  
  10.         if((ord($string{$i})&224)==224)  
  11.         {  
  12.             //第一个字节判断通过  
  13.             $char = $string{++$i};  
  14.             if((ord($char)&128)==128)  
  15.             {  
  16.                 //第二个字节判断通过  
  17.                 $char = $string{++$i};  
  18.                 if((ord($char)&128)==128)  
  19.                 {  
  20.                     $encoding = "UTF-8";  
  21.                     break;  
  22.                 }  
  23.             }  
  24.         }  
  25.         if((ord($string{$i})&192)==192)  
  26.         {  
  27.             //第一个字节判断通过  
  28.             $char = $string{++$i};  
  29.             if((ord($char)&128)==128)  
  30.             {  
  31.                 //第二个字节判断通过  
  32.                 $encoding = "GB2312";  
  33.                 break;  
  34.             }  
  35.         }  
  36.     }  
  37.       
  38.     if(strtoupper($encoding) == strtoupper($outEncoding))  
  39.         return $string;  
  40.     else 
  41.         return iconv($encoding,$outEncoding,$string);  

 

 

Tags: 编码, 转换