当前位置:网站首页>30行代码实现蚂蚁森林自动偷能量
30行代码实现蚂蚁森林自动偷能量
2022-08-09 12:23:00 【xindoo】
虽然我支付宝加了好多好友,平时有很多能量可以偷,但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化。之前通过用代码模拟手机点按的方式,实现了 朋友圈自动点赞,但当时蚂蚁森林的操作流程要比朋友圈点赞复杂很多,所以当时就没有实现自动偷能量。不过我那篇博客评论下面有网友推荐了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):
break
cnt += 1
print("###结束###")
# d.app_stop("com.eg.android.AlipayGphone") # 退出支付宝
结语
抛开注释,真的不到30行代码,但建议用的时候还是低调点,别让你的好友知道你开了挂然后拉黑你。
边栏推荐
- h264协议
- Resolved IndentationError: unindent does not match any oute r indentation Level
- 荣耀携手Blue Yonder,加快企业战略增长
- 1小时直播招募令:行业大咖干货分享,企业报名开启丨量子位·视点
- 西湖大学教授怎么看AI制药革命?|量子位智库圆桌实录
- MySQL5.6到8.0的账号迁移
- 一甲子,正青春,CCF创建六十周年庆典在苏州举行
- AI basketball referee, walking is special, ask harden care don't care
- 合并两个有序列表
- ViewPager fragments of nested data blank page abnormal problem analysis
猜你喜欢
注:检测到当前使用的ADB不是HBuilder内置或自定义ADB:PID为:9544进程名称为:adb.exe 路径为:c:\users\administrator\appdata\local\and
曼城推出可检测情绪的智能围巾,把球迷给整迷惑了
工作任务统计
ABAP interview questions: how to use the System CALL interface of the ABAP programming language, direct execution ABAP server operating System's shell command?
生成上传密钥和密钥库
Go Affair, How to Become a Gopher and Find a Go Job in 7 Days, Part 1
Intra-group reverse order adjustment of K nodes
Flutter入门进阶之旅(六)Layout Widget
Two minutes recording can pass by second language!The volcano how to practice and become voice tone reproduction technology?
ViewPager fragments of nested data blank page abnormal problem analysis
随机推荐
新起之秀 DPU,正在掀起数据中心变革!
WeChat side: what is consistent hashing, usage scenarios, and what problems does it solve?
The grep command Shell regular expressions, the three musketeers
Go Affair, How to Become a Gopher and Find a Go Job in 7 Days, Part 1
Data Mining-05
The FFmpeg library is configured and used on win10 (libx264 is not configured)
Common gadgets of Shell (sort, uniq, tr, cut)
手写大根堆
用场景定义硬件,英码科技破解“边缘计算”密码
ViewPager fragments of nested data blank page abnormal problem analysis
JVM内存泄漏和内存溢出的原因
大佬们,请教一下,我看官方文档中,sqlserver cdc只支持2012版之后的,对于sqlser
Flutter入门进阶之旅(五)Image Widget
2022年非一线IT行业就业前景?
Nature:猪死亡1小时后,器官再次运转
在北极都可以穿短袖了,温度飙升至32.5℃
苹果Meta都在冲的Pancake技术,中国VR团队YVR竟抢先交出产品答卷
脱光衣服待着就能减肥,当真有这好事?
数据挖掘-06
900页数学论文证明旋转的黑洞不会爆炸,丘成桐:30多年来广义相对论首次重大突破...