其实原理很简单,首先用FirFox的插件HttpFox来获取登录、查看菜地和偷菜的http请求,再使用python的urllib来模拟发送HTTP请求,对回应数据进行分析,就OK了。
第一步:登录
第二部:进入花园,获取verify代码
第三步:查看有成熟菜的好友列表
第四步:查看某个好友的菜地信息
第五步:开偷
代码如下:
#-*- coding:utf-8 -*-
import urllib
import socket
import http.cookiejar
import random
import time
import sys
class Farm:
cj = http.cookiejar.CookieJar()
is_login = False
user = ""
password = ""
verify = ""
steal_list = []
def __init__(self,user,password,steal_list):
self.user = user
self.password = password
self.steal_list = steal_list.split(",")
def login(self):
url = "http://www.kaixin001.com/login/login.php";
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(self.cj))
print("正在登陆开心网....")
f = opener.open(url,"url=/home/&email=" + self.user + "&password=" + self.password)
f.read()
url = "http://www.kaixin001.com/!house/garden/index.php"
print("正在进入农场....")
f = opener.open(url)
data = f.read()
idx = str(data).find("var g_verify = \"");
if idx == -1:
return
idx2 = str(data).find("\"",idx + 18)
if idx2 == -1:
return
is_login = True
self.verify = str(data)[idx+16:idx2]
print("获取Key=" + self.verify)
def _havest_one(self,farm_num,fuid):
if self.verify == "":
print("用户尚未登录!")
return
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(self.cj))
url = "http://www.kaixin001.com/!house/!garden/havest.php?farmnum=" + farm_num + "&seedid=0&fuid=" + fuid + "&r=" + str(random.uniform(0,1))
f = opener.open(url)
data = str(f.read().decode("utf-8"))
if not self.validate(data) :
self.login()
return
index1 = data.find("<ret>")
index2 = data.find("</ret>")
result = data[index1+5:index2]
if result == "succ":
name = data[data.find("<seedname>")+10:data.find("</seedname>")]
if fuid != "0":
print("★★☆☆成功偷了ID(" + fuid + ")家的" + name + "!★★☆☆")
else:
print("★★☆☆成功收获了自己的" + name + "!★★☆☆")
else:
index1 = data.find("<reason>")
index2 = data.find("</reason>")
reason = data[index1+8:index2]
if fuid != "0":
print("!!!!偷ID(" + fuid + ")家的菜失败,失败原因:" + reason + "!")
else:
print("!!!!收获自己家的菜失败,失败原因:" + reason + "!")
time.sleep(3)
def validate(self,str):
if str.find("您需要登录后才能继续浏览或操作") != -1:
return False
return True
def havest(self,fuid):
if self.verify == "":
print("用户尚未登录!")
return
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(self.cj))
url = "http://www.kaixin001.com/!house/!garden/getconf.php?verify=" + self.verify + "&fuid=" + fuid + "&r=" + str(random.uniform(0,1))
f = opener.open(url)
data = f.read()
result = str(data.decode("utf-8"))
if not self.validate(result) :
self.login()
return
index = result.find("<farmnum>")
name = result[result.find("<name>")+6:result.find("</name>")]
while index != -1:
index2 = result.find("</farmnum>",index)
num = result[index+9:index2]
index3 = result.find("<cropsstatus>",index)
index4 = result.find("</cropsstatus>",index)
if index3 == -1 or index4 == -1:
index = result.find("<farmnum>",index+10)
continue
status = result[index3+13:index4]
status_str = "状态未知(" + status + ")";
if status == "1":
status_str = "未成熟"
if status == "2":
status_str = "已成熟"
if status == "3":
status_str = "没东西"
index3 = result.find("<name>",index)
index4 = result.find("</name>",index)
fname = "未知"
if index3 != -1 and index4 != -1:
fname = result[index3+6:index4]
print(name + "的第" + num + "块地[" + fname + "]" + status_str)
#成熟的
if status == "2":
flag = False
for f in self.steal_list:
if f == fname :
self._havest_one(num,fuid)
flag = True
if not flag:
print("●●○○" + fname + "太便宜了,不偷!!!!")
index = result.find("<farmnum>",index+10)
def friend_list(self):
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(self.cj))
url = "http://www.kaixin001.com/!house/!garden/getfriendmature.php?verify=" + self.verify + "&r=" + str(random.uniform(0,1))
f = opener.open(url)
data = f.read()
result = str(data.decode("utf-8"))
index = result.find("\"uid\":")
while index != -1:
index2 = result.find(",",index)
uid = result[index+6:index2]
index3 = result.find("\"realname\":",index)
index4 = result.find(",",index3)
if index3 == -1 or index4 == -1:
index = result.find("\"uid\":",index+3)
continue
name = result[index3+11:index4]
print("uid=" + uid + ",name=" + name)
self.havest(uid)
time.sleep(5)
index = result.find("\"uid\":",index+3)
f = Farm(sys.argv[1],sys.argv[2],sys.argv[3])
f.login()
while True:
f.havest("0")
time.sleep(10)
f.friend_list()
time.sleep(10)
使用方法:
1、下载安装python3.1
2、保存上边的文本为farm.py
3、命令行下敲入
;farm.py 开心网用户名 开心网密码 要偷的菜的列表(半角逗号分割)
分享到:
相关推荐
期末大作业用python turtle库写的太空大战小游戏源码期末大作业用python turtle库写的太空大战小游戏源码期末大作业用python turtle库写的太空大战小游戏源码期末大作业用python turtle库写的太空大战小游戏源码期末...
本文将详细讲解一款使用Python编写的“唐诗三百首小工具”,它结合了科技与传统文化,旨在帮助幼儿园和小学生轻松学习和欣赏唐诗,提升文学素养。 首先,我们要理解这个小工具的核心功能。它不仅具备系统语音朗读...
Python 网络测试小工具 。。。。。。。。。。
Python写了一个词达人半自动答题工具源码 Python写了一个词达人半自动答题工具源码 Python写了一个词达人半自动答题工具源码 Python写了一个词达人半自动答题工具源码 Python写了一个词达人半自动答题工具源码 ...
标题中的“自己写的二个python小工具,用于图片处理的”揭示了这是一份与Python编程相关的资源,其中包含了两个自定义的小程序,主要用于图片处理。这些工具可能涵盖了图像的查看、格式转换、编辑或其他与图像操作...
"Python-Python写的工具类"这个标题暗示了我们将会探讨的是一个使用Python编写的工具集,它可能包含了各种实用的功能,以方便开发者在日常工作中进行代码复用和效率提升。"Python写的工具类"描述进一步确认了这一点...
文件编码转换工具(GB2312与UTF-8转换) python写的一个小工具文件编码转换工具(GB2312与UTF-8转换) python写的一个小工具文件编码转换工具(GB2312与UTF-8转换) python写的一个小工具
【标题】"用python编写的一款小游戏,实现人狼羊菜过河" 描述了一款基于Python编程语言开发的趣味逻辑游戏。在这个游戏中,玩家需要帮助人、狼、羊和菜安全地过河,同时要确保在任何时候,狼不会与羊单独在一起...
在这个"Python-关于Python的一些小工具"的主题中,我们将探讨一些常用的Python工具,包括安装、使用方法以及它们在实际开发中的应用。 1. **Pip**: Python的包管理器Pip是每个Python开发者必备的工具。它允许我们...
Python是一种广泛使用的高级编程语言,尤其在后端开发领域中占据着重要地位。在Python的生态系统中,编译和反编译是两个关键概念。当我们谈论"Python反编译工具",尤其是"Easy Python Decompiler",我们是在讨论将...
Python编写的Windows进程守护小工具是一款实用的软件,主要用于确保特定的Windows应用程序始终在后台运行。这个工具利用Python的强大功能,结合Windows操作系统API,实现了一个轻量级的进程监控和恢复机制。它允许...
Java到Python的转换工具,如"java2python",是一个重要的软件开发辅助工具,它能够帮助程序员将已有的Java代码转换成Python代码,以便在Python环境中执行或进行进一步的开发工作。这种转换过程涉及到多种语言特性和...
python安装包,网络爬虫工具 python安装包,网络爬虫工具 python安装包,网络爬虫工具 python安装包,网络爬虫工具 python安装包,网络爬虫工具 python安装包,网络爬虫工具 python安装包,网络爬虫工具 python...
“小蜜蜂”这个游戏相信我们小时候都玩过,这次用python写了这个小游戏,可以运行,功能完好,可以随意调整敌机以及我方发射子弹的速度和数量。
python读写excel
初学python 分享一个小程序:python 如何写入TXT文件!
使用Python脚本建立ArcGIS工具 ArcGIS是一个功能强大的地理信息系统(GIS),它提供了丰富的工具和功能来处理、分析和可视化地理数据。Python脚本是ArcGIS中的一种强大工具,它允许用户自定义自己的工具和模型,以...
用python写的,调用cnki数据库,将查询结果进行文献格式化
python实现按键精灵工具合集python实现按键精灵工具合集python实现按键精灵工具合集python实现按键精灵工具合集python实现按键精灵工具合集python实现按键精灵工具合集python实现按键精灵工具合集python实现按键精灵...
【Python小游戏】是一种利用Python编程语言以及其游戏开发库Pygame构建的小型应用程序。Python以其简洁易懂的语法和丰富的库支持,成为了初学者和专业开发者制作游戏的热门选择。Pygame是Python的一个模块集合,提供...