logo
bars

DataDome CAPTCHA
и CapMonster Cloud

Решение капчи, установка на сайт и тестирование.
Вам достался «по наследству» сайт с подключённой капчей или другой защитой, но доступа к исходному коду нет? В такой ситуации возникают вопросы: какую именно систему защиты использует сайт, правильно ли она установлена и как проверить её работу?

В этой статье мы постарались дать ответы на все вопросы. А начать решение задачи нужно с определения того, какая система защиты используется. Для этого можно обратиться к списку популярных капч и систем антибот-защиты, где представлены визуальные примеры и ключевые признаки, которые могут помочь быстро определить, с чем вы имеете дело.

Если вы обнаружили, что на вашем сайте используется DataDome CAPTCHA, следующим шагом станет более подробное изучение её свойств и самой работы. Также в этой статье вы можете изучить инструкцию по подключению системы DataDome CAPTCHA, чтобы полностью разобраться, как она функционирует на вашем сайте. Это позволит не только понимать текущую защиту, но и грамотно планировать её поддержку.

Что такое DataDome
Что такое DataDome
DataDome — это система защиты от ботов и автоматических атак, которая анализирует поведение посетителей и сетевые параметры, чтобы отличить реальных пользователей от вредоносного трафика и обеспечить стабильную работу сайта или приложения.
Background
Виды DataDome CAPTCHA
Поведенческий анализ
Поведенческий анализ
Оценка действий пользователя (клики, прокрутка, скорость взаимодействия).
JavaScript-проверка
JavaScript-проверка
Скрытая проверка браузера и его окружения.
Сетевая проверка
Сетевая проверка
Анализ IP-адресов, заголовков, прокси и известных бот-сетей.
Challenge
Challenge
Показ капчи (обычно в виде слайдера “Смахните вправо, чтобы заполнить головоломку”), если система сомневается.

Как решить DataDome CAPTCHA через CapMonster Cloud

При тестировании защиты DataDome важно убедиться, что она корректно интегрирована и реагирует на подозрительный трафик. Для ручной проверки откройте страницу, защищённую DataDome, и убедитесь, что система активна.
Попробуйте выполнить запрос, имитирующий подозрительное поведение (например, слишком частые обновления страницы или отправку формы без валидных данных) — DataDome должен заблокировать доступ или показать защитную страницу.
Для автоматического тестирования и распознавания капчи можно использовать специализированные сервисы, например, CapMonster Cloud — инструмент, который принимает параметры капчи, обрабатывает их на своих серверах и возвращает готовое решение. Это решение (токен или куки) можно подставить в форму или браузер, чтобы пройти проверку без участия пользователя.

Работа с CapMonster Cloud через API обычно включает следующие шаги:

Создание задачи (Task)Создание задачи (Task)
arrow
Отправка запроса к APIОтправка запроса к API
arrow
Получение результатаПолучение результата
arrow
Подстановка токена на страницуПодстановка токена на страницу
arrow
Распознавание DataDome CAPTCHA с использованием готовых библиотек
Сервис CapMonster Cloud предоставляет готовые библиотеки для удобной работы на языках Python, JavaScript (Node.js).
Python
JavaScript
Решение DataDome и подстановка куки
Пример на Node.js для полного цикла распознавания капчи на вашей веб-странице. Возможные подходы: использовать HTTP-запросы для получения HTML и параметров системы защиты, отправить ответ и обработать результат. Или с помощью инструментов для автоматизации (например, Playwright) — открыть страницу, дождаться проверки, отправить параметры через клиент CapMonster Cloud, получить результат, подставить куки в браузер (для тестирования вы можете использовать как правильные, так и некорректные данные) и увидеть результат.

// npx playwright install chromium

import { chromium } from 'playwright';
import { CapMonsterCloudClientFactory, ClientOptions, DataDomeRequest } from '@zennolab_com/capmonstercloud-client';

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

// Ваш сайт под защитой DataDome
const TARGET_URL = 'https://example.com/';

const USER_AGENT = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.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 browser = await chromium.launch({ headless: true });
  const context = await browser.newContext({ userAgent: USER_AGENT });
  const page = await context.newPage();

  // Переходим на сайт
  await page.goto(TARGET_URL, { waitUntil: 'networkidle' });

  // Ищем уже установленную datadome cookie (если есть)
  const existingDd = (await context.cookies()).find(c => /datadome|dd_/i.test(c.name));

  // Ищем iframe DataDome -> captcha URL
  const captchaUrl = await page.evaluate(() =>
    Array.from(document.querySelectorAll('iframe[src]'))
      .find(i => /captcha-delivery\.com\/captcha/i.test(i.src))
      ?.src || null
  );

  console.log(`=== Извлечённые параметры DataDome ===`);
  console.log(`captchaUrl:`, captchaUrl || 'не найден');
  console.log(`текущая datadome cookie::`, existingDd ? ${existingDd.name}=${existingDd.value}` : 'нет');

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

  // Отправляем задачу в CapMonster
  console.log(`Отправляем задачу DataDome в CapMonster......`);

  // Отправляем задачу на решение DataDome
  const solve = await cm.Solve(new DataDomeRequest({
    _class: "DataDome",
    websiteURL: TARGET_URL,
    userAgent: USER_AGENT,
    proxy,
    metadata: {
      captchaUrl: captchaUrl || undefined,
      datadomeCookie: existingDd
        ? `${existingDd.name}=${existingDd.value}`
        : undefined
    }
  }));

  const sol = solve?.solution;

  // Получаем домен и нужные куки из решения
  const host = new URL(TARGET_URL).hostname;
  const domainKey =
    Object.keys(sol.domains).find(d => d.includes(host))
    || Object.keys(sol.domains)[0];

  const cookiesArr = sol.domains[domainKey]?.cookies || [];

  console.log(`\n=== Куки от CapMonster ===`);
  cookiesArr.forEach(c => console.log(`${c.name}=${c.value}`));

  const ddSolved =
    cookiesArr.find(c => c.name?.toLowerCase() === 'datadome')
    || cookiesArr.find(c => /datadome/i.test(c.name));

  // Устанавливаем datadome cookie в браузер
  await context.addCookies([{
    name: 'datadome',
    value: ddSolved.value,
    domain: '.' + host,
    path: '/',
    httpOnly: ddSolved.httpOnly ?? true,
    secure: ddSolved.secure ?? true,
    sameSite: ddSolved.sameSite ?? 'Lax'
  }]);

  console.log(`Установлена cookie datadome:`, ddSolved.value);

  // Повторно открываем сайт после вставки cookie
  const page2 = await context.newPage();
  const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });

  console.log(`Статус после установки cookie:: ${resp2?.status()}`);

  await browser.close();
}

main();
  
Как подключить DataDome CAPTCHA к своему сайту
Чтобы уверенно ориентироваться в работе капчи на вашем сайте, понимать логику её проверки, заново подключить или перенастроить, рекомендуем вам изучить этот раздел. В нём описан процесс подключения защиты — это поможет быстро разобраться во всех нюансах.

1. Войдите в свой аккаунт или зарегистрируйтесь в DataDome и получите ключи (client-side и server-side).

Важно: для регистрации необходимо использовать корпоративный рабочий e-mail, принадлежащий вашей компании.

После регистрации вы попадёте в админ-панель.

2. Подключите сайт (домен) в панели DataDome.

Добавьте ваш домен в системе и выберите параметры защиты:

  • Web Protection (защита HTTP-трафика)
  • Bot detection & mitigation
  • Frequency & behavior analysis
  • Challenge pages (страница с проверкой DataDome)
  • JS tag configuration

3. Установите интеграцию на стороне сервера.

Используйте Protection API или выберите готовый модуль для вашего стека (Node.js / Express, Nginx, Cloudflare, Java (Tomcat/Jetty/Vert.x), Go и т.д.).

Установите официальный SDK / middleware DataDome, настройте сервер ключ (server-side key) в конфигурации.

Пример интеграции DataDome в Node.js:

DataDome защищает сервер от ботов и подозрительных запросов, автоматически показывая challenge (капчу) при необходимости. Модуль можно использовать с Express или со встроенным HTTP сервером Node.js.

Установка

Для Express:

npm install @datadome/module-express

Для HTTP-модуля Node.js:

npm install @datadome/module-http

Поддерживаются Node.js версии 18 и выше. Необходим серверный ключ, доступный в вашей панели DataDome.

Интеграция с ExpressИнтеграция с Express
arrow
Интеграция с HTTP сервером Node.jsИнтеграция с HTTP сервером Node.js
arrow

Настройки модуля

Вы можете передавать конфигурацию при создании клиента:


const datadomeClient = new DatadomeExpress('YOUR_SERVER_KEY', {
  timeout: 150, // таймаут в мс, после которого запрос пропускается
  urlPatternInclusion: null, // какие URL проверять
  urlPatternExclusion: /\.(avi|flv|mka|mkv|mov|mp4|mpeg|mpg|mp3|flac|ogg|ogm|opus|wav|webm|webp|bmp|gif|ico|jpeg|jpg|png|svg|svgz|swf|eot|otf|ttf|woff|woff2|css|less|js|map|json|avif|xml|gz|zip)$/i,
  endpointHost: 'api.datadome.co',
});

Расширенные возможности:

  • Логирование заголовков DataDome (enrichedHeaders)
  • CSP nonce: app.use(datadomeClient.middleware({ nonce: 'VALUE' }))
  • Переопределение метаданных запроса через handlers

HelpIcon

Более подробно о подключении серверной части можете узнать в официальной документации.

4. Подключите клиентскую часть.

Вставьте JS Tag в <head> вашего сайта:


<head>
  <script>
    window.ddjskey = 'YOUR_DATADOME_JS_KEY';
    window.ddoptions = {
      // Добавьте ваши настройки здесь (опционально)
    };
  </script>
  <script src="https://js.datadome.co/tags.js" async></script>
  <!-- Остальные элементы head -->
</head>

YOUR_DATADOME_JS_KEY → замените на ваш Client-Side ключ.

Скрипт лучше загружать в начале <head>, чтобы DataDome мог перехватывать запросы и правильно отслеживать поведение пользователей.

Если сайт использует CSP, добавьте следующие директивы:

Для inline скриптаДля inline скрипта
arrow
Для загрузки внешних скриптовДля загрузки внешних скриптов
arrow

HelpIcon

Более подробно о подключении клиентской части можете узнать в официальной документации DataDome CAPTCHA.

Проверка результата

DataDome создаёт куки datadome= после успешного прохождения проверки. Эти куки автоматически отправляются пользователем — и сервер пропускает запрос. Если куки нет или оно невалидно — DataDome снова покажет челлендж.

Background
Возможные ошибки и отладка
Bug Icon
Неверный ключ или домен
DataDome не защищает сайт корректно, challenge не появляется. Проверьте, что используется правильный Server-Side Key и что домен добавлен в панели DataDome.
Bug Icon
Таймаут обработки запроса
Сервер не дождался ответа от DataDome API. Увеличьте значение timeout в настройках модуля.
Bug Icon
Пустой токен или неверный параметр
Ошибка при передаче результата проверки на сервер. Убедитесь, что клиентский JS Tag корректно установлен и возвращает ddtoken.
Bug Icon
Challenge не пройден
Запрос помечен как подозрительный или токен просрочен. Для диагностики включите логирование через параметр logger модуля и отслеживайте события blocked и valid.
Проверка устойчивости защиты
Рекомендации по безопасности и оптимизации
Храните <b>Server-Side Key</b> только на сервере, не передавайте его в клиентскую часть.
Включайте логирование событий через <b>logger</b> или слушатели <b>blocked/valid</b>, чтобы отслеживать причины блокировок.
Разместите ссылки на <b>Политику конфиденциальности</b> и <b>Условия использования DataDome</b> на страницах с формами, как это рекомендуется для прозрачности перед пользователями.
Заключение

Если вам достался сайт с уже установленной капчей или другой системой защиты и при этом нет доступа к коду — ничего страшного! Определить, какая именно технология используется, достаточно легко. А для проверки корректности работы можно использовать сервис распознавания CapMonster Cloud в изолированной тестовой среде, чтобы убедиться, что механизм обработки токенов и логика проверки функционируют корректно.

В случае с DataDome CAPTCHA — достаточно распознать систему, изучить её поведение и убедиться, что защита функционирует корректно. В статье мы показали, как определить DataDome CAPTCHA и где найти инструкции по её подключению или перенастройке, чтобы уверенно поддерживать защиту и контролировать её работу.

Conclusion
Полезные ссылки
DocIconДокументация DataDome CAPTCHADocIconДокументация CapMonster Cloud (работа с DataDome CAPTCHA)