Как обходить капчи rotate с ползунком
В борьбе с автоматизацией сайты внедряют все более сложные типы капч. Одной из таких является rotate капча (rotate slider), где для прохождения проверки необходимо правильно повернуть изображение, совместив его с целевым фрагментом.
Эта капча, например, используется на сайте OOCL.com, и ее ручное решение значительно замедляет рабочие процессы. К счастью, мы уже предлагаем надежный API для автоматического определения угла поворота.
Как выглядит капча?
Пример rotate капчи с ползунком с сайта:

Для успешного решения задачи требуется два изображения в оригинальном размере 323x153 пикселя:
- Основное изображение (с которым нужно совместить фрагмент):

- Изображение фрагмента (которое нужно повернуть):

Оба изображения должны быть переданы в формате base64.
Отправка капчи на решение через API
Мы предоставляем два варианта API для работы с этим типом капчи: V1 и V2. Рекомендуется использовать более современный API V2.
Для успешного решения rotate капчи необходимо корректно подготовить два изображения:
image- основное изображение, с которым должен быть совмещён фрагмент после поворота, в формате Base64parts- изображение фрагмента, также в формате Base64
Требования к изображениям:
- Формат: Base64-строка
- Размер: оригинальный размер 323×153 пикселей
- Качество: изображения должны быть четкими, без искажений
Пример запроса через API V1
python
data = {
"method": "rotate_slider",
"key": my_key,
"body": img_b64,
"part1": part1_b64,
"json": 1
}
response = requests.post(f"https://api.rucaptcha.com/in.php?", json=data) # send request to 2captcha
print(response.text)
s = response.json()["request"]
time.sleep(7)
while True:
result = requests.post(f"https://api.rucaptcha.com/res.php?key={my_key}&action=get&json=1&id={s}").json()
if result['request'] == 'CAPCHA_NOT_READY':
print(result['request'])
time.sleep(3)
else:
break
pprint(result)
Пример запроса через API V2
python
data = {
"clientKey": my_key,
"task": {
"type": "RotateSliderTask",
"image": img_b64,
"parts": [
part1_b64,
]
}
}
for i in range(1):
response = requests.post("https://api.rucaptcha.com/createTask", json=data).json()
print(response)
if response['errorId'] == 0:
time.sleep(10)
data = {
"clientKey": my_key,
"taskId": response['taskId']
}
result = requests.post(f"https://api.rucaptcha.com/getTaskResult", json=data).json()
pprint(result)
Обработка ответа
В успешном ответе от API в поле solution будет содержаться числовое значение — величина угла в градусах, на которую необходимо повернуть основное изображение, чтобы оно совпало с фрагментом.
Пример успешного ответа:
json
{
"errorId": 0,
"status": "ready",
"solution": {
"angle": 178.17,
"center": [174, 72, 63.5],
"point_circle": [234, 66]
}
}
Заключение
Наше решение для rotate капчи позволяет легко автоматизировать процессы, требующие взаимодействия с сайтами, использующими данный тип проверки.
Процесс сводится к подготовке изображений, отправке простого POST-запроса и получению точного угла для поворота.
Для наших клиентов мы также предоставляем, по запросу, полный рабочий пример на Python с использованием Selenium, настроенный под распространённое разрешение экрана 1920×1080 и масштаб 125%.
Нужна помощь? Создайте тикет и получите быстрый ответ от специалиста.