300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 校内开心农场外挂源码(Python版)

校内开心农场外挂源码(Python版)

时间:2020-10-12 02:36:11

相关推荐

校内开心农场外挂源码(Python版)

特此声明:此版本校内开心农场外挂由python语言编写,运行平台为linux。本代码是修改网络上流传的源码而成,本人贴出此代码没有任何利益想法,只当学习交流之用,并感谢源码开发者!

#!/usr/bin/env python

#encoding: utf-8

#-8-21 升级后

import urllib,urllib2,cookielib

import time,zlib,re,md5

import cStringIO,gzip

import json

import pickle

import thread,sys,os

class Farm:

debug=False

status={} #self's farm status

friends={} #list of friends

shop={} #information of seeds

bag={} #背包

uid=0 #user id

autoweed=True #自动除草

autonorm=True #自动杀虫

autowater=True #自动浇水

autofert=True #自动施肥

autoplant=True #自动种植

autosteal=True #自动收获

#创建Cookie

def __init__(self):

cj=cookielib.LWPCookieJar()

opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

opener.addheaders=[('User-agent','Opera/9.23')]

urllib2.install_opener(opener)

# 请求网页的工具函数,直接返回网页内容

def req(self,url,body=()):

if len(body)==0:

req=urllib2.Request(url)

else:

req=urllib2.Request(url,urllib.urlencode(body))

while True:

try:

raw=urllib2.urlopen(req)

break

except:

print 'ReqError url:%s' % url

pass

if self.debug: #输出调试信息

print url

print body

return raw.read()

def param(self): # build params farmKey and farmTime

farmTime=str(time.time())[0:10]

farmKey=md5.md5(farmTime+'15l3h4kh').hexdigest()

return (farmKey, farmTime)

# 登录校内网 获取校内网到开心网的链接地址,并取得Cookie

def login(self, email, password):

url=" /PLogin.do"

body=(("email",email),("password",password))

ret=self.req(url, body)

uids=re.findall('http\:\/\/renren\.com\/profile\.do\?id\=(\d+)',ret)

if len(uids)>0:

self.uid=uids[0]

else:

print ret

# build cookie to faminutes

url='/happyfarm?origin=103'

url=re.findall('iframe_canvas" src="([^"]+)"',self.req(url))[0]

url=url.replace('?','/?').replace('&','&') # fuck url, it lacks a '/'

raw=self.req(url)

# read current status

url='http://xn./api.php?mod=user&act=run&farmKey=%s&farmTime=%s&inuId=' % self.param()

self.status=json.read(self.req(url))

# 获取所有好友

def listFriends(self):

url=" http://xn./api.php?mod=friend&farmKey=%s&farmTime=%s&inuId=" % self.param()

self.friends=json.read(self.req(url))

# 获取某好友信息

def showFriend(self,fid):

url='http://xn./api.php?mod=user&act=run&flag=1&farmKey=%s&farmTime=%s&inuId=' % self.param()

body={'ownerId':fid}

return json.read(self.req(url,body))

# 浇水 fid: 用户ID place:土地编号

def water(self,fid,place):

url='http://xn./api.php?mod=farmlandstatus&act=water&farmKey=%s&farmTime=%s&inuId=' % self.param()

body={'ownerId':fid,'place':place}

return json.read(self.req(url,body))

# 除草 fid:用户ID place:土地编号

def clearWeed(self,fid,place):

url='http://xn./api.php?mod=farmlandstatus&act=clearWeed&farmKey=%s&farmTime=%s&inuId=' % self.param()

body={'ownerId':fid,'place':place}

return json.read(self.req(url,body))

# 杀虫 fid:用户ID place: 土地编号

def spraying(self,fid,place):

url='http://xn./api.php?mod=farmlandstatus&act=spraying&farmKey=%s&farmTime=%s&inuId=' % self.param()

body={'ownerId':fid,'tId':0,'place':place}

return json.read(self.req(url,body))

# 获取商店列表

def scanShop(self):

url='http://xn./api.php?mod=shop&act=getShopInfo&type=1&farmKey=%s&farmTime=%s&inuId=' % self.param()

print url

self.shop=json.read(self.req(url))

return self.shop

# 查看自己购买的物品

def getBag(self):

url='http://xn./api.php?mod=Package&act=getPackageInfo&farmKey=%s&farmTime=%s&inuId=' % self.param()

self.bag=json.read(self.req(url))

return self.bag

# 翻土

def scarity(self,fid,place):

url='http://xn./api.php?mod=farmlandstatus&act=scarify&farmKey=%s&farmTime=%s&inuId=' % self.param()

body={'ownerId':fid,'place':place}

return json.read(self.req(url,body))

# 种植 cid: 种子编号 uid: 用户编号 place: 土地编号

def plant(self,cid,uid,place):

url='http://xn./api.php?mod=farmlandstatus&act=planting&farmKey=%s&farmTime=%s&inuId=' % self.param()

body={'cId':cid,'ownerId':uid,'place':place}

return json.read(self.req(url,body))

# 施肥

def fert(self,place):

url='http://xn./api.php?mod=farmlandstatus&act=fertilize&farmKey=%s&farmTime=%s&inuId=' % self.param()

body={'ownerId':self.uid,'tId':1,'place':place}

return json.read(self.req(url,body))

# 某好友的果实成熟时间列表

def find(self,fid):

self.scanShop()

url='http://xn./api.php?mod=user&act=run&flag=1&farmKey=%s&farmTime=%s&inuId=' % self.param()

body={'ownerId':fid}

ret=json.read(self.req(url,body))

lands=ret['farmlandStatus']

result={}

i=0

for land in lands:

seeds=[x for x in self.shop['1'] if x['cId']==land['a']]

if len(seeds) == 1:

durtime=int(seeds[0]['growthCycle'])+land['q']

if durtime > time.time():#尚未成熟

result[i]='%s:\t%s' % (seeds[0]['cName'],str(durtime));

else:#已经成熟

if 1==land['n']: #已经偷过

pass

else:#

result[i]='%s:\tReady' % seeds[0]['cName']

i+=1

return result

# 偷好友的果子 fid:好友编号 place:土地编号

def steal(self,fid,place):

url='http://xn./api.php?mod=farmlandstatus&act=scrounge&farmKey=%s&farmTime=%s&inuId=' % self.param()

body={"ownerId":fid,"place":place}

return json.read(self.req(url,body))

def harvest(self,place):

url='http://xn./api.php?mod=farmlandstatus&act=harvest&farmKey=%s&farmTime=%s&inuId=' % self.param()

body={'ownerId':self.uid,'place':place}

return json.read(self.req(url,body))

# 查找果实列表

def autofind(self):

self.listFriends()

result={}

for f in farm.friends: #输出所有好友

result[f['userId']]=farm.find(f['userId'])

return result

# 升级

def moneyGo(self,n=1):

for i in range(n):

print i

self.scarity(self.uid,0)

self.plant(2,self.uid,0)

# 自动运行 默认最小间隔20分钟

def autorun(self,interval=20*60):

if len(self.friends)==0:

self.listFriends()

if len(self.shop)==0:

self.scanShop()

self.bag=self.getBag() #背包

ret={} #下次运行时间

print self.friends['data']

for friend in self.friends['data']:

print (time.ctime()+friend['userName']).encode('utf-8')

lands=self.showFriend(friend['userId'])['farmlandStatus']

i=-1

for land in lands:#每块地

i+=1

s=[x for x in self.shop['1'] if x['cId']==land['a']]

if len(s)==0:#空地

print u'\t%d\t空地'.encode('utf-8') % i

if len(s)==1:#不是空地

durtime=land['q']+int(s[0]['growthCycle'])

if durtime < time.time(): #已经成熟

if friend['userId']==self.uid: #自己的地,收获

if land['b']==6: #成熟

self.harvest(i)

stealed=u'收获'

elif land['b']==7: #已经收获

stealed=u'已收'

else:

stealed=u'未知'

if self.autoplant: #自动种植

if land['b'] == 6 and land['j']==s[0]['maturingTime'] or land['b']==7:

self.scarity(self.uid,i) #翻地

for seed in self.bag['1']: #种值 if seed['type']==1:

self.plant(seed['cId'],self.uid,i)

stealed+=u'已种'

self.getBag()

break

else:#别人的地

if 1==land['n']:

stealed=u'偷过'

elif land['b']==7:

stealed=u'已收'

elif land['m']==land['l']:

stealed=u'偷光'

elif self.autosteal: #偷

temp=self.steal(friend['userId'],i)

if temp.has_key('harvest'):

stealed=u'偷得%d' % temp['harvest']

elif temp['direction']=='':

print temp

else:

print temp

raise Exception

else: #未成熟

if (durtime-int(time.time())) < interval:#开新线程偷

print 'set Thread %s' % time.ctime(durtime)

if friend['userId']==self.uid:

temp = -1

else:

temp = friend['userId']

thread.start_new_thread(threadSteal,

(self,durtime,temp,i))

if not ret.has_key(friend['userId']) or ret[friend['userId']] > durtime:

ret[friend['userId']]=durtime

stealed=time.ctime(durtime)

if friend['userId']==self.uid and self.autofert: #自动施肥

temp=(int(time.time())-land['q'])/(int(s[0]['growthCycle'])/5)-land['o']

if not temp < 0:

temp=self.fert(i)

if temp.has_key('direction'):

stealed+=temp['direction']

else:

stealed+=u'施肥'

if land['f'] > 0:

weed=str(land['f'])+u'草,已除'

while self.autoweed and land['f']>0:

self.clearWeed(friend['userId'],i)

land['f']-=1

else:

weed=''

if land['h']==0:

han=u'干旱,已浇水'

if self.autowater:

self.water(friend['userId'],i)

else:

han=''

if land['t']>0 or land['g']>0:

if self.autonorm:

while land['g']>0: #杀小虫

self.spraying(friend['userId'],i)

land['g']-=1

norm=u'捉虫1'

if land['t'] > 0: #杀大虫

self.spraying(friend['userId'],i)

norm=u'杀虫1/%d' % land['t']

else:

norm=''

temp=u'\t%d\t%s\t%s\t%s\t%s\t%s' % (

i,

s[0]['cName'],

stealed,

weed,

han,

norm)

print temp.encode('utf-8')

return ret.values()

#在时间T自动去偷

def threadSteal(farm, T, fid, place):

time.sleep(T-int(time.time())+2)

if fid==-1:

temp=farm.harvest(place)

else:

temp=farm.steal(fid,place)

if temp.has_key('harvest'):

print u'Thread 偷得 %d at %s:%d'.encode('utf-8') % (temp['harvest'],fid,place)

else:

print u'Thread Failed %s at %s:%d'.encode('utf-8') % (temp,fid,place)

if __name__=='__main__':

farm = Farm()

farm.debug= True

running = True

interval=20*60

print u'请输入校内网用户邮箱:'.encode('utf-8')

email=sys.stdin.readline()

print u'请输入密码:'.encode('utf-8')

password=sys.stdin.readline()

farm.login(email[0:len(email)-1],password[0:len(password)-1])

while running:

farm.autorun(interval=interval) #自动运行

print u'进入自动运行模式(Y/N)?'

autorun = sys.stdin.read(1);

print autorun

if autorun == 'Y' or autorun == 'y':

print u'%s等待下次运行:%d分钟后'.encode('utf-8') % (time.ctime(),interval/60)

sys.stdout.flush()

time.sleep(interval)

elif autorun == 'N' or autorun == 'n':

running = False

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。