logo
bars

DataDome CAPTCHA
e CapMonster Cloud

Solução de CAPTCHA, instalação no site e testes.
Herdou um site com captcha ou outra proteção mas sem acesso ao código-fonte? É natural perguntar qual solução está instalada, se está configurada corretamente e como testá-la.

Neste artigo procurámos responder a todas as questões importantes. Para começar a resolver o problema, o primeiro passo é identificar que sistema de proteção está a ser utilizado. Para isso, pode consultar a lista de captchas e sistemas de proteção antibot mais populares, onde encontrará exemplos visuais e sinais principais que ajudam a perceber rapidamente com o que está a lidar.

Se verificar que o seu site utiliza DataDome CAPTCHA, o passo seguinte é analisar mais detalhadamente as suas características e o seu funcionamento. Neste mesmo artigo também pode consultar o guia de integração de DataDome CAPTCHA, para compreender totalmente como o sistema funciona no seu site. Isto permitirá não só entender a proteção atual, como também planear corretamente a sua manutenção.

O que é DataDome
O que é DataDome
DataDome é um sistema de proteção contra bots e ataques automáticos que analisa o comportamento dos visitantes e parâmetros de rede para diferenciar usuários reais de tráfego malicioso e garantir o funcionamento estável do site ou aplicativo.
Background
Exemplos de DataDome CAPTCHA
Análise comportamental
Análise comportamental
Avaliação das ações do usuário (cliques, rolagem, velocidade de interação).
Verificação JavaScript
Verificação JavaScript
Verificação oculta do navegador e seu ambiente.
Verificação de rede
Verificação de rede
Análise de endereços IP, headers, proxies e redes de bots conhecidas.
Challenge
Challenge
Exibição do CAPTCHA (geralmente como um slider “Deslize para a direita para completar o puzzle”) se o sistema tiver dúvidas.

Como resolver o CAPTCHA DataDome via CapMonster Cloud

Ao testar a proteção do DataDome, é importante garantir que ela esteja corretamente integrada e responda a tráfego suspeito. Para verificação manual, abra uma página protegida pelo DataDome e verifique se o sistema está ativo.
Tente realizar uma solicitação simulando comportamento suspeito (por exemplo, atualizar a página com muita frequência ou enviar formulário sem dados válidos) — o DataDome deve bloquear o acesso ou exibir uma página de proteção.
Para testes automáticos e resolução de CAPTCHA, você pode usar serviços especializados, como o CapMonster Cloud — ferramenta que processa os parâmetros do CAPTCHA em seus servidores e retorna uma solução pronta. Essa solução (token ou cookie) pode ser usada em um formulário ou navegador para passar pela verificação sem a participação do usuário.

Trabalhar com o CapMonster Cloud através da API normalmente envolve os passos seguintes:

Criação da tarefaCriação da tarefa
arrow
Envio do pedido APIEnvio do pedido API
arrow
Receção do resultadoReceção do resultado
arrow
Aplicação do token na páginaAplicação do token na página
arrow
Reconhecimento de CAPTCHA DataDome usando bibliotecas prontas
O serviço CapMonster Cloud fornece bibliotecas prontas para fácil uso em Python e JavaScript (Node.js).
Python
JavaScript
Solução DataDome e inserção de cookie
Exemplo em Node.js para o ciclo completo de reconhecimento de CAPTCHA em sua página web. Abordagens possíveis: usar requisições HTTP para obter HTML e parâmetros do sistema de proteção, enviar resposta e processar resultado. Ou usar ferramentas de automação (como Playwright) — abrir a página, aguardar verificação, enviar parâmetros pelo cliente CapMonster Cloud, receber resultado, inserir cookies no navegador (para testes pode usar dados corretos e incorretos) e ver o resultado.

// npx playwright install chromium

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

// Insira sua chave API do CapMonster Cloud
const API_KEY = 'YOUR_API_KEY';

// Seu site está protegido pelo 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

// Configuração de proxy
const proxy = {
  proxyType: "http",
  proxyAddress: '8.8.8.8',
  proxyPort: 8080,
  proxyLogin: 'proxyLogin',
  proxyPassword: 'proxyPassword'
};

async function main() {

  // Iniciando navegador
  const browser = await chromium.launch({ headless: true });
  const context = await browser.newContext({ userAgent: USER_AGENT });
  const page = await context.newPage();

  // Acessando site
  await page.goto(TARGET_URL, { waitUntil: 'networkidle' });

  // Procurando cookie datadome existente (se houver)
  const existingDd = (await context.cookies()).find(c => /datadome|dd_/i.test(c.name));

  // Procurando iframe DataDome -> URL do CAPTCHA
  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(`=== Parâmetros extraídos do DataDome ===`);
  console.log(`captchaUrl:`, captchaUrl || 'não encontrado');
  console.log(`cookie datadome atual::`, existingDd ? ${existingDd.name}=${existingDd.value}` : 'nenhum');

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

  // Enviando tarefa para CapMonster
  console.log(`Enviando tarefa DataDome para CapMonster......`);

  // Enviando tarefa para resolução 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;

  // Obtendo domínio e cookies necessários da solução
  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=== Cookies do 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));

  // Definindo cookie datadome no navegador
  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 definido:`, ddSolved.value);

  // Reabrindo site após inserir cookie
  const page2 = await context.newPage();
  const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });

  console.log(`Status após definir cookie:: ${resp2?.status()}`);

  await browser.close();
}

main();
  
Como conectar DataDome CAPTCHA ao seu site
Para entender com segurança como a CAPTCHA funciona no seu site, compreender a lógica de verificação e reconectar ou reconfigurar, recomendamos estudar esta seção. Ela descreve o processo de integração da proteção — ajudando a entender rapidamente todos os detalhes.

1. Faça login na sua conta ou registre-se no DataDome e obtenha as chaves (client-side e server-side).

Importante: use um e-mail corporativo para registro.

Após o registro, você terá acesso ao painel administrativo.

2. Adicione o site (domínio) no painel DataDome.

Adicione seu domínio no sistema e escolha os parâmetros de proteção:

  • Proteção Web (proteção de tráfego HTTP)
  • Bot detection & mitigation
  • Frequency & behavior analysis
  • Páginas de challenge (verificação DataDome)
  • JS tag configuration

3. Instale a integração no lado do servidor.

Use Protection API ou escolha um módulo pronto para sua stack (Node.js / Express, Nginx, Cloudflare, Java (Tomcat/Jetty/Vert.x), Go etc.).

Instale o SDK/middleware oficial DataDome, configure a server-side key.

Exemplo de integração DataDome em Node.js:

DataDome protege o servidor contra bots e solicitações suspeitas, exibindo automaticamente challenge quando necessário. O módulo pode ser usado com Express ou servidor HTTP integrado Node.js.

Instalação

Para Express:

npm install @datadome/module-express

Para módulo HTTP Node.js:

npm install @datadome/module-http

Suporta Node.js 18+. Chave server-side necessária do painel DataDome.

Integração com ExpressIntegração com Express
arrow
Integração com servidor HTTP Node.jsIntegração com servidor HTTP Node.js
arrow

Configurações do módulo

Você pode passar a configuração ao criar o cliente:


const datadomeClient = new DatadomeExpress('YOUR_SERVER_KEY', {
  timeout: 150, // timeout em ms após o qual a solicitação é permitida
  urlPatternInclusion: null, // quais URLs verificar
  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',
});

Opções avançadas:

  • Registro de headers DataDome (enrichedHeaders)
  • CSP nonce: app.use(datadomeClient.middleware({ nonce: 'VALUE' }))
  • Sobrescrever metadados da requisição via handlers

HelpIcon

Mais detalhes sobre integração do lado do servidor em documentação oficial.

4. Conecte a parte cliente.

Insira a JS Tag no <head> do seu site:


<head>
  <script>
    window.ddjskey = 'YOUR_DATADOME_JS_KEY';
    window.ddoptions = {
      // Adicione suas configurações aqui (opcional)
    };
  </script>
  <script src="https://js.datadome.co/tags.js" async></script>
  <!-- Outros elementos do head -->
</head>

YOUR_DATADOME_JS_KEY → Substitua pela sua Client-Side Key.

O script deve ser carregado no início do <head> para que o DataDome capture solicitações e acompanhe corretamente o comportamento do usuário.

Se o site usa CSP, adicione as seguintes diretivas:

Para script inlinePara script inline
arrow
Para carregar scripts externosPara carregar scripts externos
arrow

HelpIcon

Mais detalhes sobre integração cliente em documentação oficial DataDome CAPTCHA.

Verificação de resultado

O DataDome cria o cookie datadome= após uma verificação bem-sucedida. Esse cookie é enviado automaticamente pelo usuário, e o servidor permite a solicitação. Se o cookie estiver ausente ou for inválido, o DataDome exibirá o desafio novamente.

Background
Possíveis erros e depuração
Bug Icon
Chave ou domínio inválido
DataDome não protege corretamente o site; challenge não aparece. Verifique se a Server-Side Key correta está sendo usada e se o domínio foi adicionado no painel DataDome.
Bug Icon
Timeout de processamento da solicitação
O servidor não recebeu resposta da API DataDome. Aumente o valor do timeout nas configurações do módulo.
Bug Icon
Token vazio ou parâmetro inválido
Erro ao enviar o resultado da verificação para o servidor. Certifique-se de que a tag JS do cliente está corretamente instalada e retorna ddtoken.
Bug Icon
Challenge não concluído
A solicitação foi marcada como suspeita ou o token expirou. Para diagnóstico, ative logging via parâmetro logger do módulo e monitore os eventos blocked e valid.
Verificações de robustez
Recomendações de segurança e otimização
Armazene a <b>Server-Side Key</b> apenas no servidor; não a envie para o cliente.
Ative o registro de eventos via <b>logger</b> ou listeners <b>blocked/valid</b> para monitorar os motivos de bloqueios.
Coloque links para a <b>Política de Privacidade</b> e os <b>Termos de Uso DataDome</b> nas páginas de formulário para transparência com os usuários.
Conclusão

Se herdou um site que já tem um captcha ou outro sistema de proteção instalado e não tem acesso ao código, não há problema! É bastante fácil identificar qual a tecnologia que está a ser utilizada. Para verificar se tudo está a funcionar corretamente, pode usar o serviço de reconhecimento CapMonster Cloud num ambiente de teste isolado, para garantir que o mecanismo de processamento de tokens e a lógica de verificação estão a funcionar corretamente.

No caso de DataDome CAPTCHA, basta identificar o sistema, analisar o seu comportamento e confirmar que a proteção está a funcionar corretamente. No artigo, mostramos como identificar DataDome CAPTCHA e onde encontrar instruções para a sua integração ou reconfiguração, para que possa manter a proteção com confiança e controlar o seu funcionamento.

Conclusion
Links úteis
DocIconDocumentação DataDome CAPTCHADocIconDocumentação CapMonster Cloud (trabalhando com DataDome CAPTCHA)