Как обойти и автоматически решить reCAPTCHA с использованием Puppeteer и метода авто ввода капчи
Разработали пример автоматического решения, обхода reCAPTCHA с помощью Puppeteer и автоматического метода ввода капчи.
Автоматическое решение reCAPTCHA с использованием Puppeteer и метода автоматического ввода капчи
В материле описывается практический пример автоматизиации решения и обхода капч Google reCAPTCHA на базе изображений (сетки 3x3 или 4x4) с помощью библиотеки Puppeteer и сервиса 2Captcha (обхода капчи).
Скрипт взаимодействует с reCAPTCHA: импортирует капчу, отправляет в сервис 2Captcha для решения и затем кликает.
Установка
Чтобы использовать скрипт, клонируйте репозиторий, установите необходимые зависимости и запустите пример кода, как это сделать:
# Клонируйте репозиторий
git clone git@github.com/2captcha/puppeteer-recaptcha-solver-using-clicks.git
cd puppeteer-recaptcha-solver-using-clicks
# Установите зависимости
npm install
# Запустите скрипт
npm run start
Конфигурация
Для работы со скриптом нужен ключ API от 2Captcha. Установите переменную окружения APIKEY
по следующему примеру:
export APIKEY=your_api_key
Как это работает
Скрипт использует метод грид для решения reCAPTCHA. Описание процесса:
- Импорт капчи. С помощью JavaScript-кода, на странице извлекаются параметры капчи, включая изображение капчи, размер сетки и текстовое описание задания.
- Отправка данных в 2Captcha: Изображение отправляется в сервис 2Captcha, и решается с помощью метода сетки (определяются ячейки, содержащие правильные объекты).
- Клики: После получения решения, которое содержит номера ячеек для клика, Puppeteer имитирует взаимодействие с 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 задач, но в более сложных случаях может быть несколько дополнительных шагов.
Преимущества
- Проверка без токенов: Вам не нужно вручную управлять или внедрять токен на странице. Этот метод имитирует поведение человека.
- Упрощенная логика: Этот подход использует встроенную в reCAPTCHA проверку, что упрощает процесс работы с токенами.
Основное преимущество этого подхода в том, что вам не нужно разбираться с тем, как применить токен на странице. Вместо этого вы просто кликаете по правильным квадратам и нажимаете кнопку Проверить
, оставляя логике reCAPTCHA проверку ответа.
Некоторые сайты могут добавлять дополнительные меры безопасности, такие как отслеживание данных или сложная логика проверки токенов, что затрудняет обход reCAPTCHA с использованием токенов. В таких случаях метод кликов является идеальным решением.
Недостатки
- Увеличенная сложность: Этот метод требует большего объема кода и дополнительного времени для обработки всех взаимодействий.
- Скорость: Затраты и время, необходимые для решения капчи, могут варьироваться в зависимости от сложности каждого задания.
- Зависимость от браузерной автоматизации: Этот подход требует автоматизации браузера (например, Puppeteer) для правильного выполнения логики обхода reCAPTCHA. Автоматизация обеспечивает корректное применение токена.
Обработка ошибок
ERROR_CAPTCHA_UNSOLVABLE
: Иногда капча слишком сложная для 2Captcha, и возникает ошибка. В таком случае рекомендуется реализовать логику повторного запроса или обработки ошибки.- Блокировка reCAPTCHA: Если вы делаете слишком много попыток с одного IP-адреса, reCAPTCHA может временно заблокировать ваши запросы. Это можно решить, изменив IP-адрес или подождав несколько минут. При блокировке вы увидите следующее сообщение:
Повторите попытку позже. Похоже, что ваш компьютер или сеть отправляют автоматичекие запросы. В целях безопасности пользователей мы вынуждены отклонить ваш запрос.
Чтобы изменять IP можно использовать сервис резидентских прокси.
Полезные ссылки
Если работаете с Python, у нас также есть похожий пример, использующий решатель капчи на Python вместе с Selenium. Пример можно найти в репозитории - Решатель reCAPTCHA с использованием 2Captcha и Selenium.