CAPTCHA / GEETEST_ICON

GeeTest / Icon

Капча с тремя иконками-подсказками: нужно найти эти объекты на большой картинке и нажать на них в указанном порядке.

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

Подготовьте canvas.jpg — основную картинку, и hint-1.png, hint-2.png, hint-3.png — три исходные подсказки в порядке задания. Сохраняйте alpha-канал PNG-подсказок. Передавайте файлы одного и того же раунда.

Параметры

ПараметрТипОбязателенПо умолчаниюНазначение
imagestringДа—Исходное изображение в base64.
quesstring[3]Да—Массив ровно из трёх base64-картинок подсказок. Первый элемент — первый объект для клика, второй — второй, третий — третий.
methodstringНетautoauto: использовать известный чистый фон, иначе сопоставлять контуры. background: требовать чистый фон; при его отсутствии задача завершается ошибкой. match: искать по контурам без использования чистого фона.
bg_idstringНетПустая строкаИдентификатор чистого фона, если он вам известен. Имеет приоритет над imgs.
imgsstringНетПустая строкаИсходный путь основной картинки из данных провайдера, например /icon/<hex-id>/…. Из него извлекается bg_id.

Ответ

Данные распознаванияТипНазначение
extra.pointsinteger[][3]Точки [номер, x, y]. Номер начинается с 1 и соответствует порядку ques. x и y — пиксели исходной основной картинки.
extra.scoresnumber[]Оценки сопоставления точек в том же порядке.
extra.methodstringФактически использованный способ: background или match.
extra.bg_idstringИдентификатор фона, если известен.
extra.background_builtbooleanБыл ли собран фон из накопленных сервером образцов в этом запросе.
extra.fallback_reasonstring, optionalПричина перехода с фонового метода на match, если переход был.
extra.debugobjectДиагностика конкретного метода.

Применение

Читайте result["extra"]["points"]. Нажмите на каждую точку в порядке массива. При масштабировании картинки сначала пересчитайте x и y. Проверку у провайдера выполняет плагин или ваш код.

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

  • ques должен содержать ровно три изображения, а не текст задания или пути к локальным файлам.
  • Подсказки и canvas должны относиться к одному раунду.
  • Не начинайте с method=background без известного серверу фона; для первого запроса используйте auto.
Ошибки сценария и повторы →

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

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.jpg"),
    "ques": [image64("hint-1.png"), image64("hint-2.png"), image64("hint-3.png")],
    "method": "auto",
}

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