Силуэты
Задачи с кликом по картинкам.

Нажимайте в порядке:

Отправить
1. Создание задачи
POST
https://api.capsola.cloud/createЗапрос
Ключ передаётся в заголовке X-API-Key, тело — JSON.
json
{
"type": "SmartCaptcha",
"click": "CLICK_BASE_64",
"task": "TASK_BASE_64"
}
typestring обязательный Тип задачи — SmartCaptcha.
clickbase64 обязательный Изображение области клика.
taskbase64 обязательный Изображение с порядком задания.
app_idstringИдентификатор приложения разработчика — выдаётся в партнёрском разделе.
Изображения надёжнее скачивать с источника и кодировать в Base64 самостоятельно. Пересжатие теряет детали, и задача решается хуже.
Ответ
json
{
"status": 1,
"response": "9051d4b4-0000-44d3-a4c2-db0215227862"
}
statusnumber1 — задача принята, 0 — ошибка.
responsestringИдентификатор задачи или код ошибки.
2. Получение результата
POST
https://api.capsola.cloud/resultЗапрос
json
{
"id": "9051d4b4-0000-44d3-a4c2-db0215227862"
}
idstring обязательный Идентификатор задачи из ответа на /create.
Ответ
json
{
"status": 1,
"response": "coordinates:x=34.7,y=108.0;x=234.3,y=72.3;x=149.1,y=107.7"
}
statusnumber1 — задача решена, 0 — ошибка.
responsestringКоординаты точек в порядке нажатия или код ошибки.
Ответ CAPCHA_NOT_READY означает, что задача ещё в работе. Подождите 2–10 секунд и повторите запрос — и так до успешного результата или другой ошибки.
Примеры использования
import requests
import time
import base64
url_create = 'https://api.capsola.cloud/create'
url_result = 'https://api.capsola.cloud/result'
headers = {
'Content-type': 'application/json',
'X-API-Key': 'API_KEY'
}
# Create task
click_url = 'https://capsola.cloud/examples/smart/click.png'
task_url = 'https://capsola.cloud/examples/smart/task.png'
click_response = requests.get(click_url).content
task_response = requests.get(task_url).content
CLICK_BASE_64 = base64.b64encode(click_response).decode('utf-8')
TASK_BASE_64 = base64.b64encode(task_response).decode('utf-8')
data = {
'type': 'SmartCaptcha',
'click': CLICK_BASE_64,
'task': TASK_BASE_64,
}
request = requests.post(url = url_create, json = data, headers=headers)
request = request.json()
print(request)
# Get result
if request['status'] == 1:
task_id = request['response']
while True:
time.sleep(2)
data = {
'id': task_id
}
request = requests.post(url=url_result, json=data, headers = headers)
request = request.json()
print(request)
if request['status'] == 1:
break
if request['status'] == 0 and request['response'] != 'CAPCHA_NOT_READY':
break
$url_create = 'https://api.capsola.cloud/create';
$url_result = 'https://api.capsola.cloud/result';
$headers = [
'Content-Type: application/json',
'X-API-Key: API_KEY'
];
function loadImageAsBase64($imageUrl)
{
$imageData = file_get_contents($imageUrl);
if ($imageData === false) {
return null;
}
$base64Image = base64_encode($imageData);
return $base64Image;
}
function makeRequest($url, $data, $headers) {
$context = stream_context_create([
'http' => [
'method' => 'POST',
'header' => implode("\r\n", $headers),
'content' => json_encode($data)
]
]);
return json_decode(file_get_contents($url, false, $context), true);
}
# Create task
$CLICK_URL = "https://capsola.cloud/examples/smart/click.png";
$TASK_URL = "https://capsola.cloud/examples/smart/task.png";
$CLICK_BASE_64 = loadImageAsBase64($CLICK_URL);
$TASK_BASE_64 = loadImageAsBase64($TASK_URL);
$data = [
'type' => 'SmartCaptcha',
'click' => $CLICK_BASE_64,
'task' => $TASK_BASE_64
];
$response = makeRequest($url_create, $data, $headers);
var_dump($response);
# Get result
if ($response['status'] == 1) {
$task_id = $response['response'];
while (1) {
sleep(2);
$response = makeRequest($url_result, ['id' => $task_id], $headers);
var_dump($response);
if ($response['status'] == 1) {
break;
}
if ($response['status'] == 0 && $response['response'] != 'CAPCHA_NOT_READY') {
break;
}
}
}
const urlCreate = "https://api.capsola.cloud/create";
const urlResult = "https://api.capsola.cloud/result";
const headers = {
"Content-Type": "application/json",
"X-API-Key: API_KEY",
};
const CLICK_URL = "https://capsola.cloud/examples/smart/click.png";
const TASK_URL = "https://capsola.cloud/examples/smart/task.png";
async function loadImageAsBase64(imageUrl) {
const response = await fetch(imageUrl);
const arrayBuffer = await response.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
const base64Image = buffer.toString('base64');
return base64Image;
}
async function createTask() {
const request = await fetch(urlCreate, {
method: "POST",
headers: headers,
body: JSON.stringify({
type: "SmartCaptcha",
click: await loadImageAsBase64(CLICK_URL),
task: await loadImageAsBase64(TASK_URL),
}),
});
const { status, response } = await request.json();
console.log({ status, response });
if (status === 1) return response;
console.error("Failed to create task:", response);
return null;
}
async function getResult(taskId) {
while (true) {
await new Promise((resolve) => setTimeout(resolve, 2000));
const request = await fetch(urlResult, {
method: "POST",
headers: headers,
body: JSON.stringify({ id: taskId }),
});
const { status, response } = await request.json();
console.log({ status, response });
if (status === 1) break;
if (status === 0 && response !== "CAPCHA_NOT_READY") break;
}
}
async function main() {
const taskId = await createTask();
if (taskId) await getResult(taskId);
}
main();