Чтобы создать задачу TextCaptcha, отправьте POST-запрос на адрес https://api.capsola.cloud/create
с указанием API-ключа в заголовке X-API-Key. В теле запроса передайте данные в формате JSON.
https://api.capsola.cloud/create
POST
X-API-Key: API KEY
application/json
type
- * Обязательно. Тип задачи, в данном случае "TextCaptcha" task
- * Обязательно. Изображение капчи в формате Base64. app_id
- Идентификатор приложения разработчика (можно найти в разделе реферальная система для разработчиков){
"type": "TextCaptcha",
"task": "IMAGE_BASE_64"
}
После успешного создания задачи получите уникальный идентификатор задачи.
{
"status": 1,
"response": "9051d4b4-0000-44d3-a4c2-db0215227862"
}
status
- статус выполнения запроса (1 - успешно, 0 - ошибка).response
- идентификатор задания / код ошибкиЧтобы получить результаты обработки задачи TextCaptcha, отправьте POST-запрос на адрес https://api.capsola.cloud/result
с указанием API-ключа в заголовке X-API-Key
. В теле запроса передайте идентификатор задачи из предыдущего запроса.
https://api.capsola.cloud/result
POST
X-API-Key: API KEY
id
- идентификатор созданной задачи{
"id": "9051d4b4-0000-44d3-a4c2-db0215227862"
}
Получите результаты обработки задачи TextCaptcha.
{
"status": 1,
"response": "Фраза для ввода"
}
status
- статус выполнения запроса (1 - успешно, 0 - ошибка).response
- координаты в формате x и y для каждой точки / код ошибки.Если в ответе вы получаете значение CAPCHA_NOT_READY
, это означает, что результаты еще не готовы. В таком случае, рекомендуется подождать от 2 до 10 секунд и повторить запрос на получение результатов. Повторяйте запрос, пока не получите успешный результат (status
равен 1) или другой статус, указывающий на ошибку.
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
image_url = 'https://capsola.cloud/examples/text/task.png'
image_response = requests.get(image_url).content
IMAGE_BASE_64 = base64.b64encode(image_response)
data = {
'type': 'TextCaptcha',
'task': IMAGE_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
$IMAGE_URL = "https://capsola.cloud/examples/text/task.png";
$CLICK_BASE_64 = loadImageAsBase64($IMAGE_URL);
$data = [
'type' => 'TextCaptcha',
'task' => $IMAGE_URL
];
$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 IMAGE_URL = "https://capsola.cloud/examples/text/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: "TextCaptcha",
task: await loadImageAsBase64(IMAGE_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();