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.
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.
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:
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:
In der Anfrage zur Lösung von AWS WAF müssen folgende Parameter angegeben werden:
type - AmazonTask;
websiteURL - Adresse der Hauptseite, auf der das Captcha gelöst wird;
challengeScript - Link zur challenge.js;
Die folgenden Parameter werden aus window.gokuProps entnommen (alle sind vom Typ String):
captchaScript - Link zur captcha.js (kann fehlen, wenn Sie nur eine Challenge haben);
cookieSolution - Standardmäßig false – als Antwort erhalten Sie "captcha_voucher" und "existing_token". Wenn Sie die Cookies "aws-waf-token" benötigen, geben Sie true an.;
userAgent - User-Agent des Browsers. Übergeben Sie nur einen aktuellen UA vom Betriebssystem Windows;
Für diese Aufgabe ist auch die Verwendung Ihrer Proxys erforderlich:
proxyType :
proxyAddress - IP-Adresse des Proxys IPv4/IPv6;
proxyPort - Proxy-Port;
proxyLogin - Login des Proxy-Servers;
proxyPassword - Passwort des Proxy-Servers.
https://api.capmonster.cloud/createTask{
"clientKey": "API_KEY",
"task": {
"type": "AmazonTask",
"websiteURL": "https://example.com/index.html",
"websiteKey": "h15hX7brbaRTR...Za1_1",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",
"captchaScript": "https://234324vgvc23.yejk.captcha-sdk.awswaf.com/234324vgvc23/jsapi.js",
"cookieSolution": true,
"proxyType": "http",
"proxyAddress": "8.8.8.8",
"proxyPort": 8080,
"proxyLogin": "proxyLoginHere",
"proxyPassword": "proxyPasswordHere"
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId":0,
"status":"ready",
"solution": {
"cookies": {
"aws-waf-token": "10115f5b-ebd8-45c7-851e-cfd4f6a82e3e:EAoAua1QezAhAAAA:dp7sp2rXIRcnJcmpWOC1vIu+yq/A3EbR6b6K7c67P49usNF1f1bt/Af5pNcZ7TKZlW+jIZ7QfNs8zjjqiu8C9XQq50Pmv2DxUlyFtfPZkGwk0d27Ocznk18/IOOa49Rydx+/XkGA7xoGLNaUelzNX34PlyXjoOtL0rzYBxMAQy0D1tn+Q5u97kJBjs5Mytqu9tXPIPCTSn4dfXv5llSkv9pxBEnnhwz6HEdmdJMdfur+YRW1MgCX7i3L2Y0/CNL8kd8CEhTMzwyoXekrzBM="
},
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
}
}Die von CapMonster Cloud erhaltenen Daten (gültige AWS WAF Cookies) können in den Browserkontext oder HTTP-Client eingefügt werden. Danach betrachtet die Website die Anfrage als geprüft und ermöglicht die weitere Arbeit ohne zusätzliche Überprüfungen oder Challenge-Seiten.
Für Automatisierung und Tests ist es praktisch, Puppeteer, Selenium oder Playwright zu verwenden – diese ermöglichen es:
So kann die korrekte Funktion des Schutzes überprüft und sichergestellt werden, dass die Website gültige AWS WAF Cookies richtig akzeptiert und verarbeitet.
Wichtig: Diese Codebeispiele verwenden cookieSolution=False. Wenn Sie als Ergebnis Cookies erhalten müssen, setzen Sie cookieSolution=True.
// 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();
})();
AWS WAF kann nicht direkt auf einer Website installiert werden. Es funktioniert nur über AWS-Ressourcen:
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:
Schritt 3. Erstellen Sie ein Protection Pack (Web ACL)
Dies ist der Satz von Schutzregeln für Ihre Ressource.
Schritt 4. Konfigurieren Sie die Anwendungskategorie:
Im Block Tell us about your app:
Diese Parameter sind notwendig, damit AWS optimale Regeln vorschlagen kann.
Schritt 5. Wählen Sie die Ressourcen aus, die geschützt werden sollen
Wenn Ihre Website auf CloudFront läuft > wählen Sie CloudFront distributions
Wenn Ihr Backend auf ALB läuft > wählen Sie Regional resourcesWenn API > wählen Sie API Gateway REST APISetzen 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:Klicken Sie auf Next.
Schritt 7. Konfiguration (optional)
Auf dem Bildschirm Customize protection pack (web ACL):
Hauptparameter:
Logging
Wählen Sie, wohin Logs geschrieben werden sollen:
(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:
In jeder Regel > Action > CAPTCHA / Challenge
Dies reduziert Bot-Traffic und schützt Anmelde- und Formularseiten.
Im Bereich Rule groups können Sie hinzufügen:
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.