[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写的开心网收菜偷菜的小工具相关推荐

  1. python编写数据库连接工具_详解使用Python写一个向数据库填充数据的小工具(推荐)...

    一. 背景 公司又要做一个新项目,是一个合作型项目,我们公司出web展示服务,合作伙伴线下提供展示数据. 而且本次项目是数据统计展示为主要功能,并没有研发对应的数据接入接口,所有展示数据源均来自数据库 ...

  2. python创意小作品代码-用Python写过哪些「脑洞大开」的小工具?

    添了点说明 --------------------------- - #### 更新一个 有年狂风暴雨,就是风很大雨很大,我一直很关注天气,就爬了气象网站的气象雷达图,然后做成gif.此图中间十字坐 ...

  3. python可以做哪些小工具_用Python写过哪些「脑洞大开」的小工具?

    造数 - 今天教你用Python 来随机写诗 思路很简单:从唐诗三百首中获取最常使用的汉字,然后在这些汉字中拿出一些组成新"诗". 看看出来了什么诗 空女寒国乐,已照柳落声. 自夫 ...

  4. 有哪些是python做的软件_用Python写过哪些「脑洞大开」的小工具?

    抓取建立知乎大V之间的关系网络,大V之间的关系真的是错综复杂啊!实现思路是以一个大V为起点,不断的往上抓取关注列表,用 Neo4j 结合 Mysql 存储用户信息和用户之间的关系,Neo4j 存储人物 ...

  5. 自己写的 根据编码搜索文件的小工具

    2019独角兽企业重金招聘Python工程师标准>>> 文件.目录搜索的小工具 用正则式限制文件名.关键字.目录 开始是专门为了搜索GBK和UTF8两种编码的文件,现在可以制定多种编 ...

  6. 我用python做了个测词汇量的小工具

    大家好,作为爱学习的自己,我特意用python做了个测词汇量的小工具,让自己每天都能够快乐的学习! 1.页面分析 这次我们采用的是扇贝网来进行词汇量测试,如图: 我们还是老规矩,首先按F12打开开发者 ...

  7. 苹果 python蚂蚁森林自动收能量_通过测试工具自动收取蚂蚁森林能量

    本文仅为自动化工具appium的技术研究,请勿用于任何非正当用途 最近在家远程工作,结果作息更混乱了,早上起不来,导致我蚂蚁森林能量天天被偷,严重影响我沙漠造树"大业" ‍♂️.于 ...

  8. python代码怎么变成软件_从Python代码到APP,你只需要一个小工具:GitHub已超6000星

    点击上方Python知识圈,选择设为星标 回复1024获取Python资料 选自TowardsDataScience作者:Adrien Treuille机器之心编译参与:魔王.一鸣 阅读文本大概需要 ...

  9. 使用python开发一个剪切视频、音频的小工具(完整案例)

    前言: 本篇文章将会教你如何用python语言去开发.制作一个可以剪切视频.音频的可视化工具,内容跟以往一样,简单直接,都是硬核内容,具体流程和备注都写在代码注释里了,实在看不懂没关系,代码复制粘贴直 ...

最新文章

  1. html false插件,解析webpack插件html-webpack-plugin
  2. R-Bioconductor安装
  3. 全美人工智能研究生院排名出炉:CMU第一,MIT第二
  4. (转载)Linux Out-of-Memory(OOM) Killer
  5. 加速SaaS规模化演进,餐道基于K8s的云上创新底座
  6. 数据结构学习笔记(七):哈希表(Hash Table)
  7. 深度学习之卷积神经网络(10)CIFAR10与VGG13实战
  8. IntelliJ IDEA for Mac 如何配置项目模块的源代码根目录_源码文件的根目录
  9. 读小米的《参与感》书的摘录(一),与大家分享!
  10. MOV指令在32位汇编程序和64位汇编程序下的相同与不同之处
  11. 大信会计师事务所笔试题目_最新会计师事务所排名发布!CPA过两科的有机会了...
  12. Fiddler使用过程中无法抓取https的解决方法
  13. Linux系统教学-Lesson01
  14. LX04 小米触屏音箱刷机教程
  15. cpu测试用什么软件,cpu测试工具有哪些(免费分享这5款测试软件)
  16. 大数据第一季--java基础(day5)-徐培成-专题视频课程
  17. 二维码制作软件生成二维码时的参数设置
  18. you need a c compiler to build uwsgi
  19. linux系统外接硬盘_linux系统外接存储管理命令
  20. 自定义拍照时 拍照界面_当生活中拍照不知道摆什么姿势时,可以试试动漫中这些动作...

热门文章

  1. js常用插件(九)之移动端翻书效果turn.js
  2. 【java】国庆节皮一把
  3. 论Java多线程如何引发OOM—多线程开发知识点
  4. 淘宝案例、防抖和节流
  5. Keycloak各种配置及API的使用
  6. 每日一笑--蛛丝马迹
  7. 搭建PHP开发环境(Apache+PHP+MySQL)
  8. guns java_Guns代码生成简明教程
  9. python面试设计模式问题_聊聊 Python 面试最常被问到的几种设计模式(上)
  10. 柯美彩服务器系统怎么才坏,柯美彩色复印机之系统故障维修技巧