DataDome CAPTCHA
und CapMonster Cloud

CAPTCHA-Lösung, Installation auf der Website und Testverfahren.

Preise für DataDome CAPTCHA-Lösung

CAPTCHA
Preis (USD)
$ 2.20
1000 Token
Sie haben eine Website mit eingebauter Captcha- oder Bot-Schutzlösung übernommen, aber keinen Zugriff auf den Quellcode? Dann stellt sich schnell die Frage: Welche Lösung ist installiert, ist sie korrekt konfiguriert und wie lässt sie sich testen?

In diesem Artikel haben wir versucht, alle wichtigen Fragen zu beantworten. Der erste Schritt bei der Lösung der Aufgabe besteht darin festzustellen, welches Schutzsystem eingesetzt wird. Dazu können Sie die Liste beliebter Captchas und Anti-Bot-Schutzsysteme heranziehen, in der visuelle Beispiele und zentrale Merkmale aufgeführt sind, die Ihnen helfen, schnell zu erkennen, womit Sie es zu tun haben.

Wenn Sie feststellen, dass auf Ihrer Website DataDome CAPTCHA eingesetzt wird, besteht der nächste Schritt darin, seine Eigenschaften und Funktionsweise genauer zu untersuchen. Ebenfalls in diesem Artikel finden Sie eine Anleitung zur Integration von DataDome CAPTCHA, damit Sie vollständig verstehen, wie das System auf Ihrer Website arbeitet. So können Sie nicht nur den aktuellen Schutz besser einschätzen, sondern auch seine Wartung vorausschauend planen.

Was ist DataDome
Was ist DataDome
DataDome ist ein Schutzsystem gegen Bots und automatisierte Angriffe, das das Verhalten der Besucher und Netzparameter analysiert, um echte Nutzer von schädlichem Traffic zu unterscheiden und den stabilen Betrieb einer Website oder Anwendung sicherzustellen.
Background
Beispiele von DataDome CAPTCHA
Verhaltensanalyse
Verhaltensanalyse
Bewertung des Nutzerverhaltens (Klicks, Scrollen, Interaktionsgeschwindigkeit).
JavaScript-Überprüfung
JavaScript-Überprüfung
Verborgene Prüfung des Browsers und seiner Umgebung.
Netzwerkprüfung
Netzwerkprüfung
Analyse von IP-Adressen, Headern, Proxys und bekannten Bot-Netzen.
Challenge
Challenge
Anzeigen eines CAPTCHA (meist als Slider „Nach rechts wischen, um das Puzzle zu lösen“), wenn das System zweifelt.

Wie man die DataDome CAPTCHA über CapMonster Cloud löst

Bei der Prüfung des DataDome-Schutzes ist es wichtig sicherzustellen, dass er korrekt integriert ist und auf verdächtigen Traffic reagiert. Für eine manuelle Überprüfung öffnen Sie eine durch DataDome geschützte Seite und stellen Sie sicher, dass das System aktiv ist.
Versuchen Sie eine Anfrage auszuführen, die verdächtiges Verhalten imitiert (z. B. zu häufiges Aktualisieren der Seite oder das Senden eines Formulars ohne gültige Daten) — DataDome sollte den Zugriff blockieren oder eine Schutzseite anzeigen.
Für automatisierte Tests und CAPTCHA-Erkennung können Sie spezialisierte Dienste wie CapMonster Cloud verwenden — ein Tool, das CAPTCHA-Parameter entgegennimmt, sie auf seinen Servern verarbeitet und eine fertige Lösung zurückgibt. Diese Lösung (Token oder Cookie) kann in ein Formular oder einen Browser eingefügt werden, um die Überprüfung ohne Benutzereingriff zu bestehen.

Die Arbeit mit CapMonster Cloud über die API umfasst in der Regel folgende Schritte:

Aufgabe erstellenAufgabe erstellen
arrow
API-Anfrage sendenAPI-Anfrage senden
arrow
Ergebnis empfangenErgebnis empfangen
arrow
Token auf der Seite einsetzenToken auf der Seite einsetzen
arrow
DataDome CAPTCHA-Erkennung mit fertigen Bibliotheken
Der Dienst CapMonster Cloud stellt fertige Bibliotheken für bequeme Nutzung in Python und JavaScript (Node.js) bereit.
Python
JavaScript
Lösen der DataDome CAPTCHA und Einfügen der Cookies
Beispiel in Node.js für den vollständigen Prozess der CAPTCHA-Erkennung auf Ihrer Webseite. Mögliche Ansätze: HTTP-Anfragen zum Abrufen von HTML und Schutzparametern verwenden, die Antwort senden und das Ergebnis verarbeiten. Oder mit Automatisierungswerkzeugen (z. B. Playwright) – Seite öffnen, auf die Prüfung warten, Parameter an den CapMonster Cloud-Client senden, das Ergebnis erhalten, Cookies in den Browser einfügen (für Tests können Sie sowohl korrekte als auch fehlerhafte Daten verwenden) und das Resultat sehen.

// npx playwright install chromium

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

// Geben Sie Ihren CapMonster Cloud API-Key an
const API_KEY = 'YOUR_API_KEY';

// Ihre Website unter DataDome-Schutz
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/149.0.0.0 Safari/537.36

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

async function main() {

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

  // Zur Website wechseln
  await page.goto(TARGET_URL, { waitUntil: 'networkidle' });

  // Nach bereits gesetztem datadome-Cookie suchen (falls vorhanden)
  const existingDd = (await context.cookies()).find(c => /datadome|dd_/i.test(c.name));

  // DataDome-Iframe finden → 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(`=== Extrahierte DataDome-Parameter ===`);
  console.log(`captchaUrl:`, captchaUrl || 'nicht gefunden');
  console.log(`aktuelles datadome-Cookie::`, existingDd ? ${existingDd.name}=${existingDd.value}` : 'kein Wert');

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

  // Aufgabe an CapMonster senden
  console.log(`Sende DataDome-Aufgabe an CapMonster......`);

  // DataDome-Task wird gesendet
  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;

  // Domain und benötigte Cookies aus der Lösung abrufen
  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 von 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 im Browser setzen
  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 gesetzt:`, ddSolved.value);

  // Website nach Setzen des Cookies erneut öffnen
  const page2 = await context.newPage();
  const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });

  console.log(`Status nach Cookie-Installation:: ${resp2?.status()}`);

  await browser.close();
}

main();
  
Wie man DataDome CAPTCHA auf der eigenen Website integriert
Damit Sie sicher mit dem CAPTCHA auf Ihrer Website umgehen, seine Logik verstehen und es erneut einrichten können, empfehlen wir Ihnen, diesen Abschnitt zu lesen. Er beschreibt den Integrationsprozess – das hilft Ihnen, sich schnell mit allen Details vertraut zu machen.

1. Melden Sie sich in Ihrem Konto an oder registrieren Sie sich bei DataDome und erhalten Sie Ihre Schlüssel (Client-Side und Server-Side).

Wichtig: Für die Registrierung müssen Sie eine geschäftliche Firmen-E-Mail verwenden.

Nach der Registrierung gelangen Sie ins Admin-Panel.

2. Fügen Sie die Website (Domain) im DataDome-Panel hinzu.

Fügen Sie Ihre Domain in das System ein und wählen Sie die Schutzparameter:

  • Web Protection (Schutz des HTTP-Traffics)
  • Bot detection & mitigation
  • Frequency & behavior analysis
  • Challenge pages (Seite mit DataDome-Überprüfung)
  • JS tag configuration

3. Server-seitige Integration installieren.

Verwenden Sie die Protection API oder wählen Sie ein fertiges Modul für Ihren Stack (Node.js / Express, Nginx, Cloudflare, Java (Tomcat/Jetty/Vert.x), Go usw.).

Installieren Sie das offizielle DataDome SDK / Middleware und konfigurieren Sie den Server-Side Key.

Beispiel für DataDome-Integration in Node.js:

DataDome schützt den Server vor Bots und verdächtigen Anfragen, indem bei Bedarf automatisch eine Challenge angezeigt wird. Das Modul kann mit Express oder dem integrierten HTTP-Server von Node.js verwendet werden.

Installation

Für Express:

npm install @datadome/module-express

Für den HTTP-Modul-Server in Node.js:

npm install @datadome/module-http

Unterstützt werden Node.js-Versionen ab 18. Ein serverseitiger Schlüssel ist erforderlich.

Integration mit ExpressIntegration mit Express
arrow
Integration mit dem Node.js-HTTP-ServerIntegration mit dem Node.js-HTTP-Server
arrow

Moduleinstellungen

Die Konfiguration kann bei der Client-Erstellung übergeben werden:


const datadomeClient = new DatadomeExpress('YOUR_SERVER_KEY', {
  timeout: 150, // Timeout in ms, nach dessen Ablauf die Anfrage durchgelassen wird
  urlPatternInclusion: null, // welche URLs überprüft werden
  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',
});

Erweiterte Möglichkeiten:

  • Logging der DataDome-Header (enrichedHeaders)
  • CSP-Nonce: app.use(datadomeClient.middleware({ nonce: 'VALUE' }))
  • Überschreiben der Request-Metadaten via handlers

HelpIcon

Weitere Details finden Sie in der offiziellen Dokumentation.

4. Client-seitige Integration.

Fügen Sie den JS-Tag in den <head> Ihrer Website ein:


<head>
  <script>
    window.ddjskey = 'YOUR_DATADOME_JS_KEY';
    window.ddoptions = {
      // Hier können Sie Ihre Einstellungen hinzufügen (optional)
    };
  </script>
  <script src="https://js.datadome.co/tags.js" async></script>
  <!-- Weitere head-Elemente -->
</head>

YOUR_DATADOME_JS_KEY → Ersetzen Sie dies durch Ihren Client-Side Key.

Der Skript sollte früh im <head> geladen werden, damit DataDome Anfragen abfangen und das Benutzerverhalten korrekt analysieren kann.

Wenn Ihre Website CSP verwendet, fügen Sie folgende Direktiven hinzu:

Für Inline-SkripteFür Inline-Skripte
arrow
Für externe SkripteFür externe Skripte
arrow

HelpIcon

Mehr Details zur Client-Integration finden Sie in der offiziellen Dokumentation der DataDome CAPTCHA.

Ergebnisprüfung

DataDome erstellt das Cookie datadome= nach einer erfolgreich bestandenen Prüfung. Dieses Cookie wird automatisch vom Nutzer gesendet – und der Server lässt die Anfrage durch. Wenn das Cookie fehlt oder ungültig ist, zeigt DataDome erneut eine Challenge an.

Background
Mögliche Fehler und Debugging
Bug Icon
Ungültiger Schlüssel oder Domain
DataDome schützt die Website nicht korrekt, Challenge erscheint nicht. Überprüfen Sie, ob der richtige Server-Side-Key verwendet wird und die Domain im DataDome-Panel hinzugefügt wurde.
Bug Icon
Zeitüberschreitung bei der Anfrageverarbeitung
Der Server hat nicht auf die Antwort der DataDome-API gewartet. Erhöhen Sie den Timeout-Wert in der Modulkonfiguration.
Bug Icon
Leerer Token oder ungültiger Parameter
Fehler bei der Übertragung des Prüfergebnisses an den Server. Stellen Sie sicher, dass der Client-seitige JS-Tag korrekt installiert ist und einen ddtoken zurückgibt.
Bug Icon
Challenge nicht bestanden
Die Anfrage wurde als verdächtig eingestuft oder der Token ist abgelaufen. Aktivieren Sie zur Diagnose das Logging mittels logger-Parameter und verfolgen Sie blocked- und valid-Ereignisse.
Tests der Schutzstabilität
Tipps zu Sicherheit und Optimierung
<span class="font-bold">Server-Side Key</span> ausschließlich auf dem Server speichern, nicht an den Client weitergeben.
Ereignislogging über <span class="font-bold">logger</span> oder die Listener <span class="font-bold">blocked/valid</span> aktivieren, um Blockierungsursachen zu verfolgen.
Fügen Sie Links zur <span class="font-bold">Datenschutzrichtlinie</span> und zu den <span class="font-bold">Nutzungsbedingungen von DataDome</span> auf Formularseiten hinzu – wie empfohlen, um Transparenz für Nutzer zu gewährleisten.
Fazit

Wenn Sie eine Website übernommen haben, auf der bereits ein Captcha oder ein anderes Schutzsystem installiert ist und Sie keinen Zugriff auf den Code haben, ist das kein Problem! Es ist ziemlich einfach festzustellen, welche Technologie genau verwendet wird. Und um die korrekte Funktionsweise zu überprüfen, können Sie den Erkennungsdienst CapMonster Cloud in einer isolierten Testumgebung nutzen, um sicherzustellen, dass der Mechanismus zur Tokenverarbeitung und die Prüflogik ordnungsgemäß funktionieren.

Im Fall von DataDome CAPTCHA reicht es aus, das System zu erkennen, sein Verhalten zu analysieren und sich zu vergewissern, dass der Schutz korrekt arbeitet. In diesem Artikel haben wir gezeigt, wie Sie DataDome CAPTCHA identifizieren und wo Sie Anleitungen für die Einbindung oder Neukonfiguration finden, damit Sie den Schutz zuverlässig betreiben und seine Arbeit unter Kontrolle halten können.

Conclusion
Nützliche Links
DocIconDokumentation zur DataDome CAPTCHADocIconDokumentation CapMonster Cloud (Arbeit mit DataDome CAPTCHA)

Häufig gestellte Fragen zu DataDome

Das deutlichste Merkmal ist das datadome-Cookie in Serverantworten:

  1. Öffnen Sie die durch DataDome geschützte Website in einem Browser (Chrome, Firefox).
  2. Drücken Sie F12 (Entwicklertools) → wechseln Sie zum Tab ApplicationCookies.
  3. Suchen Sie die Domain der Website (z. B. www.example.com).
  4. Suchen Sie unter den Cookies nach dem Schlüssel datadome

Sie können auch prüfen, ob die Anfragen der Website Aufrufe an geo.captcha-delivery.com in den Entwicklertools → Tab Network enthalten; dieser Endpunkt gehört zur Challenge-Delivery-Infrastruktur von DataDome.

Installieren Sie das offizielle Paket:

npm install @datadome/module-express

Importieren und initialisieren Sie den Client:

const { DatadomeExpress } = require('@datadome/module-express')

dann

new DatadomeExpress('YOUR_SERVER_SIDE_KEY')

Middleware anbinden:

app.use(datadomeClient.middleware())

In den meisten Fällen sollte die Middleware vor geschützten Routen registriert werden, damit Anfragen analysiert werden können, bevor sie Ihre Route-Handler erreichen. Je nach Anwendungsstruktur können Sie die Middleware auch selektiv auf bestimmte Routen oder Routengruppen anwenden.

Verwenden Sie dieses Beispiel als minimale Einrichtung:

const { DatadomeExpress } = require('@datadome/module-express');
const express = require('express');
const app = express();

// Initialize DataDome client
const datadomeClient = new DatadomeExpress('YOUR_SERVER_KEY');

// Connect middleware
app.use(datadomeClient.middleware());

// Your routes
app.get('/', (req, res) => {
  res.send('Hello World');
});

// Start server
app.listen(3000, () => {
  console.log('Server running on port 3000');
})

Das offizielle Modul unterstützt auch zusätzliche Konfigurations- und Anpassungsoptionen für erweiterte Integrationen.

Weitere Details zur serverseitigen Integration in der offiziellen Dokumentation.

Um zu prüfen, ob DataDome korrekt eingerichtet ist, versuchen Sie diese drei Tests:

  1. Besuchen Sie eine geschützte Seite ohne DataDome JS Tag. Wenn die Integration wie erwartet funktioniert, sollten Sie eine CAPTCHA-Challenge erhalten.
  2. Simulieren Sie automatisierten Traffic mit Tools wie k6 oder JMeter. DataDome sollte diese Aktivität erkennen und mit einer Challenge antworten.
  3. Wiederverwenden Sie ein gelöstes datadome-Cookie von einer anderen IP-Adresse. Das sollte nicht funktionieren, und DataDome sollte stattdessen eine neue CAPTCHA-Challenge anzeigen.

Wenn das Lösen von DataDome fehlschlägt, sind dies die häufigsten Gründe:

  • ERROR_CAPTCHA_UNSOLVABLE: Die createTask-Parameter sind falsch. Ihr Proxy wurde möglicherweise von der DataDome CAPTCHA blockiert. Wechseln Sie den Proxy-Server für die Anfrage. Überprüfen Sie die Parameter in der Anfrage erneut. Wenn der Fehler wiederholt auftritt, wenden Sie sich an den Support und geben Sie an: taskId, Aufgabentyp (type), Originalbild oder Eingabedaten, Datum/Uhrzeit der Aufgabe und Request-Body.
  • ERROR_KEY_DOES_NOT_EXIST: Ihr clientKey ist falsch oder inaktiv. Überprüfen Sie den Schlüssel in Ihrem CapMonster Cloud-Konto.
  • ERROR_PROXY_READ_TIMEOUT: Der Proxy ist zu langsam oder unzuverlässig. Versuchen Sie einen anderen Proxy. Dieser Fehler kann auch durch eine falsche metadata.captchaUrl in der createTask-Anfrage verursacht werden. Überprüfen Sie den Link zur CAPTCHA erneut.
  • Die vom Dienst erhaltenen Cookies funktionieren auf der Zielwebsite nicht: Die Lösungsanfrage und die finale Anfrage wurden von unterschiedlichen IPs gesendet. Verwenden Sie dieselbe IP für beide. Überprüfen Sie auch die korrekte Cookie-Einrichtung; stellen Sie sicher, dass das zurückgegebene datadome-Cookie korrekt in Ihrem Browser oder in den Request-Headern gesetzt ist.

Für HTTP-Anfragen fügen Sie den gelösten Wert im Cookie-Request-Header als datadome=<value> bei jeder nachfolgenden Anfrage an die geschützte Domain ein.

In Browser-Automatisierungstools wie Puppeteer, Selenium oder Playwright fügen Sie das datadome-Cookie mit der eingebauten Cookie-Methode des Frameworks hinzu, bevor Sie die geschützte Seite öffnen.

Zum Beispiel:

  • In Playwright verwenden Sie context.addCookies().
  • In Puppeteer verwenden Sie page.setCookie().
  • In Selenium verwenden Sie driver.add_cookie().

Stellen Sie sicher, dass das Cookie für die richtige Domain und den richtigen Pfad gesetzt ist. Verwenden Sie diese Methoden auch mit httpOnly: true, secure: true und sameSite: 'Lax', damit der Browser es wie ein normales Sitzungs-Cookie behandelt.