Решение reCAPTCHA V2 в Playwright через клики
Этот репозиторий показывает, как автоматизировать прохождение image-based challenge reCAPTCHA (сетки 3x3 или 4x4) с помощью solver'а reCAPTCHA, библиотеки Playwright и сервиса 2Captcha. Скрипт программно взаимодействует с reCAPTCHA, извлекает challenge, отправляет его в 2Captcha для обработки, а затем имитирует клики пользователя по полученному решению.
Если вы работаете с Python, у нас есть похожий пример на Python и Selenium. Он доступен в репозитории reCAPTCHA Solver Using 2Captcha and Selenium.
Установка и запуск
Чтобы использовать этот скрипт, клонируйте репозиторий, установите зависимости и запустите пример:
# Clone the repository
git clone [email protected]/2captcha/playwright-recaptcha-solver-using-grid.git
cd playwright-recaptcha-solver-using-grid
# Install dependencies
npm install
# Run the script
npm run start
Настройка
Для работы скрипта нужно настроить API key от 2Captcha. Задайте переменную окружения APIKEY:
export APIKEY=your_api_key
Также можно указать значение
APIKEYнапрямую в коде. Для этого измените API key в файлеcaptchaSolver.js, строка 7. Найдите строку, где задаётся API key, и замените текущее значение на ваш реальный ключ. Это удобно для быстрого тестирования или если переменные окружения недоступны. Но для production-окружения рекомендуется использовать переменные окружения, так как это безопаснее.
Получить API key можно в вашем аккаунте 2Captcha.
Как это работает
Этот скрипт использует метод Grid для решения reCAPTCHA. Процесс выглядит так:
- Извлечение challenge: исходное изображение captcha и нужные параметры извлекаются со страницы.
- Отправка данных в 2Captcha: данные изображения отправляются в 2Captcha, где captcha решается методом grid.
- Клики по решению: после получения ответа со списком номеров ячеек Playwright-скрипт взаимодействует с виджетом reCAPTCHA и кликает по нужным ячейкам. После этого нажимается кнопка "Verify", чтобы завершить challenge.
Пример успешного ответа от скрипта извлечения:
{
rows: 3,
columns: 3,
type: 'GridTask',
comment: 'Select all images with crosswalks Click verify once there are none left',
body: 'iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAAAXNSR0...'
}
Пример ответа после решения reCAPTCHA:
{ status: 1, data: 'click:3/6/8', id: '77704464585' }
В ответе click:3/6/8 числа показывают, по каким ячейкам нужно кликнуть. Ответ click:3/6/8 означает, что нужно нажать на квадраты captcha с номерами 3, 6 и 8. Нумерация начинается с верхнего левого угла. На скриншоте ниже можно наглядно увидеть, какие квадраты соответствуют ответу click:3/6/8.
Обычно для успешного прохождения captcha нужно решить примерно 1–5 challenge, но в более сложных случаях задач может быть больше.
Преимущества этого подхода
- Проверка без токена: не нужно вручную управлять токеном или внедрять его в веб-страницу. Вместо этого мы имитируем поведение пользователя и кликаем по нужным областям.
- Упрощённая логика: используется встроенный механизм проверки reCAPTCHA, поэтому логика работы с токеном становится проще.
Главное преимущество этого подхода в том, что вам не нужно разбираться, как применить токен на странице. Здесь достаточно кликнуть по нужным квадратам, нажать кнопку подтверждения, и дальше встроенная логика проверки ответа reCAPTCHA отрабатывает сама.
Решение reCAPTCHA через токен может быть заметно сложнее: в целях безопасности сайты могут использовать дополнительные параметры, например datas, или внедрять сложную логику проверки токена. Подход с кликами особенно удобен в случаях, когда обход reCAPTCHA через токен намеренно усложнён.
Недостатки этого подхода
- Повышенная сложность: требуется больше кода и больше времени на обработку всех взаимодействий.
- Плавающие стоимость и скорость: стоимость и время решения captcha могут отличаться в зависимости от сложности конкретного image challenge.
- Зависимость от browser automation: для корректной работы кода reCAPTCHA требуется browser automation. Автоматизация обеспечивает нужную логику применения токена reCAPTCHA и помогает корректно отработать весь процесс.
Возможные ошибки
- "ERROR_CAPTCHA_UNSOLVABLE": иногда captcha может оказаться слишком сложной для 2Captcha, и сервис вернёт ошибку. На этот случай стоит предусмотреть обработку ошибки: повторную попытку или escalation.
- Блокировка со стороны reCAPTCHA: если с одного IP выполняется слишком много попыток, reCAPTCHA может временно блокировать запросы. В таком случае может помочь смена IP или ожидание в течение нескольких минут. При временном бане со стороны reCAPTCHA вы получите следующее сообщение:
Try again later. Your computer or network may be sending automated queries. To protect our users, we can't process your request right now...
Чтобы сменить IP-адрес, можно использовать residential proxy.
Запланированные возможности
- Автоматическая обработка обновления изображения при смене captcha.
- Использование CSS-селекторов вместо абсолютных координат для более надёжных кликов.
- Улучшенная обработка ошибок, особенно для "ERROR_CAPTCHA_UNSOLVABLE".