用python写的开心网收菜偷菜的小工具
[size=small;] 其实原理很简单,首先用firfox的插件httpfox来获取登录、查看菜地和偷菜的http请求,再使用python的urllib来模拟发送http请求,对回应数据进行分析,就ok了。[/size]
[size=small;] 第一步:登录[/size]
[size=small;] 第二部:进入花园,获取verify代码[/size]
[size=small;] 第三步:查看有成熟菜的好友列表[/size]
[size=small;] 第四步:查看某个好友的菜地信息[/size]
[size=small;] 第五步:开偷[/size]
[size=small;] 代码如下:[/size]
[size=small;]
#-*- coding:utf-8 -*-import urllibimport socketimport http.cookiejar import randomimport timeimport sysclass 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)
<font size="3">
</font>[/size]
[size=small;] [/size]
[size=small;]使用方法:[/size]
[size=small;]1、下载安装python3.1[/size]
[size=small;]2、保存上边的文本为farm.py[/size]
[size=small;]3、命令行下敲入[/size]
[size=small;];farm.py 开心网用户名 开心网密码 要偷的菜的列表(半角逗号分割)[/size]
用python写的开心网收菜偷菜的小工具相关推荐
- python编写数据库连接工具_详解使用Python写一个向数据库填充数据的小工具(推荐)...
一. 背景 公司又要做一个新项目,是一个合作型项目,我们公司出web展示服务,合作伙伴线下提供展示数据. 而且本次项目是数据统计展示为主要功能,并没有研发对应的数据接入接口,所有展示数据源均来自数据库 ...
- python创意小作品代码-用Python写过哪些「脑洞大开」的小工具?
添了点说明 --------------------------- - #### 更新一个 有年狂风暴雨,就是风很大雨很大,我一直很关注天气,就爬了气象网站的气象雷达图,然后做成gif.此图中间十字坐 ...
- python可以做哪些小工具_用Python写过哪些「脑洞大开」的小工具?
造数 - 今天教你用Python 来随机写诗 思路很简单:从唐诗三百首中获取最常使用的汉字,然后在这些汉字中拿出一些组成新"诗". 看看出来了什么诗 空女寒国乐,已照柳落声. 自夫 ...
- 有哪些是python做的软件_用Python写过哪些「脑洞大开」的小工具?
抓取建立知乎大V之间的关系网络,大V之间的关系真的是错综复杂啊!实现思路是以一个大V为起点,不断的往上抓取关注列表,用 Neo4j 结合 Mysql 存储用户信息和用户之间的关系,Neo4j 存储人物 ...
- 自己写的 根据编码搜索文件的小工具
2019独角兽企业重金招聘Python工程师标准>>> 文件.目录搜索的小工具 用正则式限制文件名.关键字.目录 开始是专门为了搜索GBK和UTF8两种编码的文件,现在可以制定多种编 ...
- 我用python做了个测词汇量的小工具
大家好,作为爱学习的自己,我特意用python做了个测词汇量的小工具,让自己每天都能够快乐的学习! 1.页面分析 这次我们采用的是扇贝网来进行词汇量测试,如图: 我们还是老规矩,首先按F12打开开发者 ...
- 苹果 python蚂蚁森林自动收能量_通过测试工具自动收取蚂蚁森林能量
本文仅为自动化工具appium的技术研究,请勿用于任何非正当用途 最近在家远程工作,结果作息更混乱了,早上起不来,导致我蚂蚁森林能量天天被偷,严重影响我沙漠造树"大业" ♂️.于 ...
- python代码怎么变成软件_从Python代码到APP,你只需要一个小工具:GitHub已超6000星
点击上方Python知识圈,选择设为星标 回复1024获取Python资料 选自TowardsDataScience作者:Adrien Treuille机器之心编译参与:魔王.一鸣 阅读文本大概需要 ...
- 使用python开发一个剪切视频、音频的小工具(完整案例)
前言: 本篇文章将会教你如何用python语言去开发.制作一个可以剪切视频.音频的可视化工具,内容跟以往一样,简单直接,都是硬核内容,具体流程和备注都写在代码注释里了,实在看不懂没关系,代码复制粘贴直 ...
最新文章
- html false插件,解析webpack插件html-webpack-plugin
- R-Bioconductor安装
- 全美人工智能研究生院排名出炉:CMU第一,MIT第二
- (转载)Linux Out-of-Memory(OOM) Killer
- 加速SaaS规模化演进,餐道基于K8s的云上创新底座
- 数据结构学习笔记(七):哈希表(Hash Table)
- 深度学习之卷积神经网络(10)CIFAR10与VGG13实战
- IntelliJ IDEA for Mac 如何配置项目模块的源代码根目录_源码文件的根目录
- 读小米的《参与感》书的摘录(一),与大家分享!
- MOV指令在32位汇编程序和64位汇编程序下的相同与不同之处
- 大信会计师事务所笔试题目_最新会计师事务所排名发布!CPA过两科的有机会了...
- Fiddler使用过程中无法抓取https的解决方法
- Linux系统教学-Lesson01
- LX04 小米触屏音箱刷机教程
- cpu测试用什么软件,cpu测试工具有哪些(免费分享这5款测试软件)
- 大数据第一季--java基础(day5)-徐培成-专题视频课程
- 二维码制作软件生成二维码时的参数设置
- you need a c compiler to build uwsgi
- linux系统外接硬盘_linux系统外接存储管理命令
- 自定义拍照时 拍照界面_当生活中拍照不知道摆什么姿势时,可以试试动漫中这些动作...