Как обойти и автоматически решить reCAPTCHA с использованием Selenium и метода авто ввода капчи

Как обойти и автоматически решить reCAPTCHA с использованием Selenium и метода авто ввода капчи

Разработали пример автоматического решения, обхода reCAPTCHA с помощью Selenium и автоматического ввода капчи.

Автоматическое решение reCAPTCHA с использованием Selenium и метода автоматического ввода капчи

В материле описывается практический пример автоматизиации решения и обхода капч Google reCAPTCHA на базе изображений (сетки 3x3 или 4x4) с помощью библиотеки Selenium и сервиса 2Captcha (обхода капчи).

Скрипт взаимодействует с reCAPTCHA: импортирует капчу, отправляет в сервис 2Captcha для решения и затем кликает.

Установка

Чтобы использовать скрипт, клонируйте репозиторий, установите необходимые зависимости и запустите пример кода, как это сделать:

# Клонируйте репозиторий
git clone git@github.com:2captcha/selenium-recaptcha-solver-using-grid.git
cd selenium-recaptcha-solver-using-grid

# Установите зависимости
pip install -r requirements.txt

# Запустите скрипт
python main.py

Конфигурация

Для работы со скриптом нужен ключ API от 2Captcha. Установите переменную окружения APIKEY по следующему примеру:

export APIKEY=your_api_key

Как это работает

Скрипт использует метод грид для решения reCAPTCHA. Описание процесса:

  1. Импорт капчи. С помощью JavaScript-кода, на странице извлекаются параметры капчи, включая изображение капчи, размер сетки и текстовое описание задания.
  2. Отправка данных в 2Captcha: Изображение отправляется в сервис 2Captcha, и решается с помощью метода сетки (определяются ячейки, содержащие правильные объекты).
  3. Клики: После получения решения, которое содержит номера ячеек для клика, Selenium имитирует взаимодействие с reCAPTCHA, кликая по указанным ячейкам. Затем скрипт нажимает кнопку Проверить, чтобы завершить задачу.

Пример успешного ответа от скрипта:

{
  "rows": 3,
  "columns": 3,
  "type": "GridTask",
  "comment": "Выберите все изображения, где есть пешеходные переходы. Когда изображения закончатся, нажмите 'Подтвердить'.",
  "body": "XXXXXXXX"
}

Пример ответа после решения капчи:

{ "status": 1, "data": "click:3/6/8", "id": "XXXXXXXX" }

Объяснение результата click:3/6/8

В ответе click:3/6/8 числа обозначают номера ячеек, по которым нужно кликнуть. Например, ответ click:3/6/8 означает, для решения нужно кликнуть по ячейкам капчи под номерами 3, 6 и 8. Нумерация ячеек начинается с верхнего левого угла, и идет слева направо, строка за строкой.

На изображении ниже показано, какие ячейки нужно выбрать для ответа click:3/6/8.

Автоматическое решение reCAPTCHA с использованием Selenium и метода кликов

Таким образом, для ответа click:3/6/8 нужно кликнуть по ячейкам в третьей, шестой и восьмой позициях.

Обычно для полного решения reCAPTCHA нужно пройти 1-5 задач, но в более сложных случаях может быть несколько дополнительных шагов.

Особенности примера

  • Selenium WebDriver: Взаимодействует с браузером и манипулирует элементами reCAPTCHA на странице.
  • 2Captcha API: Сервис 2Capthca обеспечивает высокую скорость решений.
  • Отслеживание обновления изображений: Раздельная логика для изображений с размером сетки 3x3, и 4x4. Для изображений с размером сетки 3x3 реализованна логика отслеживания обновлений задания.
  • Модульный дизайн с разделением логики на вспомогательные классы для упрощения обслуживания кода и дальнейшего расширения.
  • Эффективная обработка сообщений об ошибках reCAPTCHA, используя пользовательскую обработку ошибок.

Преимущества

  • Проверка без токенов: Вам не нужно вручную управлять или внедрять токен на странице. Этот метод имитирует поведение человека.
  • Упрощенная логика: Этот подход использует встроенную в reCAPTCHA проверку, что упрощает процесс работы с токенами.

Основное преимущество этого подхода в том, что вам не нужно разбираться с тем, как применить токен на странице. Вместо этого вы просто кликаете по правильным квадратам и нажимаете кнопку Проверить, оставляя логике reCAPTCHA проверку ответа.

Некоторые сайты могут добавлять дополнительные меры безопасности, такие как отслеживание данных или сложная логика проверки токенов, что затрудняет обход reCAPTCHA с использованием токенов. В таких случаях метод кликов является идеальным решением.

Недостатки

  • Увеличенная сложность: Этот метод требует большего объема кода и дополнительного времени для обработки всех взаимодействий.
  • Скорость: Затраты и время, необходимые для решения капчи, могут варьироваться в зависимости от сложности каждого задания.
  • Зависимость от браузерной автоматизации: Этот подход требует автоматизации браузера (например, Puppeteer) для правильного выполнения логики обхода reCAPTCHA. Автоматизация обеспечивает корректное применение токена.

Обработка ошибок

  • ERROR_CAPTCHA_UNSOLVABLE: Иногда капча слишком сложная для 2Captcha, и возникает ошибка. В таком случае рекомендуется реализовать логику повторного запроса или обработки ошибки.
  • Блокировка reCAPTCHA: Если вы делаете слишком много попыток с одного IP-адреса, reCAPTCHA может временно заблокировать ваши запросы. Это можно решить, изменив IP-адрес или подождав несколько минут. При блокировке вы увидите следующее сообщение: Повторите попытку позже. Похоже, что ваш компьютер или сеть отправляют автоматичекие запросы. В целях безопасности пользователей мы вынуждены отклонить ваш запрос.
Error Handling

Чтобы изменять IP можно использовать сервис резидентских прокси.

Полезные ссылки

Если работаете с JavaScript, у нас также есть похожий пример, использующий решатель капчи на JavaScript вместе с Puppeteer. Пример можно найти в репозитории - Решатель reCAPTCHA с использованием 2Captcha и Puppeteer.