Перейти к основному содержимому
Возникают проблемы с получением токена?
Свяжитесь с поддержкой

TenDI - Tencent CAPTCHA

CapMonster Cloud MCP
Для распознавания и решения CAPTCHA также можно использовать CapMonster Cloud MCP

Ещё больше по теме в нашем блоге
Внимание!

CapMonster Cloud по умолчанию работает через встроенные прокси — они уже включены в стоимость. Указывать собственные прокси требуется только в тех случаях, когда сайт не принимает токен или доступ к встроенным сервисам ограничен.

Если прокси с авторизацией по IP, то необходимо добавить адрес 65.21.190.34 в белый список.

Параметры запроса​

type<string>required

CustomTask


class<string>required

TenDI


websiteURL<string>required

Адрес основной страницы, на которой решается капча.


websiteKey<string>required

captchaAppId, соответствует значению aid. Например, "websiteKey": "189123456" - уникальный параметр для вашего сайта. Можно взять с html страницы с капчей или из трафика (см. описание ниже).


captchaUrl (внутри metadata)<string>optional

Ссылка на скрипт CAPTCHA. Обычно файл называется TCaptcha.js или TCaptcha-global.js. Для второй версии также встречаются файлы вида TJNCaptcha*.js и TJCaptcha*.js, где * означает произвольную или пустую строку, например -global. Скрипт можно найти среди сетевых запросов (см. пример ниже).


aidEncrypted (внутри metadata)<string>optional

Параметр содержит значение Aid, которое необходимо получить с целевого сайта перед созданием задачи.

Пример: HHuVfL451oAYXSwVa87xnU4QHER9ufsPpaSomCugX5Il/Nc2vLTu2dgoguMwmhAM

Важно: данный параметр используется не на всех сайтах. Если сайт не возвращает Aid, aidEncrypted передавать не нужно. Значение aidEncrypted является одноразовым: для каждой новой задачи необходимо получать новый Aid.

Подробнее см. в разделе Как получить aidEncrypted.


userAgent<string>optional

User-Agent браузера. Используйте текущее значение, поддерживаемое CapMonster Cloud: userAgentPlaceholder

Получить актуальное значение можно по адресу: https://capmonster.cloud/api/useragent/actual.


proxyType<string>optional

http - обычный http/https прокси;
https - попробуйте эту опцию только если "http" не работает (требуется для некоторых кастомных прокси);
socks4 - socks4 прокси;
socks5 - socks5 прокси.


proxyAddress<string>optional

IP адрес прокси IPv4/IPv6. Не допускается:

  • использование прозрачных прокси (там где можно видеть IP клиента);
  • использование прокси на локальных машинах.


proxyPort<integer>optional

Порт прокси.


proxyLogin<string>optional

Логин прокси-сервера.


proxyPassword<string>optional

Пароль прокси-сервера.

Метод создания задачи​

POST
https://api.capmonster.cloud/createTask

Альтернативный адрес метода

Для пользователей из России также доступен:

https://ru.api.capmonster.cloud/createTask

Подробнее в разделе createTask.


Если на сайте используется aidEncrypted, передавайте его в metadata. Для каждой новой задачи получайте новое значение с сайта.

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

{
"clientKey": "API_KEY",
"task": {
"type": "CustomTask",
"class": "TenDI",
"websiteURL": "https://yourwebsite.com/page-with-tencent",
"websiteKey": "your-website-key",
"userAgent": "userAgentPlaceholder",
"metadata": {
"captchaUrl": "https://example.com/TCaptcha.js"
}
}
}

Пример ответа

{
"errorId": 0,
"taskId": 407533072
}

Метод получения результата задачи​

Используйте метод getTaskResult, чтобы получить решение TenDI.

POST
https://api.capmonster.cloud/getTaskResult

Альтернативный адрес метода

Для пользователей из России также доступен:

https://ru.api.capmonster.cloud/getTaskResult

Подробнее в разделе getTaskResult.

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

{
"clientKey":"API_KEY",
"taskId": 407533072
}

Пример ответа

{
"errorId": 0,
"status": "ready",
"solution": {
"data": {
"randstr": "@EcL",
"ticket": "tr03lHUhdnuW3neJZu.....7LrIbs*"
},
"headers": {
"User-Agent": "userAgentPlaceholder"
}
}
}

Как получить websiteKey (captchaAppId)​

Включите Инструменты разработчика, перейдите на вкладку Network, активируйте капчу и посмотрите запросы. В некоторых из них будет нужное вам значение параметра. В данном случае websiteKey=aid

Как получить captchaUrl​

Откройте Инструменты разработчика, перейдите на вкладку Network, активируйте CAPTCHA и изучите сетевые запросы. Среди загруженных файлов найдите TCaptcha.js или TCaptcha-global.js:

Для второй версии также встречаются файлы вида TJNCaptcha*.js и TJCaptcha*.js:

* в имени файла означает произвольную или пустую строку. Например, шаблон TJNCaptcha*.js может соответствовать файлам TJNCaptcha.js или TJNCaptcha-global.js.

Как получить aidEncrypted​

Если на сайте используется Aid, получите его отдельным запросом перед созданием задачи и передайте полученное значение в параметре aidEncrypted внутри объекта metadata.

Откройте Инструменты разработчика, перейдите на вкладку Network и активируйте CAPTCHA. Найдите запрос, с помощью которого сайт получает Aid, и скопируйте значение из ответа.

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

https://example.com/path/GetCaptchaAid.ashx?_=1234567890000

В этом же запросе также может передаваться значение websiteKey (AppId).

Адрес запроса и формат ответа зависят от конкретного сайта.

Пример создания задачи с параметром aidEncrypted:

{
"clientKey": "API_KEY",
"task": {
"type": "CustomTask",
"class": "TenDI",
"websiteURL": "https://example.com/page-with-captcha",
"websiteKey": "YOUR_WEBSITE_KEY",
"metadata": {
"captchaUrl": "https://example.com/TCaptcha.js",
"aidEncrypted": "YOUR_AID_ENCRYPTED"
}
}
}
Важно:

Получайте новое значение Aid перед созданием каждой задачи. Не используйте повторно значение aidEncrypted, полученное для предыдущей задачи, и не используйте значения из примеров документации.

Как найти все нужные параметры для создания задачи на решение​

Автоматически​

Для автоматизации поиска параметров их можно извлекать через браузер (обычный или headless, например, с Playwright) или напрямую из HTTP-запросов. Поскольку значения динамических параметров действуют недолго, их рекомендуется использовать сразу после получения.

Важно:

Приведённые фрагменты кода являются базовыми примерами для ознакомления в извлечении необходимых параметров. Точная реализация будет зависеть от вашего сайта с капчей, его структуры и используемых HTML-элементов и селекторов.

Показать код (Node.js)
import { chromium } from "playwright";

(async () => {
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();

// Ловим запросы
page.on("request", (request) => {
const url = request.url();
if (
url.startsWith("https://sg.captcha.qcloud.com/cap_union_prehandle?aid=")
) {
const parsedUrl = new URL(url);
const aid = parsedUrl.searchParams.get("aid");
console.log("Extracted aid:", aid);
}
});

await page.goto("https://www.example.com/", { waitUntil: "load" });

await page.waitForTimeout(5000);

await browser.close();
})();

Используйте библиотеку SDK​

Показать код (для браузера)
// https://github.com/CapMonsterCloud/capmonster-nodejs-captcha-solver

import {
CapMonsterCloudClientFactory,
ClientOptions,
TenDIRequest
} from "@zennolab_com/capmonstercloud-client";

document.addEventListener("DOMContentLoaded", async () => {

const API_KEY = "YOUR_API_KEY"; // Укажите ваш API-ключ CapMonster Cloud

const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);

// Базовый пример без прокси
// CapMonster Cloud автоматически использует собственные прокси
let tenDIRequest = new TenDIRequest({
websiteURL: "https://yourwebsite.com/page-with-tendi",
websiteKey: "your-website-key",
});

// Пример с использованием вашего прокси
// Раскомментируйте этот блок, если хотите использовать свой прокси
/*
const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password",
};

tenDIRequest = new TenDIRequest({
websiteURL: "https://yourwebsite.com/page-with-tendi",
websiteKey: "your-website-key",
proxy,
userAgent: "userAgentPlaceholder",
});
*/

// При необходимости можно проверить баланс
const balance = await client.getBalance();
console.log("Balance:", balance);

const result = await client.Solve(tenDIRequest);
console.log("Solution:", result.solution);
});
Показать код (Node.js)
// https://github.com/CapMonsterCloud/capmonster-nodejs-captcha-solver

const {
CapMonsterCloudClientFactory,
ClientOptions,
TenDIRequest,
} = require("@zennolab_com/capmonstercloud-client");

const API_KEY = "YOUR_API_KEY"; // Укажите ваш API-ключ CapMonster Cloud

async function solveTenDI() {
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY }),
);

// Базовый пример без прокси
// CapMonster Cloud автоматически использует собственные прокси
let tenDIRequest = new TenDIRequest({
websiteURL: "https://yourwebsite.com/page-with-tendi",
websiteKey: "your-website-key",
});

// Пример с использованием вашего прокси
// Раскомментируйте этот блок, если хотите использовать свой прокси
/*
const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password",
};

tenDIRequest = new TenDIRequest({
websiteURL: "https://yourwebsite.com/page-with-tendi",
websiteKey: "your-website-key",
proxy,
userAgent: "userAgentPlaceholder",
});
*/

// При необходимости можно проверить баланс
const balance = await client.getBalance();
console.log("Balance:", balance);

const result = await client.Solve(tenDIRequest);
console.log("Solution:", result.solution);
}

solveTenDI().catch(console.error);