CAPTCHA / GEETEST_NINE

GeeTest / Nine

Капча с сеткой 3×3: по изображению-подсказке нужно выбрать соответствующие ячейки. Подсказка — предмет или эмоция (плачущее, злое, улыбающееся лицо); вид задания сервер определяет сам. Solver возвращает индексы ячеек.

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

Подготовьте grid.jpg — полную сетку 3×3, и hint.png — картинку-подсказку из задания. Не вырезайте девять ячеек вручную: сервер разделит grid.jpg сам.

0 1 2
3 4 5
6 7 8

Параметры

ПараметрТипОбязателенПо умолчаниюНазначение
imagestringДа—Исходное изображение в base64.
quesstring[]Да—Непустой массив base64-подсказок. Этот solver использует первый элемент: обычно отправляйте ровно одну подсказку.
prompt_keystringНетПустая строкаИсходное имя или путь изображения-подсказки из данных провайдера. Последняя часть пути используется для словаря известных заданий. Если ключ отсутствует или не найден, подсказка классифицируется по изображению.
picksintegerНет3Сколько ячеек выбрать. Обычно 3. Укажите количество из задания.

Ответ

Данные распознаванияТипНазначение
extra.cellsinteger[]Выбранные ячейки с индексами 0–8: слева направо, сверху вниз. Массив отсортирован по индексу.
extra.debug.kindstringobject — подсказка-предмет; emotion — подсказка-эмоция.
extra.debug.labelstringПредмет или эмоция (crying, angry, smiling), по которой выполнялся поиск.
extra.debug.label_sourcestringdict — подсказка найдена по prompt_key; image — эмоция узнана по картинке подсказки; zero-shot — предмет определён по изображению.
extra.debug.simnumber[9]Диагностические оценки соответствия девяти ячеек подсказке.

Применение

Читайте result["extra"]["cells"]. Для индекса i: столбец = i % 3, строка = i // 3. Центр ячейки относительно сетки шириной W и высотой H: x = (столбец + 0.5) × W / 3; y = (строка + 0.5) × H / 3. Добавьте положение сетки на странице и отправьте проверку.

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

  • Нумерация начинается с 0: верхний левый квадрат — 0, нижний правый — 8.
  • Сетка и подсказка должны принадлежать одному раунду.
Ошибки сценария и повторы →

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

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("grid.jpg"),
    "ques": [image64("hint.png")],
    "picks": 3,
}

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