CAPTCHA / TENCENT_ICONS
Tencent / Icons
Капча Tencent «Click in this order»: на картинке цветные иконки, на полоске три чёрных в нужном порядке. Ответ — точки для кликов. Доступно через прямой API.
Входные данные
Подготовьте bg.jpg — картинку 672×480 (dyn_show_info.bg_elem_cfg.img_url в ответе cap_union_prehandle), и sprite.jpg — полоску 170×50 (dyn_show_info.sprite_url). Передавайте файлы одного задания без изменений.
Параметры
| Параметр | Тип | Обязателен | По умолчанию | Назначение |
|---|---|---|---|---|
| image | string | Да | — | Исходное изображение в base64. |
| order | string | Да | — | Полоска с иконками в base64. |
Ответ
| Данные распознавания | Тип | Назначение |
|---|---|---|
| confidence | number | Наименьшая из оценок p по точкам. |
| extra.points[].index | integer | Номер клика, начиная с 1. Порядок совпадает с порядком иконок на полоске. |
| extra.points[].x / y | number | Точка клика в пикселях исходной картинки. |
| extra.points[].name | string | Название иконки. |
| extra.points[].p | number | Оценка найденной иконки, от 0 до 1. |
| extra.points[].match | number | Сходство иконки с полоски с известной иконкой этого названия. |
| extra.size | integer[2] | Ширина и высота исходной картинки. |
Применение
Нажмите на точки extra.points по порядку. Если исходная картинка имеет размер W×H, а на странице — w×h, координата относительно картинки на странице: x × w / W, y × h / H.
Частые ошибки
- Картинка и полоска должны относиться к одному заданию.
- Не обрезайте и не масштабируйте файлы перед отправкой.
- Ответ 422 unsolvable_image (4001): решатель не нашёл иконки этого раунда. В detail указаны шаг и то, что он увидел; резерв освобождён. Сохраните отправленные image и order — это пример для обучения модели.
Пример запроса
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("bg.jpg"),
"order": image64("sprite.jpg"),
}
# Создайте один ID на задачу; сохраняйте его для сетевых повторов.
request_id = str(uuid.uuid4())
response = requests.post(
"https://capi.z3n.pro/v1/solve/tencent_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"])
capi.