校内网开心农场外挂制作思路

[摘]Posted by 枫之羽 in python,
近日看在添加了校内开心农场,玩得太累了,特别是偷东西,有快感,但是很累,所以想自动化实现,于是研究其制作辅助工具的原理,就有了以下这篇文章。
工具: HttpWatch(分析HTTP协议,csdn上可以下载到破解版)以及JSONViewer(查看json数据用的,随便搜索都可以下载到)
语言:python(具有很强大的网络模块,随意使用)
步骤一: 如何模拟对网页进行"POST"和"GET"动作来获得服务器那边的数据
在python中可以使用 urllib,urllib2,cookielib就可以轻松的处理web事件了
以下是请求网页内容的代码,body有内容说明是post行为,没有就是get行为

# 请求网页,直接返回网页内容
    def reqcontent(self,url,body=()):
                if len(body)==0:
                        req=urllib2.Request(url)
                else:
                        req=urllib2.Request(url,urllib.urlencode(body))
                raw=urllib2.urlopen(req)
                if self.debug: #输出调试信息
                    print url
                    print raw.headers
                return raw.read()

步骤二: 登录账户
输入帐号和密码, 可以用HttpWatch发现登录的网址和POST的数据
点击在新窗口中浏览此图片
在HttpWatch中可以发现登录所需要的信息, 分别为:
网址: url="http://login.xiaonei.com/", 子网址:Login.do
post数据为: email, origurl, password
动作为: "POST"
注意事后检测content内容, 可以根据其内容判断登录是否成功.

[separator]
def login(self,email,password):
        url="http://login.xiaonei.com/Login.do"
        body=(("email",email),("password",password))
        content=self.reqcontent(url,body)
        #print content
        uids=re.findall('http\:\/\/xiaonei\.com\/profile\.do\?id\=(\d+)',content)//查询主页信息,是否成功登陆
        if len(uids)>0:
            self.uid=uids[0]
            print '登陆校内成功!'
        else:
            print '登陆校内网失败,请稍候再登陆!'
            return ' '

步骤三:既然会登陆了,那就也会从首页链接去开心农场了,这个方式是一样的不在这里介绍了。进入的地址是:http://apps.xiaonei.com/happyfarm?origin=103,采用get的方式就行了想知道的可以去看一会的完整的源代码,
进入后就会获得下一大堆你看不懂的json的数据,就要进行解析与自己去分析了。也就是要用到我们的第二个工具JSONViewer。
在这里我们还要看一个有趣的链接,http://xn.hf.fminutes.com/api.php?mod=user&act=run&farmKey=0adb08b43b1ddce6bdc34d6b7b691c53&farmTime=1248965142&inuId=
这个链接里面的0adb08b43b1ddce6bdc34d6b7b691c53和1248965142是怎么产生的呢,仔细分析后发现
farmTime=str(time.time())[0:10](当前时间)
farmKey=md5.md5(farmTime+'15l3h4kh').hexdigest()(加了几个数后md5的十六进制数)
其他的请求也类似,我们可以用一个函数生成这两个关键字

    def param(self): # 创建farmKey and farmTime参数
            farmTime=str(time.time())[0:10]
            farmKey=md5.md5(farmTime+'15l3h4kh').hexdigest()
            return (farmKey, farmTime)

查询content得到一堆数据,这就是json数据,用JSONViewer查看,然后分析,得到天气,地块,用户等信息
点击在新窗口中浏览此图片
分析出数据结构以后就要取得这些数据,python中又提供给我们一个json模块,这个模块可以轻松的解析出有用的信息
content =self.reqcontent(url,body)#获得那些杂乱的数据
ret=json.read(content)#用json模块有规律读到ret中
lands=ret['farmlandStatus']#取出农场的状况信息,简单吧
通过这个三个步骤我相信你已经学会了外挂制作的原理,其他操作同样就是类似这个链接http://xn.hf.fminutes.com/api.php?mod=user&act=run&farmKey=0adb08b43b1ddce6bdc34d6b7b691c53&farmTime=1248965142&inuId=
用httpwatch去捕获一下得到。
下面是完整的源代码和exe文件,在config.ini中写入用户名和密码,不过又bug,中文的显示有些问题,我的好友中出现一个名字加爱心的就是显示出错,还有对可偷的数量没有进行判断,校内规定只能作物的40%产量可以偷,我没有进行判断直接当可偷处理了。
/Files/ciey/校内开心农场辅助工具.rar

posted @ 2009-08-15 09:25  ciey  阅读(4209)  评论(4编辑  收藏  举报