В этой статье мы постарались дать ответы на все вопросы. А начать решение задачи нужно с определения того, какая система защиты используется. Для этого можно обратиться к списку популярных капч и систем антибот-защиты, где представлены визуальные примеры и ключевые признаки, которые могут помочь быстро определить, с чем вы имеете дело.
Если вы обнаружили, что на вашем сайте используется Cloudflare Challenge, следующим шагом станет более подробное изучение её свойств и самой работы. Также в этой статье вы можете изучить инструкцию по подключению системы Cloudflare Challenge, чтобы полностью разобраться, как она функционирует на вашем сайте. Это позволит не только понимать текущую защиту, но и грамотно планировать её поддержку.
Работа с CapMonster Cloud через API обычно включает следующие шаги:
type - TurnstileTask
websiteURL - адрес страницы, на которой решается капча
websiteKey - ключ Turnstile(можно передать любую строку)
cloudflareTaskType - cf_clearance
htmlPageBase64 - закодированная в base64 html страница "Just a moment", которая выдаётся с кодом 403 при обращении к сайту с данной защитой.
userAgent - User-Agent браузера. Передавайте только актуальный UA от ОС Windows.
Также для этой задачи необходимо использование ваших прокси:
proxyType :
proxyAddress - IP адрес прокси IPv4/IPv6.
proxyPort - порт прокси.
proxyLogin - логин прокси-сервера.
proxyPassword - пароль прокси-сервера.
https://api.capmonster.cloud/createTask{
"clientKey":"API_KEY",
"task": {
"type":"TurnstileTask",
"websiteURL":"https://example.com",
"websiteKey":"xxxxxxxxxx",
"cloudflareTaskType": "cf_clearance",
"htmlPageBase64": "PCFET0NUWVBFIGh0...vYm9keT48L2h0bWw+",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"proxyType":"http",
"proxyAddress":"8.8.8.8",
"proxyPort":8080,
"proxyLogin":"proxyLoginHere",
"proxyPassword":"proxyPasswordHere"
}
}
{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId": 0,
"status": "ready",
"solution": {
"cf_clearance": "1tarGvbY2_ZhQdYxpSBloao.FoOn9VtcJtmb_IQ_hCE-1761217338-1.2.1.1-vyVPoLYIGX0VCJomVuLjF7n0kdM0PXaPjpDsRcohxGr7hb2CE7WfcHpmQZ70goqEjdWxPsDhSVaKNTz9opxWguiNdWEEq_.SceWXIqfP7tnEb69f3bP0mixNqcWy_5P_9INpoAEqr1k7aYU0r45PT4gPr5pwHxedVySyLRdoBXIJasdTE52YOQ3NPdGWTwQ_3h2n_wYqqIvf0kCSAvimRrmsgZxomlyejwqPI6ZHi.w"
}
}
// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium
import { chromium } from 'playwright';
import {
CapMonsterCloudClientFactory,
ClientOptions,
TurnstileRequest
} from '@zennolab_com/capmonstercloud-client';
// Настройки -- замените на свои значения
const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://www.example.com';
const SITE_KEY = 'xxxxx'; // можно передать любую строку
const USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36';
// Настройки прокси
const proxy = {
proxyType: 'http',
proxyAddress: '8.8.8.8',
proxyPort: 8080,
proxyLogin: 'proxyLogin',
proxyPassword: 'proxyPassword'
};
async function main() {
const cmcClient = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
// Запускаем браузер
const browser = await chromium.launch({
headless: false,
proxy: proxy.proxyAddress ? {
server: `${proxy.proxyType}://${proxy.proxyAddress}:${proxy.proxyPort}`,
username: proxy.proxyLogin,
password: proxy.proxyPassword
} : undefined
});
// Создаём контекст с нужным User-Agent и размером окна (опционально)
const context = await browser.newContext({ userAgent: USER_AGENT, viewport: { width: 1280, height: 800 } });
// Создаём страницу и загружаем целевой URL
const page = await context.newPage();
const resp = await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
console.log('Статус первоначального запроса:', resp?.status());
// Получаем HTML страницы и конвертируем в Base64 для CapMonster
const htmlBase64 = Buffer.from(await page.content(), 'utf-8').toString('base64');
// Создаём задачу Turnstile для получения cf_clearance
const solveResult = await cmcClient.Solve(new TurnstileRequest({
websiteURL: TARGET_URL,
websiteKey: SITE_KEY,
cloudflareTaskType: 'cf_clearance',
htmlPageBase64: htmlBase64,
userAgent: USER_AGENT,
proxy: proxy.proxyAddress ? proxy : undefined
}));
const cf_clearance = solveResult?.solution?.cf_clearance;
if (!cf_clearance) {
console.error('Не удалось получить cf_clearance из CapMonster:', solveResult);
await browser.close();
return;
}
console.log('Получен cf_clearance:', cf_clearance);
// Добавляем cf_clearance cookie в контекст браузера
await context.addCookies([{
name: 'cf_clearance',
value: cf_clearance,
domain: '.' + new URL(TARGET_URL).hostname,
path: '/',
httpOnly: true,
secure: true
}]);
console.log('Cookie cf_clearance успешно добавлен в браузер.');
// Повторно открываем страницу с установленным cf_clearance
const page2 = await context.newPage();
const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
console.log('Статус запроса после установки cf_clearance:', resp2?.status());
await browser.close();
console.log('Скрипт завершил работу.');
}
main().catch(err => {
console.error('Произошла ошибка:', err);
process.exit(1);
});
http.request.uri.path contains "/login"Если вам достался сайт с уже установленной капчей или другой системой защиты и при этом нет доступа к коду — ничего страшного! Определить, какая именно технология используется, достаточно легко. А для проверки корректности работы можно использовать сервис распознавания CapMonster Cloud в изолированной тестовой среде, чтобы убедиться, что механизм обработки токенов и логика проверки функционируют корректно.
В случае с Cloudflare Challenge — достаточно распознать систему, изучить её поведение и убедиться, что защита функционирует корректно. В статье мы показали, как определить Cloudflare Challenge и где найти инструкции по её подключению или перенастройке, чтобы уверенно поддерживать защиту и контролировать её работу.