30 行代码实现蚂蚁森林自动收能量(附送源码)
点击上方 IT牧场 ,选择 置顶或者星标技术干货每日送达!
blog.csdn.net/article/details/113734855
推荐:https://www.xttblog.com/?p=5151
虽然我支付宝加了好多好友,平时有很多能量可以“偷”,但由于太懒,至今也没中出多少树,所以心心念念把偷能量这事自动化。之前通过用代码模拟手机点按的方式,实现了朋友圈自动点赞。但当时蚂蚁森林的操作流程要比朋友圈点赞复杂很多,所以当时就没有实现自动偷能量。
后来有不少网友在群里和评论区给我推荐了 appium 和 uiautomator2 这两款工具,最近抽空研究了下,发现用 uiautomator2 的话这事简单了好多,而且由于蚂蚁森林改版,连续偷能量的操作流程也简单了好多,于是乎我就实现了自动偷能量,效果如下,完整视频戳见下方。
接下来介绍下原理和实现方式,首先如果让你手动去收能量的话,你是什么流程?
打开支付宝;
打开蚂蚁森林;
先收取自己的能量;
跳到下一个有能量的人那边;
收取 ta 的能量
重复 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):breakcnt += 1
print("###结束###")
# d.app_stop("com.eg.android.AlipayGphone") # 退出支付宝
# 业余草,公众号
结语
抛开注释,真的不到30行代码,但建议用的时候还是低调点,别让你的好友知道你开了挂然后拉黑你。
干货分享
最近将个人学习笔记整理成册,使用PDF分享。关注我,回复如下代码,即可获得百度盘地址,无套路领取!
•001:《Java并发与高并发解决方案》学习笔记;•002:《深入JVM内核——原理、诊断与优化》学习笔记;•003:《Java面试宝典》•004:《Docker开源书》•005:《Kubernetes开源书》•006:《DDD速成(领域驱动设计速成)》•007:全部•008:加技术群讨论
近期热文
•LinkedBlockingQueue vs ConcurrentLinkedQueue•解读Java 8 中为并发而生的 ConcurrentHashMap•Redis性能监控指标汇总•最全的DevOps工具集合,再也不怕选型了!•微服务架构下,解决数据库跨库查询的一些思路•聊聊大厂面试官必问的 MySQL 锁机制
关注我
喜欢就点个"在看"呗^_^
30 行代码实现蚂蚁森林自动收能量(附送源码)相关推荐
- 30 行Python代码实现蚂蚁森林自动收能量(附送源码)
公众号 "菜鸟学Python", 设为 "星标" 带你一起学Python 编辑:业余草 blog.csdn.net/article/details/113734 ...
- 好厉害!30 行代码实现蚂蚁森林自动收能量
点击上方蓝色"终端研发部",选择"设为星标" 学最好的别人,做最好的我们 虽然我支付宝加了好多好友,平时有很多能量可以"偷",但由于太懒,至 ...
- 30 行代码实现蚂蚁森林自动“偷”能量
作者 | xindoo 来源 | CSDN 博客,已获作者授权 虽然我支付宝加了好多好友,平时有很多能量可以"偷",但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化. ...
- 30 行代码实现蚂蚁森林自动偷能量
点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 A friend who understands your tea ...
- 30行Python代码实现蚂蚁森林自动偷能量(附源码)
虽然我支付宝加了好多好友,平时有很多能量可以偷,但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化.之前通过用代码模拟手机点按的方式,实现了 朋友圈自动点赞,但当时蚂蚁森林的操作流程要比朋 ...
- 蚂蚁森林自动收能量的最新脚本
环境必须是安卓7.0以上版本.中文界面. 安装软件,执行Auto.js代码.完成.注意自启动,锁定后台,无障碍服务,悬浮窗等权限允许. 注意需要把脚本和图片放到执行文件夹的同一目录下. 首先所有资料链 ...
- 苹果 python蚂蚁森林自动收能量_GitHub - dxp432/adb_python_alipay_AntForest: 蚂蚁森林自动收取能量、偷取能量、浇水(使用adb、python)...
蚂蚁森林自动收取能量.偷取能量.浇水 蚂蚁森林自动收取能量.偷取能量.浇水(使用adb.python)adb_python_alipay_AntForest 涉及到的技术: 1.python 2.ad ...
- 30行Python代码实现蚂蚁森林自动偷能量
虽然我支付宝加了好多好友,平时有很多能量可以偷,但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化.之前通过用代码模拟手机点按的方式,实现了 朋友圈自动点赞,但当时蚂蚁森林的操作流程要比朋 ...
- 苹果 python蚂蚁森林自动收能量_Python自动化收取蚂蚁森林能量,不错过暗恋的她...
作者 | 锅g头 来源 | Crossin的编程教室最近在家远程工作,结果作息更混乱了 ,早上起不来,导致我蚂蚁森林能量天天被偷,严重影响我沙漠造树"大业" .于是我决定用pyth ...
最新文章
- php truepath,php – 为什么switch(true)具有比if()elseif()更小的NPath复杂度?
- linux中ed编辑器手册,脚本编辑器 - Navicat 15 for Linux 产品手册
- 天猫双11期间,阿里数据中心将由机器人完成巡检
- 计算机系统win7安装教程,惠普EliteDesk 705 G3电脑安装win7系统方法
- 前端学习(3082):vue+element今日头条管理-页面布局
- 代码同时托管到github和git.oschina.net
- linux 构造函数 throw,在自定义异常的方法/构造函数签名中带和不带throw()的C++...
- 两款新iPhoneX终于要开始生产了,网友的反应却出人意料
- 台湾厂商:大陆投资DRAM工厂可能破坏全球市场
- zz java compare 接口
- SQL语句基本增删改查操作总结
- html5video拼接屏一部分黑屏,拼接屏常见问题与解决方法
- uefi启动服务器系统安装win7系统教程,uefi引导gpt安装win7教程
- 人工智能与算法学习总结报告!(珍藏版)
- SpringBoot与Mysql
- 这些常见面食的加工机械你见过吗?
- docker 管理和创建neo4j数据库
- 推荐几款常用的性能测试工具
- 可编程计算组件-Apace实时数据库产品
- win10使用代理软件后,一些软件连不上网
热门文章
- 爬虫学习进阶:获取百度指数历史数据!准备好小本本了吗?
- 比较Perl、PHP、Python、Java和Ruby
- PTA新浪微博热门话题(题面毒瘤)
- 请问在 1 到 2020 中,有多少个数既是 4 的整数倍,又是 6 的整数倍。
- github self-hosted runner 添加与启动
- idea里面解决jsp,html,xml黄色背景的方法
- python基金比较上机题_使用python筛选基金
- kali虚拟机安装提示安装系统步骤失败
- L2-016 愿天下有情人都是失散多年的兄妹 (25 分)(C语言)(并查集)(dfs)(测试点坑)
- vue使用报错记录(cli4):[vue/valid-v-for] Custom elements in iteration require ‘v-bind:key‘ direc