python 30行代码实现蚂蚁森林自动偷能量

@[toc] 虽然我支付宝加了好多好友,平时有很多能量可以偷,但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化。之前通过用代码模拟手机点按的方式,实现了朋友圈自动点赞,但当时蚂蚁森林的操作流程要比朋友圈点赞复杂很多,所以当时就没有实现自动偷能量。不过我那篇博客评论下面有网友推荐了appium和uiautomator2这俩工具,最近抽空研究了下,发现用uiautomator2的话这事简单了好多,而且由于蚂蚁森林改版,连续偷能量的操作流程也简单了好多,于是乎我就实现了自动偷能量,效果如下,完整视频戳这里

接下来介绍下原理和实现方式,首先如果让你手动去收能量的话,你是什么流程?

1.打开支付宝
2.打开蚂蚁森林
3.先收取自己的能量
4.跳到下一个有能量的人哪
5.收取ta的能量
6.重复4和5,直到没有能量可以偷

很幸运的是,借助Uiautomator2,这些都可以自动化。UiAutomator是Google提供的用来做安卓自动化测试的一个Java库,可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作。Uiautomator2是在Uiautomator之上的python的接口封装,简单来说 Uiautomator2可以看到手机当前屏幕上有哪些控件,其坐标是啥,并且还可以模拟点击。

Uiautomator2的安装和使用

详细可以参考下官方文档Uiautomator2,安装方式很简单,下面一条命令即可。

pip install --upgrade --pre uiautomator2

使用的话这里有几个坑,手机接入电脑前首先需要开启开发者模式,并开启USB调试,USB安装 (如下图),这样才能保证uiautomator2有足够的权限操作你的手机。

第一次使用过uiautomator2后,它会在你手机上安装ATX这个应用,打开这个应用你就可以之后通过无线的方式操作你的手机了。

具体实现

如何打开支付宝并进入蚂蚁森林?

Uiautomator2可以直接通过应用包名调起应用d.app_start("com.eg.android.AlipayGphone"),啥?你不知道支付宝的包名?你可以安装Uiautomators2后用其命令行查看支付宝的包名,具体可以查阅其文档。

如何进入蚂蚁森林? Uiautomators2提供了直接点击屏幕某个文字的位置,d(text="蚂蚁森林").click()。所以建议你把蚂蚁森林放的支付宝首页,这样打开支付宝后就可以直接定位到蚂蚁森林的位置了。

收能量

目前定位到具体能量的位置,所以最简单的方式就是把所有能量可能出现的位置都扫一遍(如上图红框),然后点击找能量按钮跳到下一个人那继续扫荡。

如何停止

怎么停下来是个大问题,因为上面的逻辑都是模拟点击,如果不在合适的时机停下来,鬼知道它会给我按出什么东西。通过几次观察,我发现没有能量偷之后,支付宝会跳到下面这个页面上,这里只需要检查下"返回我的森林"按钮是否存在即可。

完整代码

完整代码很短,如下:

import uiautomator2 as u2
import time
import random
# d = u2.connect() # 有线连接,手机需要插电脑上
d = u2.connect("192.168.0.108") #通过无线连接,电脑和手机需要在同一个局域网内,并且需要先用有线的方式做过初始化

# d.app_stop("com.eg.android.AlipayGphone") 

print("打开支付宝")
d.app_start("com.eg.android.AlipayGphone")
time.sleep(2) ## 休眠2s等待支付宝完全启动

print("打开蚂蚁森林,等待5s……")
d(text="蚂蚁森林").click()
time.sleep(5) ## 我手机比较卡,进入蚂蚁森林后还需要几秒钟才能完全加载完  

def collectEnergy(cnt):
  print("开始第%d次偷能量!" % cnt)

  # 开始扫描点击有能力出现的区域
  for x in range(150,1000,150):
    for y in range(600,900,150):
      d.long_click(x + random.randint(10,20), y + random.randint(10,20), 0.1)
      time.sleep(0.01)
      if cnt != 1:
        d.click(536,1816)

cnt = 1
while True:
  collectEnergy(cnt)
  a = d.xpath("//*[@resource-id='J_tree_dialog_wrap']").get().bounds
  d.click(1000, a[3]-80) # 找能量按钮的坐标 

  ## 如果页面出现了“返回我的森林”说明已经没有能量可偷了,结束
  if d.xpath('//*[@text="返回我的森林"]').click_exists(timeout=2.0):
    break
  cnt += 1
print("###结束###")
# d.app_stop("com.eg.android.AlipayGphone") # 退出支付宝

结语

抛开注释,真的不到30行代码,但建议用的时候还是低调点,别让你的好友知道你开了挂然后拉黑你。

以上就是python 30行代码实现蚂蚁森林自动偷能量的详细内容,更多关于python 实现蚂蚁森林自动偷能量的资料请关注我们其它相关文章!

(0)

相关推荐

  • 基于Python的接口自动化unittest测试框架和ddt数据驱动详解

    引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用例时测试数据如何管理和加载.针对测试用例加载以及执行控制,python语言提供了unittest单元测试框架,将测试用例编写在unittest框架下,使用该框架可以单个或者批量加载互不影响的用例执行及更灵活的执行控制,对于更好的进行测试数据的管理和加载,这里我们引入数据驱动的模块:ddt,测试数据和

  • Python实现王者荣耀自动刷金币的完整步骤

    想写一个游戏的辅助脚本(或者外挂? )很久了.这几天工作.考试都完成的差不多了,闲下来写一个王者荣耀的刷金币脚本,供大家参考. 原理 我想,游戏的脚本应该都是差不多的,我们玩游戏的流程是这样的: 那么用脚本玩游戏呢,完全可以省略中间的步骤: 所以我们只要:在特定的时刻,特定的位置,按键,就可以了. 环境配置 1.ADB工具(让电脑使用手机) 下载地址:https://adbshell.com/downloads/ 如果慢的话找其它资源也好 下载配置不再赘述了-最后出现类似下图即可. 2.pyth

  • Python+Appium实现自动化清理微信僵尸好友的方法

    随着微信的使用时间越长,微信好友也越来越多,有些好友将你删除了你也不知道.当我们发消息的时候会出现下面扎心的一幕,然后默默将他删除 使用 Appium 基础的 appium 使用在公众号文章 <解放双手,提高生产力,这款神器你值得拥有> 中已经讲过了,这里使用最新 1.20.0 版本的 appium,旧版本会出现真机微信闪退的情况 安装一下 Python 用到的模块 pip install Appium-Python-Client 获取好友列表 在 Pycharm 中配置一下启动环境 desi

  • 用60行代码实现Python自动抢微信红包

    春节来到,红包们大概率在微信各大群中肆虐,大家是否都一样不抢到红包们心里就感觉错过了一个亿,可总会被这事那事耽误而遗憾错过,下面用 Python 写一个自动抢红包代码 启动入口 启动程序的配置和公众号文章<用 Python + Appium 的方式自动化清理微信僵尸好友>的配置一样 from appium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui

  • Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

    2020年4月补充 鉴于配置自动化测试这套框架确实稍微有点麻烦,许多小伙伴在配置的过程中总是踩坑,最近写了篇简化版的入门教程,不想折腾Android SDK的小伙伴可以移步到那篇文章:https://www.jb51.net/article/169763.htm 概述 本文主要分为以下几个部分 安装Python3 安装Python3的Appium库 安装Android SDK 安装JDK 安装Appium 安装模拟器 编写测试脚本并生成测试报告 项目示例下载地址: https://github.

  • python3定位并识别图片验证码实现自动登录功能

    会用到的库的 1.selenium的webdriver 2.tesserocr或者pytesseract进行图像识别 3.pillow的Image进行图片处理 from selenium import webdriver import tesserocr from PIL import Image tesserocr的安装. 获取验证码图片方法1: def get_code_image(file_name): driver.save_screenshot(file_name) # 截取整个屏幕并

  • python利用appium实现手机APP自动化的示例

    写这个东西也是自己喜欢研究些自动化的东西,以下全是自己的经验所得,由于开源的软件对于各版本以及操作系统要求很高,会经常碰到一些不兼容的问题,这个都属于正常的,换版本就对了. 如果你感觉学不会?莫慌,小编推荐大家加入群, 前面548中间377后面875,群里有志同道合的小伙伴, 互帮互助,还可以拿到许多视频教程! 本人的环境搭建都是在win10 64位上搭建的 1.环境准备 1.jdk1.8.0 (64位) 2.android-sdk_r24.4.1-windows 3.python:2.7(3.

  • Appium+Python实现简单的自动化登录测试的实现

    前言 要想让手机app自动登录,也就是让app自己操作.所以在脚本中我们需要对app控件进行操作,那么我们需要获取控件的信息.可以使用..\android-sdk-windows\tools目录下的uiautomatorviewer.bat来获取控件相关信息 获取控件相关信息 启动uiautomatorviewer.bat 打开手机app,例如计算器,USB连接电脑,点击uiautomatorviewer左上角的安卓机器人按钮Devices Screenshot按钮刷新页面 定位元素:移动鼠标到

  • python 30行代码实现蚂蚁森林自动偷能量

    @[toc] 虽然我支付宝加了好多好友,平时有很多能量可以偷,但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化.之前通过用代码模拟手机点按的方式,实现了朋友圈自动点赞,但当时蚂蚁森林的操作流程要比朋友圈点赞复杂很多,所以当时就没有实现自动偷能量.不过我那篇博客评论下面有网友推荐了appium和uiautomator2这俩工具,最近抽空研究了下,发现用uiautomator2的话这事简单了好多,而且由于蚂蚁森林改版,连续偷能量的操作流程也简单了好多,于是乎我就实现了自动偷能量,效果如

  • Python还能这么玩之只用30行代码从excel提取个人值班表

    一.查找操作 1.Excel 模块 xlrd,xlwt,xlutils 分别负责 Excel 文件的读.写.读写转换工作! 2.openpyxl 直接可以对 Excel 文件读写! 3.pandas 直接可以对 Excel 文件读写! 二.安装 openpyxl 模块 pip install openpyxl 三.读取并筛选值班表中自己的信息 1.读取所有的值班信息: 2.由于一般情况 excel 都会有部分表格为空,保存全部 None 的 excel 行字符串数据: 3.循环全部的值班数据,将

  • 程序员的七夕用30行代码让Python化身表白神器

    转眼又到了咱们中国传统的情人节七夕了,今天笔者就带大家来领略一下用Python表白的方式.让程序员的恋人们感受一下IT人的浪漫.    一.词云制作 首先咱们可以用之前介绍过的wordcould包制作词云.wordcloud包安装十分简单.pip即可完成安装 pip install wordclould 然后需要制作一个背景图片,为了应急我用艺术字做了个七夕的图片,如果大家来不及直接图片另存为使用下图即可. 具体制作的词云的代码如下: from wordcloud import WordClou

  • 女友半夜加班发自拍 python男友用30行代码发现惊天秘密

    事情是这样的 正准备下班的python开发小哥哥 接到女朋友今晚要加班的电话 并给他发来一张背景模糊的自拍照 如下 ↓ ↓ ↓ 敏感的小哥哥心生疑窦,难道会有原谅帽 然后python撸了一段代码 分析照片 分析下来 emmm 拍摄地址居然在 XXX酒店 小哥哥崩溃之余 大呼上当 python分析照片 小哥哥将发给自己的照片原图下载下来 并使用python写了一个脚本 读取到了照片拍摄的详细的地址 详细到了具体的街道和酒店名称 引入exifread模块 首先安装python的exifread模块,

  • python只需30行代码就能记录键盘的一举一动

    目录 先看看效果 一.公共WiFi 公用电脑什么的 二.键盘记录器 三.python代码实现 1.安装pynput模块 2.脚本完整代码 3.启动脚本 4.登录126邮箱 抓取用户信息 四.安全提示 先看看效果 Like This↓ 一.公共WiFi 公用电脑什么的 在我们日常在线上工作.玩耍时,不论开电脑.登录淘宝.玩网游 统统都会用到键盘输入 在几乎所有网站,例如淘宝.百度.126邮箱等等 为了保护用户信息 登录时,输入框都是不可见的. 但是,输入框都在界面上隐藏,让我们看不到,就能真正的确

  • 利用Python抢回在蚂蚁森林逝去的能量(实现代码)

    目录 1蚂蚁森林简介 2逝川长叹 3结果展示 4Python——uiautomator2库安装 5Python代码实现 1 蚂蚁森林简介 蚂蚁森林是一项旨在带动公众低碳减排的公益项目,每个人的低碳行为在蚂蚁森林里可计为"绿色能量"."绿色能量"积累到一定程度,就可以用手机申请在生态亟需修复的地区种下一棵真树,或者在生物多样性亟需保护的地区“认领”保护权益. 蚂蚁森林在各地的生态修复项目,是由蚂蚁集团向公益机构捐赠资金,由公益机构组织种植养护等具体工作,并由当地林业部

  • Python 几行代码即可实现人脸识别

    摘要:一行代码实现人脸识别 首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图片.其中每个人一张图片,图片以人的名字命名. 接下来,你需要准备另一个文件夹,里面是你要识别的图片. 然后你就可以运行face_recognition命令了,把刚刚准备的两个文件夹作为参数传入,命令就会返回需要识别的图片中都出现了谁,一行代码足以!!! 正文: 环境要求: Ubuntu17.10 Python 2.7.14 环境搭建: 1.安装 Ubuntu17.10 > 安装步骤在这里 2.安装 Python

  • vscode写python时的代码错误提醒和自动格式化的方法

    python的代码错误检查通常用pep8.pylint和flake8,自动格式化代码通常用autopep8.yapf.black.这些工具均可以利用pip进行安装,这里介绍传统的利用pip.exe安装和在VScode中安装两种方式. [温馨提醒] 要使用flake8或要想flake8等工具起作用,前提是必须把settings.json文件中的"python.linting.enabled"值设为"true",否则即使安装了这些工具,也起不到代码的错误提醒. [传统安

  • 一些Python 5行代码的神奇操作汇总

    目录 1.古典兔子问题 2.加法计算器 3.循环问答 4.实现一个简单的服务器 5.九九乘法表1 6.九九乘法表2 7.逆序打印数字 8.生成词云 9.快速生成二维码 10.实现批量抠图 总结 Python 语言实现功能直接了当,简明扼要,今天咱们就来一起看看 Python 5 行代码的神奇操作! 1.古典兔子问题 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? def count(n): if (1 == n

  • golang不到30行代码实现依赖注入的方法

    本文介绍了golang不到30行代码实现依赖注入的方法,分享给大家,具体如下: 项目地址 go-di-demo 本项目依赖 使用标准库实现,无额外依赖 依赖注入的优势 用java的人对于spring框架一定不会陌生,spring核心就是一个IoC(控制反转/依赖注入)容器,带来一个很大的优势是解耦.一般只依赖容器,而不依赖具体的类,当你的类有修改时,最多需要改动一下容器相关代码,业务代码并不受影响. golang的依赖注入原理 总的来说和java的差不多,步骤如下:(golang不支持动态创建对

随机推荐