Scarnox · Blog

AWS WAF Captcha erklärt und wie Sie damit umgehen

Das AWS-WAF-Captcha ist eine Challenge, die die Web Application Firewall von Amazon ausliefert, wenn ein Website-Betreiber sie so konfiguriert hat, dass sie Besucher prüft. Eine Anfrage, die die Firewall für verdächtig hält, erhält statt des Inhalts eine Challenge-Seite. Der Besucher muss dann eine Prüfung bestehen, bevor die eigentliche Seite lädt. Wenn Sie beim Testen oder Sammeln von Daten darauf stoßen, müssen Sie wissen, wie Sie es erkennen, was der Betreiber kontrolliert und was Scarnox heute tun kann. Dieser Leitfaden behandelt alle drei Punkte.

Was das AWS-WAF-Captcha ist

AWS WAF ist eine Regel-Engine, die vor einer Webanwendung sitzt, auf Amazon CloudFront, einem Application Load Balancer oder einem API Gateway. Regeln können eine Anfrage erlauben, blockieren, zählen oder herausfordern. Eine Challenge kann eine stille JavaScript-Prüfung oder ein sichtbares Captcha-Rätsel sein, je nachdem, wie die Regel eingestellt ist.

Der wichtige Punkt ist, dass die Entscheidung beim Betreiber der Website liegt. Die Firewall kennt den Zweck Ihres Scrapers nicht. Sie bewertet nur den Traffic, den sie sieht: die Rate der Anfragen, den Ruf der IP-Adresse, die Header und das Verhalten des Clients.

So erkennen Sie es im Code

AWS-WAF-Challenges lassen sich oft an ihren Antworten erkennen. Ein häufiges Signal ist der Antwort-Header x-amzn-waf-action, und eine Challenge wird oft mit dem HTTP-Status 202 ausgeliefert, bevor die eigentliche Seite erscheint. Betrachten Sie diese als Hinweise, nicht als Beweis, denn Websites konfigurieren die Firewall unterschiedlich:

import requests

def looks_like_aws_waf(resp: requests.Response) -> bool:
    # Ein Header-Signal, kein Beweis. Gegen die getestete Seite prüfen.
    return "x-amzn-waf-action" in resp.headers

resp = requests.get("https://example.com/products", timeout=30)
if looks_like_aws_waf(resp):
    print("Challenge served. Stop, slow down, and check your request rate.")
else:
    print("Status", resp.status_code)

Achten Sie außerdem im Quelltext der Seite auf ein Skript, das von einem AWS-WAF-Challenge-Pfad geladen wird, und auf eine Seite, die keinen Inhalt zeigt, bis ein Skript läuft. Ein einfacher requests-Aufruf bekommt oft die Challenge-Seite statt der Daten. Das ist zu erwarten.

Was der Betreiber tun kann

Wenn Sie die Website betreiben, lassen sich in der AWS-WAF-Konsole die Regeln feinabstimmen, die eine Challenge auslösen. Die nützlichsten Optionen sind:

Wenn Sie Ihre eigene Website testen, ist die sauberste Lösung eine Allowlist für Ihre Test-Runner. Versuchen Sie nicht, die Challenge auf einer Website zu umgehen, die Ihnen nicht gehört. Das ist der Schutz des Betreibers, und er ist das Erste, was Ihren Zugang unterbricht.

Wo die Unterstützung durch Scarnox steht

Wenn eine Website, mit der Sie arbeiten dürfen, heute eine AWS-WAF-Challenge zeigt, sind Ihre Optionen die oben genannten: langsamer werden, eine Allowlist nutzen, wenn die Website Ihnen gehört, oder den Betreiber um eine API oder einen Datenfeed bitten. Sie können ein Konto erstellen und mit einer kostenlosen Testphase starten, ganz ohne Karte, um Ihren PopularCaptcha-Ablauf jetzt einzurichten und vorbereitet zu sein, wenn die AWS-WAF-Unterstützung live geht. Die aktuellen Preise stehen auf der Preisseite.

Ihre eigene Seite hinter AWS WAF testen

Wenn Sie der Betreiber sind und automatisierte Tests die Firewall passieren lassen wollen, ohne sie für echte Besucher zu schwächen, nutzen Sie die eigenen Werkzeuge der Firewall, statt die Challenge zu umgehen:

Diese Schritte halten den Schutz aufrecht und machen den Test-Traffic vorhersagbar, und genau das brauchen Sie. Prüfen Sie die Regeln nach jeder Änderung an Ihrem Testaufbau, denn eine Regel, die für die Runner des letzten Monats richtig war, kann sie jetzt blockieren.

Verantwortungsvoll scrapen

Wenn Sie eine AWS-WAF-Seite aufrufen, um Daten zu sammeln:

Nächste Schritte