Как обойти и автоматически решить 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. Описание процесса:
- Импорт капчи. С помощью JavaScript-кода, на странице извлекаются параметры капчи, включая изображение капчи, размер сетки и текстовое описание задания.
- Отправка данных в 2Captcha: Изображение отправляется в сервис 2Captcha, и решается с помощью метода сетки (определяются ячейки, содержащие правильные объекты).
- Клики: После получения решения, которое содержит номера ячеек для клика, 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
.
Таким образом, для ответа 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-адрес или подождав несколько минут. При блокировке вы увидите следующее сообщение:
Повторите попытку позже. Похоже, что ваш компьютер или сеть отправляют автоматичекие запросы. В целях безопасности пользователей мы вынуждены отклонить ваш запрос.
Чтобы изменять IP можно использовать сервис резидентских прокси.
Полезные ссылки
Если работаете с JavaScript, у нас также есть похожий пример, использующий решатель капчи на JavaScript вместе с Puppeteer. Пример можно найти в репозитории - Решатель reCAPTCHA с использованием 2Captcha и Puppeteer.