30 строк кода для автоматической кражи энергии из муравьиного леса

Java

@[toc] Хотя я добавил много друзей на Alipay, у меня обычно много энергии для кражи, но мне пока лень сажать дерево, поэтому я думаю об автоматизации кражи энергии. Раньше, имитируя способ нажатия на мобильный телефон с кодом, это достигалосьАвтоматический круг друзей лайкает, но в то время процесс работы Муравьиного Леса был намного сложнее, чем у Моментов, поэтому автоматическое воровство энергии в то время не было реализовано. Тем не менее, некоторые пользователи сети рекомендовали два инструмента appium и uiautomator2 под моим комментарием в блоге.Недавно я потратил время на изучение и обнаружил, что использование uiautomator2 намного проще, и из-за пересмотра Ant Forest процесс непрерывной кражи энергии также намного проще. , так я реализовал автоматическую кражу энергии, эффект следующий,Полное видео нажмите здесь

在这里插入图片描述

Далее я представлю принцип и способ реализации.Во-первых, если вас попросят собрать энергию вручную, каков ваш процесс?

  1. Открыть алипай
  2. Открытый муравьиный лес
  3. Получите свою собственную энергию в первую очередь
  4. Перейти к следующему энергичному человеку
  5. собирать энергию Та
  6. Повторяйте 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 строк кода, ноРекомендуется вести себя сдержанно при его использовании, не позволяйте друзьям знать, что вы зависаете и блокируете вас.