Looking for international version of our service? Go to 2captcha.com

Как обходить капчи rotate с ползунком

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

Эта капча, например, используется на сайте OOCL.com, и ее ручное решение значительно замедляет рабочие процессы. К счастью, мы уже предлагаем надежный API для автоматического определения угла поворота.

Как выглядит капча?

Пример rotate капчи с ползунком с сайта:

Пример rotate капчи

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

  1. Основное изображение (с которым нужно совместить фрагмент):
Основное изображение
  1. Изображение фрагмента (которое нужно повернуть):
    Изображение фрагмента

Оба изображения должны быть переданы в формате base64.

Отправка капчи на решение через API

Мы предоставляем два варианта API для работы с этим типом капчи: V1 и V2. Рекомендуется использовать более современный API V2.

Для успешного решения rotate капчи необходимо корректно подготовить два изображения:

  • image - основное изображение, с которым должен быть совмещён фрагмент после поворота, в формате Base64
  • parts - изображение фрагмента, также в формате Base64

Требования к изображениям:

  • Формат: Base64-строка
  • Размер: оригинальный размер 323×153 пикселей
  • Качество: изображения должны быть четкими, без искажений

Пример запроса через API V1

python Copy
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 Copy
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 Copy
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "angle": 178.17,
    "center": [174, 72, 63.5],
    "point_circle": [234, 66]
  }
}

Заключение

Наше решение для rotate капчи позволяет легко автоматизировать процессы, требующие взаимодействия с сайтами, использующими данный тип проверки.

Процесс сводится к подготовке изображений, отправке простого POST-запроса и получению точного угла для поворота.

Для наших клиентов мы также предоставляем, по запросу, полный рабочий пример на Python с использованием Selenium, настроенный под распространённое разрешение экрана 1920×1080 и масштаб 125%.

Нужна помощь? Создайте тикет и получите быстрый ответ от специалиста.