CAPTCHA / YANDEX_ICONS

Yandex / Icons

Yandex SmartCaptcha с иконками: на картинке иконки на сложном фоне, на полоске те же иконки в нужном порядке. Ответ — точки для кликов. Доступно через прямой API.

Входные данные

Подготовьте canvas.png — картинку 500×330, и order.png — полоску 300×60 с иконками на прозрачном фоне. Передавайте файлы одного задания без изменений и сохраняйте alpha-канал полоски.

Параметры

ПараметрТипОбязателенПо умолчаниюНазначение
imagestringДа—Исходное изображение в base64.
orderstringДа—Полоска с иконками в base64.

Ответ

Данные распознаванияТипНазначение
confidencenumberНаименьшая из оценок p по точкам.
extra.points[].indexintegerНомер клика, начиная с 1. Порядок совпадает с порядком иконок на полоске.
extra.points[].x / ynumberТочка клика в пикселях исходной картинки.
extra.points[].namestringНазвание иконки.
extra.points[].pnumberОценка найденной иконки, от 0 до 1.
extra.points[].matchnumberСходство иконки с полоски с известной иконкой этого названия.
extra.sizeinteger[2]Ширина и высота исходной картинки.
extra.points[].own_classbooleanfalse — иконка этого названия на картинке не найдена, взята другая. Такой ответ лучше не использовать, запросите новое задание.

Применение

Нажмите на точки extra.points по порядку. Если исходная картинка имеет размер W×H, а на странице — w×h, координата относительно картинки на странице: x × w / W, y × h / H.

Частые ошибки

  • Картинка и полоска должны относиться к одному заданию.
  • Полоска без alpha-канала должна быть с тёмными иконками на светлом фоне.
  • Не обрезайте и не масштабируйте файлы перед отправкой.
Ошибки сценария и повторы →

Пример запроса

Python · requests
import base64
from pathlib import Path
import os
import uuid
import requests

def image64(filename):
    return base64.b64encode(Path(filename).read_bytes()).decode("ascii")

payload = {
    "image": image64("canvas.png"),
    "order": image64("order.png"),
}

# Создайте один ID на задачу; сохраняйте его для сетевых повторов.
request_id = str(uuid.uuid4())
response = requests.post(
    "https://capi.z3n.pro/v1/solve/yandex_icons",
    headers={
        "Authorization": f"Bearer {os.environ['CAPI_API_KEY']}",
        "Content-Type": "application/json",
        "Idempotency-Key": request_id,
    },
    json=payload,
    timeout=90,
)
response.raise_for_status()
result = response.json()
for point in result["extra"]["points"]:
    print(point["index"], point["x"], point["y"])
Оплата и все маршруты →