Загрузка...

Emunium - модуль для имитации поведения человека в Selenium/Pyppeteer/Playwright и т.д.

Тема в разделе Python создана пользователем Maehdakvan 23 ноя 2023. (поднята Пятница в 19:43) 1720 просмотров

Загрузка...
  1. Maehdakvan
    Maehdakvan Автор темы 23 ноя 2023 70 14 ноя 2020

    Здарова, кодеры и автоматизаторы!

    Снова на связи ваш покорный слуга, и да, сегодня мы говорим про автоматизацию! Ну а как иначе? Кто будет жить эту жизнь, пока мы тонем в рутине? Так вот, чтобы вынырнуть из этого болота, ловите свежачок...

    Emunium - мощный Python модуль, который научит ваших ботов вести себя как люди в Selenium, Pyppeteer и Playwright!

    [IMG]

    Emunium — это ваш секретный ингредиент для автоматизации всего и вся, будь то десктопные приложения или браузеры. С ним ваши скрипты будут двигать мышкой, кликать, печатать и скроллить так, будто за компьютером сидит живой человек. А это значит - меньше подозрений и больше успеха в ваших автоматизированных приключениях!

    Что умеет Emunium?

    • Реалистичные движения мыши: Забудьте про телепортацию курсора! Emunium плавно ведет мышку к цели, добавляя случайные отклонения для пущей убедительности.
    • Разнообразные клики: Левый, правый, средний, двойной - любой каприз! Плюс, Emunium умеет варьировать точность клика, чтобы совсем уж не палиться.
    • "Человеческий" ввод текста: Никакой мгновенной печати! Символы вводятся с регулируемой скоростью и случайными задержками, как будто вы сами стучите по клаве.
    • Плавный скроллинг: Прокрутка страниц теперь выглядит естественно, без резких рывков и пропусков.
    • Поиск элементов по изображениям (Standalone режим): Нужно найти кнопку или поле ввода, но селекторы не работают? Просто покажите Emunium картинку, и он найдет все похожие элементы на экране!
    • OCR - Оптическое Распознавание Символов (Standalone режим): Хотите найти текст на экране, даже если это картинка? Emunium с OCR (EasyOCR под капотом) легко справится и с этим!


    Начинаем колдовать! Установка:

    Всё как обычно, проще простого:
    Код
    pip install emunium

    Примеры использования:

    Для браузерных гуру - Selenium:
    Python
    from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from emunium import EmuniumSelenium driver = webdriver.Chrome() wait = WebDriverWait(driver, 10) emunium = EmuniumSelenium(driver) driver.get('https://duckduckgo.com/') element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[data-state="suggesting"]'))) emunium.type_at(element, 'Автоматизация поиска') # Имитируем ввод текста submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[aria-label="Search"]'))) emunium.click_at(submit) # Кликаем на кнопку поиска driver.quit()
    Для любителей асинхронщины - Pyppeteer:
    Python
    import asyncio from pyppeteer import launch from emunium import EmuniumPpeteer async def main(): browser = await launch(headless=False) # Запуск браузера (не в headless режиме для наглядности) page = await browser.newPage() emunium = EmuniumPpeteer(page) await page.goto('https://duckduckgo.com/') element = await page.waitForSelector('[data-state="suggesting"]') await emunium.type_at(element, 'Автоматизация поиска') # Имитируем ввод текста submit = await page.waitForSelector('[aria-label="Search"]') await emunium.click_at(submit) # Кликаем на кнопку поиска await browser.close() asyncio.run(main())
    Для ценителей скорости и мощи - Playwright:
    Python
    import asyncio from playwright.async_api import async_playwright from emunium import EmuniumPlaywright async def main(): async with async_playwright() as p: browser = await p.chromium.launch(headless=False) # Запуск браузера (не в headless режиме) page = await browser.new_page() emunium = EmuniumPlaywright(page) await page.goto('https://duckduckgo.com/') element = await page.wait_for_selector('[data-state="suggesting"]') await emunium.type_at(element, 'Автоматизация поиска') # Имитируем ввод текста submit = await page.wait_for_selector('[aria-label="Search"]') await emunium.click_at(submit) # Кликаем на кнопку поиска await browser.close() asyncio.run(main())
    Для тех, кто любит по-старинке - Standalone режим (без браузера):
    Python
    from emunium import Emunium emunium = Emunium() # Создаем экземпляр Emunium для standalone режима elements = emunium.find_elements('field.png', min_confidence=0.8) # Ищем поле ввода по картинке 'field.png' emunium.type_at(elements[0], 'Автоматизация поиска') # Вводим текст в найденное поле elements = emunium.find_elements('search_icon.png', min_confidence=0.8) # Ищем иконку поиска по картинке 'search_icon.png' emunium.click_at(elements[0]) # Кликаем по найденной иконке

    Что тут происходит:

    Во всех примерах мы делаем одно и то же, но разными инструментами:

    • Заходим на поисковик DuckDuckGo.
    • Находим поле ввода поискового запроса.
    • Имитируем ввод текста запроса "Автоматизация поиска" буква за буквой, как это сделал бы человек.
    • Находим кнопку "Поиск".
    • Кликаем по кнопке, имитируя человеческое нажатие.

    Вся магия заключается в методах Emunium. Они не просто выполняют команды, а двигают курсор мыши и печатают текст! Именно поэтому обнаружить автоматизацию, использующую Emunium, становится на порядок сложнее, чем при использовании стандартных методов Selenium, Pyppeteer или Playwright. Естественно, если вы подключены по CDP, и есть проверка на JS eval то может и обнаружить. Но Standalone режим ещё лучше в этом плане, хоть и сложнее в реализации.


    В сухом остатке:

    Emunium — это ваш билет в мир незаметной и эффективной автоматизации в Selenium, Pyppeteer и Playwright. С ним ваши боты станут неотличимы от людей для самых продвинутых антибот систем!


    Хотите узнать больше? Загляните на GitHub репозиторий Emunium!

    И да, не забудьте про мой старый добрый проект selenium-dolphin. В связке с Emunium - это просто бомба! ;)
     
    23 ноя 2023 Изменено
    1. Lelouch
      Maehdakvan, либа забирает мою мышку?
    2. Maehdakvan Автор темы
      Lelouch, ваша мышка в безопасности, доверьтесь либе, а так - не забирает, а вы ей отдаёте по идее
    3. LordS_Inactive
      Maehdakvan, Подытожим: Emunium делает автоматизацию в Selenium, Pyppeteer и Playwright более человекоподобной и незаметной для антиботов.

      Автоматизацию палят не так, в большинстве случаев. А по CDP, который видно в этих модулях.
      27 авг 2024 Изменено
  2. ChatGPT
    ChatGPT 23 ноя 2023 2257 14 мар 2023
    Maehdakvan Привет! Очень интересный модуль, спасибо за информацию. Emunium действительно предоставляет возможность имитировать поведение человека при автоматизации в Selenium. Это может быть полезно для обхода антиботов и делает автоматизацию более незаметной. Я также заметил, что в примере использования модуля Emunium показано, как имитировать перемещение курсора мыши, клики с вариациями точности попадания, тихий ввод текста с паузами и плавную прокрутку страницы. Это действительно помогает сделать автоматизацию более естественной. Спасибо за ссылку на GitHub, я обязательно ознакомлюсь с подробностями. И спасибо за рекомендацию по использованию модуля Emunium в связке с selenium-dolphin, я обязательно посмотрю на это.
     
  3. illumeqs
    illumeqs 2 янв 2024 Заблокирован(а) 3 2 янв 2024
  4. cidll
    cidll 15 фев 2024 Заблокирован(а) 1055 5 сен 2021
    Настоящий программист тратит времени на автоматизацию задачи в несколько раз больше, чем сделал бы руками
     
    1. Maehdakvan Автор темы
      cidll, в 80% случаев это не так, тут уж я явно выиграл во времени тысячекратно
    2. Lelouch
      cidll, бывает замечаю, что делал прогу дольше чем руками бы сам отчекал
    3. Maehdakvan Автор темы
      Lelouch, так прогу делать надо не на одноразовое действие. какой-нибудь чекер/авторег в промышленных масшатабах например это гораздо более осмысленно, чем сделать какой-нибудь парсер информации чего-то на один разок чисто из-за того, что самому структурировать лень (хотя прогу писать не лень)
  5. Painer_inactive8202760
    Прикольно
     
  6. kkinkuk
    kkinkuk 17 мар 2024 0 17 мар 2024
    Есть многопоток?
     
    1. Maehdakvan Автор темы
      kkinkuk, Нет конечно, каким боком? Только если Git Actions юзать
  7. Reversiousfsdfsd
    Reversiousfsdfsd 27 мар 2024 Заблокирован(а) 418 27 мар 2024
    Полезно, если нужно обойти сложную проверку на ботов в эмуляции.
     
  8. Nik555tv666
    Модуль крутой, но я не понимаю, какие постоянные рутинные действия можно выполнять в браузере ?
    и ещё, можно ли в selenium задать определённые координаты сайта для щелчка?
     
    1. Maehdakvan Автор темы
      Nik555tv666, Рутинные действия это как минимум заполнение форм и парсинг информации. А задать определенные координаты можно с помощью параметров offset_y и offset_y то есть смещение по X и Y от центра элемента, подробнее это расписано на гите
      3 май 2024 Изменено
Top
JavaScript error: