CAPTCHA / HUNT

Hunt

Отправляете картинку, получаете точки для кликов (happy_puzzle) или положение мяча и цели (swipe_goal). Вид задания — поле type.

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

Сохраните всю исходную картинку как captcha.png. Координаты ответа относятся к этому файлу.

Параметры

ПараметрТипОбязателенПо умолчаниюНазначение
imagestringДа—Исходное изображение в base64.
typestringДа—Вид задания: happy_puzzle, swipe_goal. Старые имена shapes и football тоже принимаются.
confidencenumberНет0.25swipe_goal: минимальная уверенность для detections, от 0 до 1. На extra.points не влияет.

Виды заданий

typeЗаданиеОтвет
happy_puzzleНажать на иконки в заданном порядке.extra.points — точки для кликов.
swipe_goalВести ползунок, пока мяч не попадёт в цель.detections — положение мяча (ball) и цели (circle).

Ответ

Данные распознаванияТипНазначение
typestringВид задания.
extra.pointsinteger[][3]happy_puzzle: точки [номер, x, y] в порядке кликов; x и y — пиксели исходной картинки. Пустой массив — собрать точки не удалось.
detections[].namestringswipe_goal: ball — мяч, circle — цель.
detections[].center_x / center_ynumberswipe_goal: центр объекта в пикселях исходной картинки.
detections[].x1 / y1 / x2 / y2integerswipe_goal: границы объекта в пикселях исходной картинки.

Применение

happy_puzzle: нажмите на точки extra.points по порядку. swipe_goal: ведите ползунок и после каждого шага присылайте новый снимок; когда центр ball окажется внутри границ circle, отпустите ползунок. Если исходная картинка имеет размер W×H, а на странице — w×h, координата относительно картинки на странице: x × w / W, y × h / H.

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

  • Не передавайте координаты исходного файла прямо в клик по масштабированной картинке.
  • Задача с пустым extra.points оплачивается как обычная. Запросите новую картинку.
  • swipe_goal: каждый снимок — отдельная оплачиваемая задача.
Ошибки сценария и повторы →

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

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("captcha.png"),
    "type": "happy_puzzle",
}

# Создайте один ID на задачу; сохраняйте его для сетевых повторов.
request_id = str(uuid.uuid4())
response = requests.post(
    "https://capi.z3n.pro/v1/solve/hunt",
    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 order, x, y in result["extra"]["points"]:
    print(order, x, y)
Оплата и все маршруты →