@[toc] Хотя я добавил много друзей на Alipay, у меня обычно много энергии для кражи, но мне пока лень сажать дерево, поэтому я думаю об автоматизации кражи энергии. Раньше, имитируя способ нажатия на мобильный телефон с кодом, это достигалосьАвтоматический круг друзей лайкает, но в то время процесс работы Муравьиного Леса был намного сложнее, чем у Моментов, поэтому автоматическое воровство энергии в то время не было реализовано. Тем не менее, некоторые пользователи сети рекомендовали два инструмента appium и uiautomator2 под моим комментарием в блоге.Недавно я потратил время на изучение и обнаружил, что использование uiautomator2 намного проще, и из-за пересмотра Ant Forest процесс непрерывной кражи энергии также намного проще. , так я реализовал автоматическую кражу энергии, эффект следующий,Полное видео нажмите здесь
Далее я представлю принцип и способ реализации.Во-первых, если вас попросят собрать энергию вручную, каков ваш процесс?
- Открыть алипай
- Открытый муравьиный лес
- Получите свою собственную энергию в первую очередь
- Перейти к следующему энергичному человеку
- собирать энергию Та
- Повторяйте 4 и 5 до тех пор, пока не останется энергии для кражи.
К счастью, с помощьюUiautomator2, который можно автоматизировать. UiAutomator – это Java-библиотека, предоставленная Google для автоматического тестирования Android. Она может получить любое управляющее свойство любого приложения на экране и выполнять над ним произвольные операции. Uiaautomator2 — это пакет интерфейса Python поверх Uiaautomator, если говорить простыми словами.Uiaautomator2 может видеть, какие элементы управления находятся на текущем экране телефона, каковы их координаты, а также может имитировать нажатия.
Установка и использование Uiaautomator2
Подробности смотрите в официальной документацииUiautomator2, метод установки очень прост, можно использовать следующую команду.
pip install --upgrade --pre uiautomator2
Если вы используете его, здесь есть несколько ям.Перед подключением мобильного телефона к компьютеру необходимо включить режим разработчика, а также включить отладку по USB и установку по USB.(как показано ниже), чтобы убедиться, что у uiautomator2 достаточно прав для управления вашим телефоном.
После первого использования uiautomator2 установит приложение ATX на ваш мобильный телефон.Откройте это приложение, и вы сможете управлять своим мобильным телефоном по беспроводной сети.
Выполнение
Как открыть Alipay и войти в Ant Forest?
Uiaautomator2 напрямую через имя пакета приложения, вызывающее приложениеd.app_start("com.eg.android.AlipayGphone")
,Что? Вы не знаете название пакета Alipay? После установки Uiaautomators2 вы можете использовать его командную строку, чтобы просмотреть имя пакета Alipay, и вы можете обратиться к его документации для получения подробной информации.
Как попасть в муравьиный лес? Uiaautomators2 обеспечивает прямой щелчок по положению текста на экране,d(text="蚂蚁森林").click()
.Поэтому рекомендуется разместить Ant Forest на домашней странице Alipay, чтобы вы могли сразу определить местонахождение Ant Forest после открытия Alipay.
собирать энергию
В настоящее время определена позиция определенной энергии, поэтому самый простой способ — отсканировать все возможные позиции энергии (как показано в красной рамке выше), а затем нажать кнопку, чтобы найти энергию, чтобы перейти к следующей. человек для продолжения зачистки.
как остановить
Как остановиться - большая проблема, потому что вышеприведенная логика имитирует щелчок, если не остановится в нужный момент, призрак знает, что нажмет за меня. После нескольких наблюдений я обнаружил, что после того, как кражи энергии нет, Alipay перескакивает на следующую страницу, и здесь мне просто нужно проверить, существует ли кнопка «вернуться в мой лес».
полный код
Полный код очень короткий:
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 строк кода, ноРекомендуется вести себя сдержанно при его использовании, не позволяйте друзьям знать, что вы зависаете и блокируете вас.