Эта статья была полезной?
Как обойти rotate капчу
Введение
Это руководство предназначено для разработчиков, которые автоматизируют взаимодействие с сайтами, защищёнными поворотной капчей (Rotate CAPTCHA). Мы разберём, как интегрировать решение таких задач через API 2Captcha, какие параметры критичны для успеха и как обрабатывать типичные сценарии.
Что вы получите:
- Понимание работы Rotate CAPTCHA и её отличий от других типов
- Пошаговый алгоритм отправки задачи и получения ответа
- Готовую структуру кода с местами для вашей бизнес-логики
- Информацию об отладке, обработке ошибок и системе отчетности
Необходимые инструменты:
- Python 3.8 или выше
- Библиотеки:
requests,aiohttp(для асинхронных примеров) - API-ключ от 2Captcha
- Изображение капчи в формате Base64
1. Общие сведения о Rotate CAPTCHA
1.1. Описание технологии
Rotate CAPTCHA предлагает пользователю повернуть изображение (часто объект или иконку) в правильное положение. В отличие от текстовых или слайдер-капч, здесь требуется определить угол поворота, кратный определённому шагу (например, 45° или 60°).
1.2. Параметры задачи
| Параметр | Обязательный | Описание |
|---|---|---|
type |
Да | Всегда RotateTask |
body |
Да | Изображение капчи в Base64 |
angle |
Нет | Шаг поворота в градусах (например, 60 для 6 позиций) |
comment |
Нет | Подсказка для исполнителя, уточняющая задачу |
1.3. Ограничения и важные замечания
- Максимальный размер изображения: 600 КБ
- Время решения: обычно 5–15 секунд, но может увеличиваться при высокой нагрузке
- Точность зависит от качества изображения и чёткости инструкции в
comment
2. Подготовка окружения
2.1. Установка зависимостей
bash
pip3 install requests
pip3 install aiohttp # для асинхронных примеров
2.2. Получение API-ключа
- Зарегистрируйтесь на 2Captcha
- Перейдите в раздел настроек аккаунта
- Скопируйте API-ключ
Рекомендуется хранить ключ в переменной окружения:
bash
export APIKEY="ваш_ключ_здесь"
2.3. Подготовка изображения
Конвертируйте изображение капчи в Base64:
bash
base64 image.jpg > image_base64.txt
Проверьте, что полученная строка не содержит переносов строк и укладывается в лимит 600 КБ.
3. Анализ страницы и извлечение капчи
3.1. Определение капчи на странице
Rotate CAPTCHA обычно отображается как интерактивный виджет с изображением и элементами управления поворотом.
3.2. Извлечение изображения
В зависимости от реализации сайта, изображение может быть:
- Вставлено как
<img src="data:image/jpeg;base64,..."> - Загружено через отдельный HTTP-запрос
- Сгенерировано динамически через Canvas
Используйте инструменты разработчика (вкладка Network) для поиска запроса, возвращающего изображение капчи.
3.3. Определение шага поворота
Проанализируйте поведение виджета:
- Сколько позиций доступно для поворота?
- Меняется ли шаг динамически?
Если капча имеет 6 позиций, шаг равен 60° (360 / 6). Укажите это в параметре angle для повышения точности.
4. Реализация: отправка задачи и получение ответа
4.1. Структура запроса
Задача отправляется POST-запросом на эндпоинт createTask:
https://api.2captcha.com/createTask
Тело запроса:
json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "RotateTask",
"body": "BASE64_ENCODED_IMAGE",
"angle": 60,
"comment": "Поверните изображение в вертикальное положение"
},
"languagePool": "ru"
}
4.2. Рабочий пример на Python с использованием SDK
Вместо ручного формирования запросов удобнее использовать официальный SDK. Он берёт на себя отправку задачи, опрос статуса и обработку ответов.
Пример ниже показывает, как решить Rotate CAPTCHA асинхронно:
python
import asyncio
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))
from twocaptcha import AsyncTwoCaptcha
# API-ключ лучше хранить в переменной окружения
# Linux/macOS: export APIKEY_2CAPTCHA=ваш_ключ
# Windows: set APIKEY_2CAPTCHA=ваш_ключ
api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')
# Инициализация решателя с таймаутом и интервалом опроса
solver = AsyncTwoCaptcha(api_key, defaultTimeout=100, pollingInterval=10)
async def solve_captcha():
try:
return await solver.rotate(
'../images/rotate.jpg',
angle=40,
lang='en',
# hintImg = '../images/rotate_hint.jpg'
hintText='Put the images in the correct way up')
except Exception as e:
sys.exit(e)
if __name__ == '__main__':
result = asyncio.run(solve_captcha())
sys.exit('result: ' + str(result))
Что делает этот код:
- Берёт ключ из переменной окружения, чтобы не хранить его в коде
- Создаёт асинхронный экземпляр решателя с настройками таймаута
- Отправляет изображение капчи с подсказкой и шагом поворота
- Ждёт результат и выводит его в консоль
Как запустить:
- Установите библиотеку:
pip3 install 2captcha-python - Задайте API-ключ:
export APIKEY_2CAPTCHA=ваш_ключ - Положите тестовое изображение в
../images/rotate.jpg - Запустите скрипт:
python3 rotate_example.py
Совет: Начните с параметра hintText на родном языке исполнителя. Фраза вроде «Поверните картинку, чтобы она стояла ровно» повышает точность решения.
Если вы предпочитаете синхронный код, используйте класс TwoCaptcha без async/await. Логика та же, только вызовы блокирующие.
Полный пример с комментариями доступен в репозитории:
async_rotate_options.py на GitHub
5. Пояснения к ключевым моментам
5.1. Почему важен параметр angle
Указание шага поворота помогает исполнителю быстрее понять логику капчи и снижает риск ошибки. Если шаг неизвестен, можно опустить параметр.
5.2. Обработка задержек
Ответ status: "processing" означает, что задача в очереди. Рекомендуется:
- Опрос каждые 3–5 секунд
- Установить максимальный таймаут (например, 60 секунд)
- Логировать время ожидания для анализа
5.3. Валидация ответа
Перед применением решения проверьте:
- Значение
errorIdравно 0 - Статус
ready - Поле
solution.rotateсодержит число
5.4. Применение результата
В ответе вы получаете значение угла, на который надо повернуть изображение. Стандартным использованием является браузер с автоматическим управлением (Selenium, Playwright, Puppeteer)
6. Альтернативные подходы
6.1. Синхронный и асинхронный запросы
Для простых скриптов подойдёт синхронный requests. Для высоконагруженных систем рассмотрите aiohttp с асинхронным опросом.
6.2. Использование SDK
Официальный Python-клиент упрощает интеграцию:
bash
pip3 install 2captcha-python
Документация: 2captcha-python на GitHub
6.3. Обработка нескольких капч подряд
При массовом решении добавьте:
- Задержки между запросами
- Повторную отправку при ошибке
ERROR_CAPTCHA_UNSOLVABLE
7. Типичные ошибки и решения
| Ошибка | Возможная причина | Решение |
|---|---|---|
ERROR_WRONG_USER_KEY |
Неверный API-ключ | Проверьте ключ в панели управления 2Captcha |
ERROR_ZERO_BALANCE |
Недостаточно средств | Пополните баланс аккаунта |
ERROR_CAPTCHA_UNSOLVABLE |
Изображение нечёткое или задача неоднозначная | Улучшите качество изображения, добавьте comment |
ERROR_ZERO_CAPTCHA_FILESIZE |
Размер изображения составляет менее 100 байт | Попробуйте заново извлечь файл с изображением |
ERROR_NO_SLOT_AVAILABLE |
Ваша ставка слишком мала для отправленной вами капчи, или очередь ваших капч слишком длинная, и мы временно не принимаем от вас больше капч | Увеличьте ставку в настройках и создайте таймаут между запросами в 5–10 секунд |
7.1. Система отчетности
Если решение оказалось неверным, вы можете отправить отчет через API 2Captcha:
-
Неверный ответ:
https://api.2captcha.com/reportIncorrect
Параметры:key,taskId
При подтверждении ошибки средства возвращаются согласно политике возвратов. -
Верный ответ:
https://api.2captcha.com/reportCorrect
Параметры:key,taskId
Помогает улучшить качество работы исполнителей.
Важно: Отправляйте отчеты только после проверки решения в контексте вашей задачи.
8. Дополнительные ресурсы
- Документация по Rotate: документация
- Система отчетности:
- Песочница для тестов: включить режим
- Примеры кода: наш гитхаб
- Поддержка: создать тикет
9. Контрольный список перед запуском
- Изображение капчи закодировано в Base64 и не превышает 600 КБ
- Параметр
angleуказан, если известен шаг поворота - В
commentдобавлена понятная инструкция для работника - Ответ валидируется перед применением (
errorId,status,solution.rotate) - Интеграция с браузером (Selenium / Puppeteer) протестирована вручную
- Настроена логирование для отладки и анализа ошибок
- При необходимости подключена система отчетности 2Captcha
Заключение
Rotate CAPTCHA требует точной передачи изображения и понимания логики поворота. Интеграция с 2Captcha позволяет автоматизировать решение таких задач, но успех зависит от качества подготовки данных и корректной обработки ответа.
Начните с тестов в режиме headless=False, чтобы визуально контролировать процесс. Добавляйте подробные комментарии в задачи и используйте систему отчетности для улучшения результатов.