Amazon AWS WAF
und CapMonster Cloud

Captcha-Lösung, Integration in die Website und Tests.

Preise für Amazon AWS WAF-Lösung

CAPTCHA
Preis (USD)
$ 1.40
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 Amazon AWS WAF 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 Amazon AWS WAF, 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 AWS WAF von Amazon
Was ist AWS WAF von Amazon

AWS WAF (Amazon Web Services Web Application Firewall) ist eine Cloud-Web-Firewall von Amazon, die Websites, APIs und Webanwendungen vor Angriffen und schädlichem Traffic schützt. Vereinfacht gesagt handelt es sich um einen Filter, der vor Ihrer Website oder API steht und entscheidet, welcher Besucherverkehr durchgelassen und welcher blockiert wird.

Wenn auf der Website Challenge/CAPTCHA aktiviert ist, sieht der Besucher möglicherweise eine separate Seite zur Überprüfung. Er wird aufgefordert, eine Aufgabe zu erledigen, z. B. alle Bilder einer Kategorie auszuwählen, um zu bestätigen, dass er kein Bot ist.

So lösen Sie AWS WAF mit CapMonster Cloud

Beim Testen von Ressourcen, die durch AWS WAF geschützt sind, ist es wichtig sicherzustellen, dass der Schutz korrekt funktioniert und richtig integriert ist.

Sie können die Funktion des Schutzes manuell überprüfen:

  • Öffnen Sie die Seite mit dem Formular oder der Ressource und stellen Sie sicher, dass AWS WAF korrekt auf Anfragen reagiert.
  • Versuchen Sie Aktionen durchzuführen, die vom WAF eingeschränkt werden könnten (z. B. Massenanfragen, verdächtige Header) – der Server sollte solche Anfragen blockieren oder einen Fehler zurückgeben.

Nach erfolgreicher Überprüfung setzt AWS WAF Cookies, die bestätigen, dass der Benutzer oder Client die Überprüfung bestanden hat und vertrauenswürdiger Traffic zugelassen wird.

Zur automatischen Captcha-Erkennung können spezialisierte Dienste verwendet werden, wie z. B. CapMonster Cloud – ein Tool, das Captcha-Parameter akzeptiert, diese auf seinen Servern verarbeitet und fertige Cookies oder ein Token zurückgibt. Diese können in den Browser eingefügt werden, um die Überprüfung ohne Benutzerinteraktion 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
Einsetzen von aws-waf-token Cookies auf der SeiteEinsetzen von aws-waf-token Cookies auf der Seite
arrow
Erkennung von Amazon AWS WAF mit fertigen Bibliotheken
Der Dienst CapMonster Cloud bietet fertige Bibliotheken für die bequeme Arbeit in den Sprachen Python, JavaScript (Node.js) und C#.

Wichtig: Diese Codebeispiele verwenden cookieSolution=False. Wenn Sie als Ergebnis Cookies erhalten müssen, setzen Sie cookieSolution=True.

Python
JavaScript
C#
Lösung, Abrufen von Parametern und Setzen von Cookies
Beispiel in Node.js für den vollständigen Zyklus der Captcha-Erkennung auf Ihrer Webseite. Mögliche Ansätze: Verwendung von HTTP-Anfragen zum Abrufen von HTML und Schutzsystemparametern, Senden der Antwort und Verarbeiten des Ergebnisses. Oder mithilfe von Automatisierungstools (z. B. Playwright) – Seite öffnen, auf die Überprüfung warten, Parameter über den CapMonster Cloud-Client senden, Ergebnis erhalten, Cookies in den Browser einfügen (für Tests können Sie sowohl korrekte als auch inkorrekte Daten verwenden) und das Ergebnis sehen.
// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium

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

const API_KEY = "YOUR_API_KEY";
const CAPTCHA_URL = "https://example.com";

// Proxy-Einstellungen
const PROXY = {
    proxyType: "http",
    proxyAddress: "PROXY_HOST",
    proxyPort: 1234,
    proxyLogin: "PROXY_USER",
    proxyPassword: "PROXY_PASS"
};

(async () => {
    // 1) Seite über Proxy öffnen und AWS WAF Parameter sammeln
    const browser = await chromium.launch({
        headless: false,
        proxy: {
            server: `http://${PROXY.proxyAddress}:${PROXY.proxyPort}`,
            username: PROXY.proxyLogin,
            password: PROXY.proxyPassword
        }
    });

    const page = await browser.newPage();
    await page.goto(CAPTCHA_URL, { waitUntil: "networkidle" });

    // Warten auf das Laden der Challenge- und Captcha-Skripte
    await page.waitForFunction(() => {
        const scripts = Array.from(document.querySelectorAll("script")).map(s => s.src || "");
        return scripts.some(src => src.includes("challenge")) && scripts.some(src => src.includes("captcha"));
    });

    // AWS WAF Parameter extrahieren (Key, Context, IV, Links zu Skripten)
    const params = await page.evaluate(() => {
        const gokuProps = window.gokuProps || {};
        const scripts = Array.from(document.querySelectorAll("script")).map(s => s.src || "");
        return {
            websiteKey: gokuProps.key || null,
            context: gokuProps.context || null,
            iv: gokuProps.iv || null,
            challengeScript: scripts.find(src => src.includes("challenge")),
            captchaScript: scripts.find(src => src.includes("captcha"))
        };
    });

    await browser.close();

    // 2) AWS WAF über CapMonster Cloud lösen
    const client = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));

    const req = new AmazonRequest({
        websiteURL: CAPTCHA_URL,
        websiteKey: params.websiteKey,
        challengeScript: params.challengeScript,
        captchaScript: params.captchaScript,
        context: params.context,
        iv: params.iv,
        cookieSolution: true,
        proxy: PROXY
    });

    const solved = await client.Solve(req);
    const wafToken = solved.solution.cookies["aws-waf-token"];

    // 3) aws-waf-token einsetzen und alte bereinigen
    const browser2 = await chromium.launch({
        headless: false,
        proxy: {
            server: `http://${PROXY.proxyAddress}:${PROXY.proxyPort}`,
            username: PROXY.proxyLogin,
            password: PROXY.proxyPassword
        }
    });

    const context2 = await browser2.newContext();

    // Bereinigung alter aws-waf-token für Ihre Domain
    const existingCookies = await context2.cookies();
    const filteredCookies = existingCookies.filter(c => !(c.name === "aws-waf-token" && c.domain.endsWith(".your-domain")));
    await context2.clearCookies();
    await context2.addCookies(filteredCookies);

    // Setzen des neuen aws-waf-token
    await context2.addCookies([{
        name: "aws-waf-token",
        value: wafToken,
        domain: ".your-domain",
        path: "/",
        httpOnly: false,
        secure: true
    }]);

    const page2 = await context2.newPage();
    const response = await page2.goto(CAPTCHA_URL, { waitUntil: "networkidle" });

    console.log("Final page status:", response.status());
    console.log("Final page URL:", page2.url());

    await browser2.close();
})();
So verbinden Sie AWS WAF mit Ihrer Website
Um sich sicher in der Funktionsweise des Captchas auf Ihrer Website zurechtzufinden, die Logik seiner Überprüfung zu verstehen, es neu zu verbinden oder neu zu konfigurieren, empfehlen wir Ihnen, diesen Abschnitt zu studieren. Darin wird der Prozess der Anbindung des Schutzes beschrieben — dies hilft Ihnen, sich schnell mit allen Nuancen vertraut zu machen.

AWS WAF kann nicht direkt auf einer Website installiert werden. Es funktioniert nur über AWS-Ressourcen:

  • Amazon CloudFront (Haupt- und beste Option) — ein CDN, über das jede Website geschützt werden kann. Funktioniert schnell, global und ist für fast alle Fälle geeignet.
  • Application Load Balancer (ALB) — wird für serverseitige Websites, APIs und Container innerhalb von AWS verwendet. Wenn Ihr Backend in EC2, ECS, EKS läuft — setzen Sie WAF auf den ALB.
  • API Gateway — Schutz von REST und WebSocket APIs. Geeignet für SPA, mobile Anwendungen und Microservices.
  • AWS AppSync (GraphQL API)
  • Amazon Cognito (Login/Registrierung)
  • AWS App Runner (Container-Anwendungen)
  • AWS Amplify Hosting (Frontend-Hosting)
  • AWS Verified Access (Zugriff auf interne Anwendungen)

Schritt 1. Erstellen Sie ein AWS-Konto (falls nicht vorhanden)

Gehen Sie zu: https://portal.aws.amazon.com/billing/signup. Erstellen Sie ein Konto > bestätigen Sie E-Mail und Telefon.

Schritt 2. Sie können die Standard- oder die neue AWS WAF-Benutzeroberfläche verwenden:

  1. Gehen Sie zur AWS Konsole
  2. Öffnen Sie AWS WAF. Klicken Sie im linken Menü auf Try the new experience (falls angeboten).

Schritt 3. Erstellen Sie ein Protection Pack (Web ACL)

Dies ist der Satz von Schutzregeln für Ihre Ressource.

  1. Wählen Sie im Menü links: Resources & protection packs (Web ACLs)
  2. Klicken Sie auf Add protection pack (web ACL).

Schritt 4. Konfigurieren Sie die Anwendungskategorie:

Im Block Tell us about your app:

  • App category — wählen Sie Web / API / Both
  • Traffic source — woher der Traffic kommt (Web, API oder beides)

Diese Parameter sind notwendig, damit AWS optimale Regeln vorschlagen kann.

Schritt 5. Wählen Sie die Ressourcen aus, die geschützt werden sollen

  1. Klicken Sie auf Add resources
  2. Wählen Sie aus, was Sie verbinden:

Wenn Ihre Website auf CloudFront läuft > wählen Sie CloudFront distributions
Wenn Ihr Backend auf ALB läuft > wählen Sie Regional resources
Wenn API > wählen Sie API Gateway REST API
Setzen Sie ein Häkchen bei der gewünschten Ressource > klicken Sie auf Add.

Schritt 6. Wählen Sie einen Start-Regelsatz.

AWS schlägt vor:

Recommended for you — die beste Option für Anfänger

Er beinhaltet:

  • Basisschutz
  • Regeln gegen SQLi und XSS
  • IP Reputation Lists
  • Bot Control (optional)
  • Regeln für Web/API

Klicken Sie auf Next.

Schritt 7. Konfiguration (optional)

Auf dem Bildschirm Customize protection pack (web ACL):

Hauptparameter:

  • Default action:
    • Allow all except blocked — wird normalerweise gewählt
    • Block all except allowed — wenn die Website geschlossen ist
  • Default rate limits: Begrenzung der Anzahl von Anfragen (DDoS L7 Mitigation)
  • IP addresses: Whitelists/Blacklists
  • Country specific origins: Traffic-Begrenzung nach Ländern

Logging

Wählen Sie, wohin Logs geschrieben werden sollen:

  • CloudWatch
  • S3
  • Firehose

(empfohlen wird S3 + Athena).

Schritt 8. Web ACL erstellen

Klicken Sie auf: Add protection pack (web ACL)

AWS erstellt Regeln und verknüpft sie mit Ihrer Ressource.

Überprüfung

Um sicherzustellen, dass der Schutz funktioniert:

  1. Öffnen Sie WAF > wählen Sie Ihre Web ACL
  2. Gehen Sie zu Monitoring
  3. Sehen Sie sich an:
    • Traffic-Grafiken
    • blockierte Anfragen
    • Beispielanfragen (sample requests)

Zusätzlich (optional)

  • CAPTCHA oder Challenge aktivieren

    In jeder Regel > Action > CAPTCHA / Challenge

    Dies reduziert Bot-Traffic und schützt Anmelde- und Formularseiten.

  • Managed Rule Groups hinzufügen

    Im Bereich Rule groups können Sie hinzufügen:

    • AWS Managed
    • Bot Control
    • Account takeover prevention
    • Marketplace rules (F5, Imperva, Fortinet)
  • Mit Shield Advanced verknüpfen. Zum Schutz vor DDoS (L3–L7).

Background
Mögliche Fehler und Debugging
Bug Icon
Ungültige Domain oder Regel — Challenge wird nicht angezeigt
Überprüfen Sie, ob die AWS WAF WebACL an die richtige Domain (CloudFront Distribution / ALB / API Gateway) und den korrekten Pfad gebunden ist und dass keine Konflikte zwischen Regeln bestehen.
Bug Icon
Zeitüberschreitung beim Laden der Seite oder bei der Überprüfung
Manchmal wartet der Browser oder das Skript nicht auf die Antwort von AWS WAF. Erhöhen Sie die Timeouts in den Tests und stellen Sie sicher, dass das Backend Anfragen ohne Verzögerung verarbeitet.
Bug Icon
Abgelaufene AWS WAF Cookies
Veraltete _aws_waf_token_… oder damit verbundene Cookie-Tags führen zu einer erneuten Challenge oder vorübergehenden Blockierung.
Bug Icon
Übermäßig empfindliche Regeln
Zu strenge Bot Control-Signaturen, CAPTCHA-Regeln oder Rate-based-Regeln können echte Benutzer blockieren.
Bug Icon
Falsche WebACL-Konfiguration
Fehler in der Reihenfolge der Regeln, Prioritäten oder Bedingungen können zu Fehlalarmen und Blockierungen führen.
Tests der Schutzstabilität
Stellen Sie nach der Integration sicher, dass das System die Website wirklich vor automatisierten Aktionen schützt.
Tipps zu Sicherheit und Optimierung
Konfigurieren Sie die WebACL entsprechend dem Risikolevel. Verwenden Sie Managed Rules (AWS, AWS Marketplace), AWS Bot Control und benutzerdefinierte Regeln basierend auf IP-Reputation, Headern, Rate Limiting und anderen Bedingungen.
Loggen Sie WAF-Ereignisse. Aktivieren Sie <a href="https://docs.aws.amazon.com/waf/latest/developerguide/logging.html" target="_blank">AWS WAF Logging (Kinesis Firehose / S3 / CloudWatch Logs)</a> zur Analyse von Fehlalarmen und zur Optimierung von Regeln.
Fügen Sie Links zur <span class="font-bold">Datenschutzerklärung</span> und den <span class="font-bold">Nutzungsbedingungen</span> hinzu. Dies ist wichtig für Transparenz und die Einhaltung von Sicherheitsanforderungen und Benutzererwartungen.
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 Amazon AWS WAF 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 Amazon AWS WAF 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
DocIconAWS WAF DokumentationDocIconCapMonster Cloud Dokumentation (Arbeit mit AWS WAF)DocIconÜbersicht über den Schutz von Webressourcen mit AWS WAF

Häufig gestellte Fragen zu Amazon AWS WAF

Die Werte websiteKey, context und iv stammen von der AWS WAF-Challenge-Seite und können entweder aus dem HTML dieser Seite oder per JavaScript aus window.gokuProps.key, window.gokuProps.context und window.gokuProps.iv extrahiert werden. Sie können sie automatisch mit unseren fertigen Skripten extrahieren.

Dies sind sitzungsbezogene Parameter der aktuellen Challenge-Seite, keine generischen statischen Werte zur Wiederverwendung über mehrere Versuche hinweg.

Das boolesche Feld cookieSolution steuert das Format der von CapMonster Cloud zurückgegebenen AWS WAF-Lösung:

  • false — die Antwort enthält captcha_voucher und existing_token
  • true — die Lösung enthält Cookies mit dem einsatzbereiten aws-waf-token

Für Browser-Automatisierungsabläufe wie Playwright, Puppeteer und Selenium ist cookieSolution: true in der Regel die bequemere Option, da sie einsatzbereite Cookies zurückgibt, die direkt zur Browser-Sitzung hinzugefügt werden können.

Standardmäßig müssen Sie keine eigenen Proxys für AWS WAF-Aufgaben bereitstellen, da CapMonster Cloud integrierte Proxys verwendet und deren Kosten bereits im Service enthalten sind.

Sie müssen jedoch eigene Proxys angeben, wenn die Zielwebsite den Token nicht akzeptiert oder der Zugriff auf die integrierten Dienste eingeschränkt ist. Wenn Sie einen Proxy mit IP-Autorisierung verwenden, stellen Sie sicher, dass die Adresse 65.21.190.34 auf der Whitelist steht.

Ein gültiger AWS WAF-Token umgeht nicht automatisch die restliche Web ACL-Logik. AWS gibt an, dass bei einem Request mit gültigem Token für eine CAPTCHA- oder Challenge-Regel diese Regel ähnlich wie die Count-Aktion behandelt wird und AWS WAF die Auswertung des Requests gegen die verbleibenden Regeln in der Web ACL fortsetzt. Das bedeutet, dass Bot Control, rate-based rules und andere Regeln automatisierten Traffic weiterhin beeinflussen können, und AWS dokumentiert False-Positive-Szenarien für Bot Control separat.

In der Praxis sollte die Fehlerbehebung sich auf Regelreihenfolge, Regelpriorität, Token-Einstellungen und mögliche False Positives konzentrieren, anstatt anzunehmen, dass eine gelöste CAPTCHA allein die Durchlassung garantiert.

Wiederholte AWS WAF-Challenges treten in der Regel auf, wenn der Token abgelaufen ist, das aws-waf-token-Cookie fehlt oder veraltet ist, die Sitzungsimmunitätszeit abgelaufen ist oder die Token-Freigabe für Multi-Domain-Abläufe nicht konfiguriert ist.

Für Website-Entwickler: Stellen Sie die CAPTCHA- oder Challenge-Immunitätszeit entsprechend dem realen Nutzerverhalten ein, konfigurieren Sie eine Token-Domain-Liste für verwandte Domains, stellen Sie sicher, dass die AWS WAF-JavaScript-Integration den Token korrekt speichert, und prüfen Sie, dass strengere Web ACL-Regeln legitimen Traffic nach gelöster CAPTCHA nicht weiter blockieren.

Für CapMonster Cloud-Nutzer: Verwenden Sie frische Task-Daten von der Zielseite, übergeben Sie das Ergebnis im erforderlichen Format über das aws-waf-token-Cookie oder den Header x-aws-waf-token, und erstellen Sie eine neue Aufgabe mit aktualisierten Parametern, anstatt eine alte Lösung erneut zu verwenden, wenn Challenges weiterhin auftreten.