UNLOCK API
Сітка картинок

Сітка картинок

Як надіслати задачу Сітка картинок до UNLOCK API через createTask або in.php: назви типів задач, усі параметри, об'єкт solution, поля проксі та приклади коду 7 мовами.
Ціна
$0.36 $0.00036 за задачу
Ви надсилаєте
Картинка сітки в base64 та інструкція, наприклад об'єкт, який треба вибрати
Ви отримуєте
Номери клітинок, на які треба натиснути

Огляд і ціна

Назви типу задачі

Цей тип має одну назву.
GridTask

Також приймається: GridTaskProxyless

Об'єкт задачі

type
StringОбов'язковий
Назва типу задачі. Регістр літер не важливий. GridTask
body
StringОбов'язковий
Картинка в base64 (JPG, PNG або GIF), приблизно до 100 KB. Префікс data: дозволено.
comment
StringНеобов'язковий
Інструкція для розв'язувача, наприклад питання над картинкою.
rows
IntegerНеобов'язковий
Кількість рядків у сітці.
columns
IntegerНеобов'язковий
Кількість стовпців у сітці.
imgType
StringНеобов'язковий
Тип картинки, якщо він відомий.
previousId
StringНеобов'язковий
Id попередньої задачі, якщо сітка змінюється після першої відповіді.
canSkip
BooleanНеобов'язковий
true, якщо відповіддю може бути те, що жодна плитка не підходить.

Поля, яких тут немає, передаються розв'язувачу без змін.

Запит

POST /createTask
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "GridTask",
    "body": "/9j/4AAQSkZJRgABAQ...",
    "comment": "Select all squares with traffic lights",
    "rows": 3,
    "columns": 3
  }
}

Об'єкт solution

Повертається в solution, коли status дорівнює ready.
click
Array
Номери плиток для кліку, рахуючи з 1, зліва направо й згори донизу.
POST /getTaskResult
{
  "errorId": 0,
  "taskId": 1001,
  "status": "ready",
  "solution": {
    "click": [
      1,
      4,
      9
    ]
  },
  "cost": "0.00036",
  "createTime": 1791640000,
  "endTime": 1791640014,
  "solveCount": 1
}

Приклади коду

import time, requests

API = "https://unlock-api.com"
KEY = "YOUR_API_KEY"

task = requests.post(f"{API}/createTask", json={
    "clientKey": KEY,
    "task": {
      "type": "GridTask",
      "body": "/9j/4AAQSkZJRgABAQ...",
      "comment": "Select all squares with traffic lights",
      "rows": 3,
      "columns": 3
    }
}).json()
if task["errorId"]:
    raise SystemExit(task["errorCode"])

for _ in range(60):   # 60 x 5 s = the 5 minute task limit
    time.sleep(5)
    r = requests.post(f"{API}/getTaskResult", json={"clientKey": KEY, "taskId": task["taskId"]}).json()
    if r["errorId"]:
        raise SystemExit(f"{r['errorCode']}: {r.get('errorDescription', '')}")   # failed tasks are refunded
    if r["status"] == "ready":
        print(r["solution"])
        break
else:
    raise SystemExit("timed out")

Метод форми in.php

Та сама задача через класичний запит із формою. res.php повертає відповідь текстом.
in.php, res.php
curl -s "https://unlock-api.com/in.php" -d "key=YOUR_API_KEY&method=base64&recaptcha=1&textinstructions=Select+all+traffic+lights&body=BASE64_IMAGE&json=1"
# {"status":1,"request":"1001"}

curl -s "https://unlock-api.com/res.php?key=YOUR_API_KEY&action=get&id=1001&json=1"
# {"status":0,"request":"CAPCHA_NOT_READY"}  then  {"status":1,"request":"ANSWER"}

API форм: in.php і res.php