本文是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用下面这个函数
- private function getCode($petId,$key)
- {
- 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即可。
附件嘛。。。。我这里可以下载,也可以去原文进行下载。