logo
bars

DataDome CAPTCHA
en CapMonster Cloud

CAPTCHA-oplossing, installatie op de website en testen.
Heb je een site geërfd met een ingebouwde captcha of andere bescherming, maar zonder toegang tot de broncode? Dan wil je natuurlijk weten welke oplossing draait, of die goed is ingesteld en hoe je de werking test.

In dit artikel hebben we geprobeerd antwoord te geven op alle belangrijke vragen. De eerste stap bij het oplossen van het vraagstuk is vaststellen welk beveiligingssysteem wordt gebruikt. Daarvoor kun je de lijst met populaire captcha’s en anti-botbeveiligingssystemen raadplegen, met visuele voorbeelden en kernkenmerken die je helpen snel te bepalen waarmee je te maken hebt.

Als je ontdekt dat je website DataDome CAPTCHA gebruikt, is de volgende stap om de eigenschappen en werking ervan uitgebreider te bestuderen. In dit artikel vind je ook een handleiding voor het integreren van DataDome CAPTCHA, zodat je volledig begrijpt hoe het systeem op je website werkt. Zo kun je niet alleen de huidige bescherming beter doorgronden, maar ook het onderhoud ervan goed plannen.

Wat is DataDome
Wat is DataDome
DataDome is een systeem ter bescherming tegen bots en geautomatiseerde aanvallen dat het gedrag van bezoekers en netwerkparameters analyseert om echte gebruikers te onderscheiden van kwaadaardig verkeer en zo de stabiele werking van een website of applicatie te waarborgen.
Background
Voorbeelden van DataDome CAPTCHA
Gedragsanalyse
Gedragsanalyse
Beoordeling van gebruikersacties (klikken, scrollen, interactiesnelheid).
JavaScript-check
JavaScript-check
Verborgen controle van browser en omgeving.
Netwerkcheck
Netwerkcheck
Analyse van IP-adressen, headers, proxies en bekende botnetwerken.
Challenge
Challenge
CAPTCHA-weergave (meestal als slider “Sleep naar rechts om de puzzel te voltooien”) wanneer het systeem twijfel heeft.

Hoe DataDome CAPTCHA op te lossen via CapMonster Cloud

Bij het testen van DataDome-bescherming is het belangrijk om te controleren of deze correct is geïntegreerd en reageert op verdacht verkeer. Voor handmatige controle, open een DataDome-beschermde pagina en controleer of het systeem actief is.
Probeer een verzoek uit te voeren dat verdacht gedrag simuleert (bijv. te vaak pagina verversen of een formulier indienen zonder geldige gegevens) — DataDome moet de toegang blokkeren of een beschermpagina tonen.
Voor automatische tests en CAPTCHA-oplossing kun je gespecialiseerde services zoals CapMonster Cloud gebruiken — een tool die CAPTCHA-parameters verwerkt op hun servers en een kant-en-klare oplossing teruggeeft. Deze oplossing (token of cookie) kan in een formulier of browser worden ingevoerd om de verificatie zonder gebruiker te voltooien.

Werken met CapMonster Cloud via de API bestaat doorgaans uit de volgende stappen:

Taak aanmakenTaak aanmaken
arrow
API-aanvraag versturenAPI-aanvraag versturen
arrow
Resultaat ontvangenResultaat ontvangen
arrow
Token op de pagina plaatsenToken op de pagina plaatsen
arrow
DataDome CAPTCHA-herkenning met kant-en-klare bibliotheken
De CapMonster Cloud-service biedt kant-en-klare bibliotheken voor eenvoudig gebruik in Python en JavaScript (Node.js).
Python
JavaScript
DataDome-oplossing en cookie-injectie
Node.js-voorbeeld voor de volledige cyclus van CAPTCHA-herkenning op je webpagina. Mogelijke benaderingen: gebruik HTTP-verzoeken om HTML en parameters van het beveiligingssysteem te verkrijgen, verzend het antwoord en verwerk het resultaat; of gebruik automatiseringstools (bijv. Playwright) — open de pagina, wacht op verificatie, stuur parameters via de CapMonster Cloud-client, ontvang het resultaat, voeg cookies in de browser in (voor testen kunnen zowel correcte als incorrecte gegevens worden gebruikt) en bekijk het resultaat.

// npx playwright install chromium

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

// Voer je CapMonster Cloud API-sleutel in
const API_KEY = 'YOUR_API_KEY';

// Je website is beschermd door 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

// Proxy-instellingen
const proxy = {
  proxyType: "http",
  proxyAddress: '8.8.8.8',
  proxyPort: 8080,
  proxyLogin: 'proxyLogin',
  proxyPassword: 'proxyPassword'
};

async function main() {

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

  // Ga naar de website
  await page.goto(TARGET_URL, { waitUntil: 'networkidle' });

  // Zoek naar bestaande datadome-cookie (indien aanwezig)
  const existingDd = (await context.cookies()).find(c => /datadome|dd_/i.test(c.name));

  // Zoek DataDome iframe -> 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(`=== Uitgehaalde DataDome-parameters ===`);
  console.log(`captchaUrl:`, captchaUrl || 'niet gevonden');
  console.log(`huidige datadome-cookie::`, existingDd ? ${existingDd.name}=${existingDd.value}` : 'geen');

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

  // Verstuur taak naar CapMonster
  console.log(`Verstuur DataDome-taak naar CapMonster......`);

  // Verstuur taak voor DataDome-oplossing
  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;

  // Ontvang domein en benodigde cookies uit de oplossing
  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 van 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));

  // Stel datadome-cookie in browser in
  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(`datadome-cookie ingesteld:`, ddSolved.value);

  // Open de site opnieuw na het invoegen van de cookie
  const page2 = await context.newPage();
  const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });

  console.log(`Status na cookie-instelling:: ${resp2?.status()}`);

  await browser.close();
}

main();
  
Hoe DataDome CAPTCHA aan je website te koppelen
Om de werking van CAPTCHA op je site te begrijpen, de verificatielogica te leren en opnieuw te koppelen of opnieuw in te stellen, raden we aan deze sectie te bestuderen. Hierin wordt het beschermingsintegratieproces uitgelegd, zodat je snel alle details kunt begrijpen.

1. Log in op je account of registreer bij DataDome en verkrijg de client-side en server-side sleutels.

Belangrijk: gebruik een bedrijfs-e-mail voor registratie.

Na registratie krijg je toegang tot het admin-paneel.

2. Voeg je website (domein) toe in het DataDome-paneel.

Voeg je domein toe aan het systeem en kies de beschermingsinstellingen:

  • Webbescherming (HTTP-verkeer bescherming)
  • Bot detection & mitigation
  • Frequency & behavior analysis
  • Challenge-pagina's (DataDome verificatiepagina)
  • JS tag configuration

3. Installeer server-side integratie.

Gebruik Protection API of kies een module voor je stack (Node.js / Express, Nginx, Cloudflare, Java (Tomcat/Jetty/Vert.x), Go, enz.).

Installeer de officiële DataDome SDK/middleware en configureer de server-side key.

Voorbeeld DataDome-integratie in Node.js:

DataDome beschermt de server tegen bots en verdachte verzoeken en toont automatisch challenge indien nodig. Module kan met Express of ingebouwde HTTP-server Node.js worden gebruikt.

Installatie

Voor Express:

npm install @datadome/module-express

Voor Node.js HTTP-module:

npm install @datadome/module-http

Node.js 18+ ondersteund. Server-side key vereist vanuit DataDome-paneel.

Integratie met ExpressIntegratie met Express
arrow
Integratie met Node.js HTTP-serverIntegratie met Node.js HTTP-server
arrow

Module-instellingen

Je kunt configuratie doorgeven bij het maken van de client:


const datadomeClient = new DatadomeExpress('YOUR_SERVER_KEY', {
  timeout: 150, // timeout in ms waarna het verzoek wordt toegestaan
  urlPatternInclusion: null, // welke URL's te controleren
  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',
});

Geavanceerde opties:

  • DataDome headers loggen (enrichedHeaders)
  • CSP nonce: app.use(datadomeClient.middleware({ nonce: 'VALUE' }))
  • Overschrijven van request-metadata via handlers

HelpIcon

Meer details over server-side integratie in officiële documentatie.

4. Integreer client-side.

Plaats de JS-tag in het <head> van je website:


<head>
  <script>
    window.ddjskey = 'YOUR_DATADOME_JS_KEY';
    window.ddoptions = {
      // Voeg hier je instellingen toe (optioneel)
    };
  </script>
  <script src="https://js.datadome.co/tags.js" async></script>
  <!-- Andere head-elementen -->
</head>

YOUR_DATADOME_JS_KEY → Vervang door je Client-Side key.

Het script moet aan het begin van <head> worden geladen zodat DataDome verzoeken kan onderscheppen en gebruikersgedrag correct volgen.

Gebruik CSP? Voeg de volgende richtlijnen toe:

Voor inline scriptVoor inline script
arrow
Voor externe scripts ladenVoor externe scripts laden
arrow

HelpIcon

Meer details over client-side integratie in DataDome CAPTCHA officiële documentatie.

Resultaatcontrole

DataDome maakt de cookie datadome= aan na een succesvolle verificatie. Deze cookie wordt automatisch door de gebruiker verzonden, en de server laat het verzoek door. Als de cookie ontbreekt of ongeldig is, toont DataDome opnieuw een challenge.

Background
Mogelijke fouten en debugging
Bug Icon
Ongeldige sleutel of domein
DataDome beschermt de site niet correct; challenge verschijnt niet. Controleer of de juiste Server-Side Key wordt gebruikt en het domein is toegevoegd in het DataDome-paneel.
Bug Icon
Request-verwerking timeout
De server heeft geen antwoord van de DataDome API ontvangen. Verhoog de timeout-waarde in de module-instellingen.
Bug Icon
Lege token of ongeldige parameter
Fout bij het doorgeven van de verificatieresultaten naar de server. Zorg dat de client JS-tag correct is geïnstalleerd en ddtoken retourneert.
Bug Icon
Challenge niet voltooid
Het verzoek is als verdacht gemarkeerd of token is verlopen. Voor diagnose, schakel logging in met de moduleparameter logger en volg de events blocked en valid.
Controle van de robuustheid
Aanbevelingen voor veiligheid en optimalisatie
Bewaar de <b>Server-Side Key</b> alleen op de server; geef deze niet aan de client.
Schakel event logging in via <b>logger</b> of <b>blocked/valid</b>-listeners om de oorzaak van blokkades te volgen.
Plaats links naar <b>Privacybeleid</b> en <b>DataDome Gebruiksvoorwaarden</b> op formulierspagina's voor transparantie naar gebruikers.
Conclusie

Als je een website in beheer krijgt waarop al een captcha of een ander beveiligingssysteem is geïnstalleerd en je geen toegang hebt tot de code, is dat geen probleem! Het is vrij eenvoudig te bepalen welke technologie precies wordt gebruikt. Voor het controleren of alles correct werkt, kun je de herkenningsservice CapMonster Cloud in een geïsoleerde testomgeving gebruiken, zodat je zeker weet dat het tokenverwerkingsmechanisme en de validatielogica correct functioneren.

In het geval van DataDome CAPTCHA is het voldoende om het systeem te herkennen, het gedrag te analyseren en te bevestigen dat de beveiliging correct werkt. In het artikel hebben we laten zien hoe je DataDome CAPTCHA kunt herkennen en waar je instructies vindt om het te koppelen of opnieuw te configureren, zodat je de bescherming met vertrouwen kunt onderhouden en de werking onder controle kunt houden.

Conclusion
Handige links
DocIconDataDome CAPTCHA-documentatieDocIconCapMonster Cloud-documentatie (werken met DataDome CAPTCHA)