Heim BlogWeb-Scraping So umgehen und entfernen Sie die Amazon WAF-Bot-Kontrolle mit Python

So umgehen und entfernen Sie die Amazon WAF-Bot-Kontrolle mit Python

von Kadek

Was ist AWS WAF Bot Control?

AWS WAF (Web Application Firewall) Bot Control ist Teil der Amazon Web Services-Sicherheitssuite und hilft Websites, automatisierten Datenverkehr wie Bots zu blockieren und gleichzeitig echte Benutzer durchzulassen. Es analysiert eingehende Anfragen, überwacht das Verkehrsverhalten und wendet verschiedene Techniken an, um Bots herauszufiltern. Zu den wichtigsten Methoden gehören JavaScript-Herausforderungen, CAPTCHA-Erzwingung und IP-basierte Blockierung.

Für Scraper kann AWS WAF mehrere Herausforderungen mit sich bringen:

  • CAPTCHA-Herausforderungen: CAPTCHAs werden bereitgestellt, wenn AWS vermutet, dass ein Bot die Anfrage stellt.
  • IP-Blockierung: Das Senden zu vieler Anfragen von derselben IP kann Sie blockieren.
  • Ratenbegrenzung: AWS WAF begrenzt die Anzahl der Anfragen, die innerhalb eines bestimmten Zeitrahmens gestellt werden können, und drosselt alle Anfragen, die das Limit überschreiten.

Um diese Erkennungsmethoden zu umgehen, ist es wichtig zu verstehen, wie AWS WAF Bot Control funktioniert.

Im nächsten Abschnitt untersuchen wir die verschiedenen Techniken, die AWS WAF zum Stoppen von Bots verwendet, und wie Sie diese umgehen können.

Grundlegendes zur AWS WAF Bot Control

Wenn es um Bot-Schutz geht, nutzt AWS WAF Bot Control ein mehrschichtiges Abwehrsystem, um unerwünschten Datenverkehr zu blockieren. Es ist für alles konzipiert, von einfachen Bots, die nicht versuchen, ihre Anwesenheit zu verbergen, bis hin zu fortgeschrittenen Bots, die das tatsächliche Benutzerverhalten nachahmen.

Schauen wir uns genauer an, wie AWS WAF Bot Control funktioniert und welche verschiedenen Techniken es verwendet, um Websites sicher zu halten.

Häufige Bots vs. gezielte Bots

AWS WAF Bot Control ist für den Umgang mit zwei Arten von Bots mit jeweils unterschiedlichen Erkennungsstrategien konzipiert:

Gemeinsame Bots

Dies sind die grundlegenden Bots, die nicht versuchen zu verbergen, was sie sind. AWS WAF filtert diese Bots wie folgt heraus:

  • Signaturbasierte Erkennung: AWS verwaltet eine Liste bekannter Bot-Signaturen – Muster, wie Bots Webseiten anfordern, einschließlich spezifischer Benutzeragenten oder Header. Wenn eine Anfrage diesen Mustern entspricht, wird sie als Bot gekennzeichnet.
  • IP-Reputationslisten: AWS verfügt über eine ständig aktualisierte Liste von IP-Adressen, die mit Bot-Aktivitäten verknüpft sind. Anfragen von diesen IPs werden blockiert oder angefochten.
  • Validierung des Benutzeragenten: Es überprüft die User-Agent-Zeichenfolge in jeder Anfrage, um sicherzustellen, dass sie von einem echten Browser stammt und nicht von einem Bot, der vorgibt, einer zu sein.
  • Musteranalyse anfordern: Selbst wenn ein Bot versucht, unbemerkt zu bleiben, kann AWS ihn erkennen, indem es ungewöhnliche Anfrageraten (z. B. zu viele Anfragen schnell) oder Navigationsmuster erkennt, die nicht mit menschlichem Verhalten übereinstimmen.

Gezielte Bots

Anspruchsvollere Bots versuchen, sich wie echte Benutzer zu verhalten, wodurch sie schwerer zu erkennen sind. AWS WAF begegnet diesen mit fortschrittlichen Techniken wie:

  • Verhaltensbasierte Erkennung: Dazu gehört die Analyse von Verkehrsmustern, um zu sehen, ob sich Benutzer wie Bots verhalten – etwa indem sie zu schnell durch Seiten klicken oder auf mehrere Seiten in einer unnatürlichen Reihenfolge zugreifen.
  • Maschinelles Lernen (ML): AWS nutzt Modelle des maschinellen Lernens, um sich an neue Bot-Verhaltensweisen anzupassen. Das System lernt kontinuierlich aus vergangenen Daten und kann Muster erkennen, die auf Bot-Aktivitäten hinweisen, selbst wenn der Bot gut getarnt ist.
  • Browser-Fingerprinting: AWS erfasst Daten vom Browser des Benutzers, wie z. B. Bildschirmgröße, installierte Plugins und Schriftarten. Bots haben oft Schwierigkeiten, einen tatsächlichen Browser-Fingerabdruck zu replizieren, wodurch sie verraten werden.
  • Browserabfrage: AWS kann JavaScript-Code in die Webseite einfügen, um zu prüfen, ob der Benutzer Skripte ausführen, die Maus bewegen oder über die Tastatur tippen kann. Bots haben Schwierigkeiten, diese Aktionen genau nachzubilden.

Sowohl gewöhnliche als auch gezielte Bots können mit CAPTCHAs herausgefordert werden, wenn AWS WAF ihren Datenverkehr vermutet. Wenn ein Bot das CAPTCHA nicht lösen kann, wird ihm der weitere Zugriff gesperrt.

Diese Methoden stellen für Scraper ernsthafte Hürden dar, aber das Verständnis ihrer Funktionsweise ist der erste Schritt, um sie zu überwinden.

Dynamische Anforderungsvalidierung

AWS WAF stellt mithilfe der dynamischen Anforderungsvalidierung sicher, dass Ihre Anforderungen wie die von echten Benutzern aussehen und sich verhalten. Dazu gehören:

  • Header-Validierung: AWS prüft, ob alle wesentlichen Header (wie User-Agent, Accept und Referer) vorhanden sind und mit dem übereinstimmen, was ein echter Browser senden würde. Fehlende oder ungewöhnliche Header können Verdacht erregen.
  • Cookie-Verwaltung: AWS verfolgt Cookies während Ihrer Sitzung und geht davon aus, dass sie sich beim Wechseln zwischen den Seiten auf bestimmte Weise ändern. Wenn Cookies fehlen oder sich nicht wie erwartet verhalten, wird Ihre Anfrage möglicherweise markiert.
  • Dynamische Token-Injektion: AWS WAF kann kurzlebige Token (wie CSRF-Token) in Seiten einfügen, die in Ihren Folgeanfragen enthalten sein müssen. Ihre Anfrage kann blockiert werden, wenn das Token korrigiert oder hinzugefügt werden muss.
  • Zustandsbehaftete Inspektion: AWS überwacht die Reihenfolge Ihrer Anfragen, um sicherzustellen, dass sie sinnvoll sind. Beispielsweise wird erwartet, dass Sie eine Anmeldeseite besuchen, bevor Sie auf geschützte Ressourcen zugreifen. AWS WAF greift ein, wenn Ihr Anforderungsablauf dieser Logik nicht folgt.

Um unentdeckt zu bleiben, müssen Sie Cookies ordnungsgemäß verwalten, Header rotieren, erforderliche Token einschließen und einem natürlichen Anforderungsablauf folgen – genau wie ein echter Benutzer.

IP-Blockierung und Ratenbegrenzung

Das Verkehrsmanagementsystem von AWS WAF kann Ihre Anfragen blockieren oder verlangsamen, wenn Sie zu viele und zu schnell senden. So funktioniert es:

  • Adaptive Ratenbegrenzung: AWS WAF lernt, wie normale Verkehrsmuster für jede Seite aussehen, und passt ihre Grenzwerte an. Sie könnten die Abwehrmechanismen des Systems auslösen, wenn Sie Anfragen zu schnell senden.
  • Bewertung der IP-Reputation: AWS WAF bewertet jede IP-Adresse basierend auf ihrem Verhalten. Wenn Ihre IP Anzeichen verdächtiger Aktivitäten aufweist, erhält sie eine niedrigere Bewertung, was zu einer verstärkten Prüfung oder einer vollständigen Blockierung führen kann.
  • Sitzungsbasierte Ratenbegrenzungen: AWS WAF überwacht nicht nur IP-Adressen, sondern verfolgt auch die Sitzungsaktivität. Das bloße Wechseln der IPs reicht nicht aus; Sie müssen Ihr Sitzungsverhalten sorgfältig verwalten, um unentdeckt zu bleiben.
  • Geolocation-basierte Regeln: AWS WAF wendet strengere Regeln für Datenverkehr aus bestimmten Regionen an, die für eine höhere Bot-Aktivität bekannt sind. Wenn Ihre Anfragen aus Bereichen kommen, die mit Bots in Verbindung stehen, müssen Sie möglicherweise mit strengeren Ratenbeschränkungen oder sogar CAPTCHAs rechnen.

Um einer Entdeckung zu entgehen, reicht ein IP-Wechsel allein nicht aus. Stattdessen müssen Sie IPs rotieren, um normale Verkehrsmuster nachzuahmen und dabei die Erkennungsmethoden von AWS WAF zu berücksichtigen.

Wie Catch.com.au AWS WAF Bot Control nutzt

Ein reales Beispiel für AWS WAF Bot Control in Aktion ist Catch.com.au, eine beliebte E-Commerce-Plattform. Sie nutzen AWS WAF, um Bots daran zu hindern, Produktdaten abzugreifen, Betrugsversuche zu unternehmen oder Benutzersitzungen zu stören. So verwenden sie AWS WAF:

  • Häufige Bots: Catch.com.au blockiert einfache Bots mithilfe der signaturbasierten Erkennung und IP-Reputationslisten von AWS WAF.
  • Gezielte Bots: Für fortgeschrittenere Bots nutzt Catch.com.au verhaltensbasierte Erkennung und Browser-Fingerprinting, um verdächtigen Datenverkehr abzuwehren.
  • Dynamische Anforderungsvalidierung: Sie erzwingen eine strikte Validierung von Headern und Cookies und verwenden dynamische Token, um legitime Sitzungen zu bestätigen.
  • Reaktion auf Vorfälle: Catch.com.au verwendet Ratenbegrenzung und IP-Blocklisten im Falle verdächtiger Aktivitätsspitzen. Sie verfügen außerdem über eine „Break-Glass“-Geoblock-Regel, um den Verkehr nach Australien und Neuseeland einzuschränken.
  • CAPTCHA: Jeder Datenverkehr, der diese Abwehrmaßnahmen durchläuft, wird mit CAPTCHA überprüft, um sicherzustellen, dass es sich beim Benutzer um einen Menschen handelt.

In der AWS-Präsentation erfahren Sie hier mehr darüber, wie Catch.com.au AWS WAF nutzt.

Wenn Sie die allgemeine Funktionsweise von AWS WAF Bot Control und seine praktische Implementierung bei Catch.com.au verstehen, können Sie sehen, wie Websitebesitzer über Bot-Management denken.

Umgehen der AWS WAF Bot Control

Nachdem Sie nun verstanden haben, wie AWS WAF Bot Control funktioniert, kommen wir zum unterhaltsamen Teil: wie Sie es umgehen können.

Während AWS WAF mit IP-Tracking, User-Agent-Validierung und CAPTCHA-Herausforderungen einen starken Schutz bietet, gibt es Möglichkeiten, diese zu umgehen. Lassen Sie uns durchgehen, was Sie manuell tun müssten, um AWS WAF-geschützte Websites effektiv zu durchsuchen.

1. IP-Rotation zur Vermeidung von Blockierungen

Wir wissen bereits, dass AWS WAF die IP-Adressen genau im Auge behält, insbesondere wenn sie in kurzer Zeit viele Anfragen stellen. Wenn AWS zu viele Anfragen von einer IP feststellt, wird diese schnell gemeldet. Ihre Aufgabe besteht also darin, die Dinge auf dem neuesten Stand zu halten, indem Sie die IPs wechseln und Ihre Anfragen so aussehen lassen, als kämen sie aus der ganzen Welt.

Wie man damit umgeht:

  • Richten Sie einen Proxy-Pool ein, damit Ihr Scraper für jede Anfrage unterschiedliche IPs verwenden kann.
  • Stellen Sie sicher, dass diese Proxys von hoher Qualität sind (vorzugsweise für Wohngebiete), um eine schnelle Entdeckung zu vermeiden.

Für Websites wie Catch, die stark auf AWS WAF angewiesen sind, um unerwünschten Datenverkehr zu blockieren, ist eine Rotation Ihrer IP-Adressen erforderlich, um zu verhindern, dass sie bereits nach wenigen Anfragen gesperrt werden. Ohne das stößt man ziemlich schnell an eine Wand.

2. Benutzeragenten und Header rotieren

Wir haben besprochen, wie AWS WAF Header und Benutzeragenten überprüft, um sicherzustellen, dass Ihr Datenverkehr legitim aussieht. Das Ziel besteht darin, die Dinge immer wieder auf den neuesten Stand zu bringen, damit sich Ihr Scraper an verschiedene Browser und Geräte anpasst.

Wie man damit umgeht:

  • Rotieren Sie Ihren User-Agent-String für jede Anfrage, um den Datenverkehr von verschiedenen Browsern zu simulieren. Vergessen Sie nicht, allgemeine Überschriften wie z Referer, Accept-LanguageUnd Connection um Ihre Wünsche realistischer erscheinen zu lassen.
  • Für einen effektiveren Ansatz übernimmt ScraperAPI die User-Agent-Rotation und die Header-Verwaltung für Sie. Jede Anfrage erhält einen neuen Benutzeragenten und die erforderlichen Header, sodass Ihr Datenverkehr ohne den Aufwand einer manuellen Einrichtung natürlich aussieht.

Wenn Sie Ihre Benutzeragenten und Header verwechseln, verringert sich die Wahrscheinlichkeit, dass Sie von den Validierungsprüfungen von AWS WAF erwischt werden, die darauf ausgelegt sind, sich wiederholende oder unvollständige Header zu kennzeichnen.

3. Behalten Sie Sitzungen und Cookies im Auge

Cookies dienen nicht nur zum Speichern Ihrer Anmeldeinformationen – sie helfen AWS WAF dabei, zu verfolgen, ob Anfragen Teil einer tatsächlichen Browsersitzung sind. Wenn Sie mehrere Anfragen stellen, ohne die richtigen Sitzungscookies zu senden, wird AWS misstrauisch und Ihr Scraper könnte blockiert werden. Um dies zu vermeiden, müssen Sie den Überblick über Cookies behalten und sicherstellen, dass sie bei allen Anfragen konsistent sind.

Wie man damit umgeht:

  • Verwenden Sie Pythons requests.Session() um Cookies über mehrere Anfragen hinweg zu speichern und zu verwalten.
  • Beginnen Sie mit dem Scraping, indem Sie die ersten Seiten der Website besuchen und Sitzungscookies erfassen. Senden Sie diese Cookies dann mit Ihren Anfragen.

Beim Scraping von Catch.com.au erwartet AWS WAF beispielsweise, dass die Cookies konsistent bleiben, wenn Benutzer von Seite zu Seite wechseln. Wenn Ihr Scraper Cookies nicht richtig verarbeitet, ragt er heraus wie ein schmerzender Daumen, und AWS greift ein, um Sie zu blockieren.

4. Umgang mit CAPTCHAs

AWS WAF verwendet CAPTCHAs, um menschliche Interaktionen zu überprüfen und Bot-Verkehr zu blockieren. Mit der integrierten CAPTCHA-Verwaltung von ScraperAPI können Sie diese Hindernisse einfach umgehen und dafür sorgen, dass Ihr Scraping-Workflow reibungslos läuft.

Durch Ermöglichen render=true Mit ScraperAPI stellen Sie sicher, dass Ihre Anfragen JavaScript-Herausforderungen bewältigen und Browser-Integritätsprüfungen bestehen können. Dieser Ansatz ahmt das reale Benutzerverhalten nach und ermöglicht Ihnen einen konsistenten Zugriff ohne zusätzliche CAPTCHA-Lösungsdienste.

Für Websites, die stark durch AWS WAF geschützt sind, bietet die Renderfunktion von ScraperAPI eine einfache Möglichkeit, CAPTCHA-Herausforderungen zu meistern und auf die benötigten Daten zuzugreifen.

5. Verlangsamen Sie Ihre Anfragen (Ratenbegrenzung)

AWS WAF überwacht nicht nur Ihre IPs oder Header, sondern überwacht auch, wie schnell Sie Anfragen stellen. Wenn Sie zu schnell zu viele Anfragen senden, lösen Sie die ratenbegrenzenden Abwehrmaßnahmen von AWS WAF aus. Daher ist es wichtig, langsamer zu werden und Verzögerungen zwischen Ihren Anfragen hinzuzufügen, um unter dem Radar zu bleiben.

Wie man damit umgeht:

  • Verwenden Sie Pythons time.sleep() um zufällige Verzögerungen zwischen Anfragen hinzuzufügen.
  • Mischen Sie die Dinge, indem Sie für jede Anfrage unterschiedliche Verzögerungen einführen und so ein natürlicheres Browsing-Muster nachahmen.

Es ist von entscheidender Bedeutung, die Geschwindigkeit Ihrer Anfragen zu verlangsamen. Dadurch sieht Ihr Scraper eher wie ein Mensch aus, der beiläufig auf der Website surft, als wie ein Bot, der schnell durch Produktseiten rennt.

So umgehen Sie AWS WAF mit ScraperAPI

ScraperAPI macht die Umgehung von AWS WAF Bot Control viel einfacher, indem es einige der komplexesten Herausforderungen wie IP-Rotation, Sitzungsverwaltung und JavaScript-Rendering bewältigt. Sie müssen sich nicht darum kümmern, all dies manuell zu konfigurieren – ScraperAPI erledigt das für Sie im Hintergrund.

Sehen wir uns an, wie Sie mit ScraperAPI mithilfe von Python Daten aus Catch.com.au extrahieren.

Hier ist das Skript, das Sie verwenden können:

import requests
from bs4 import BeautifulSoup

# ScraperAPI key and target URL
API_KEY = 'your_scraperapi_key'
URL = 'https://www.catch.com.au/'

# Parameters for the API request
params = {
    'api_key': API_KEY,
    'url': URL,
    'render': 'true'  # Ensures JavaScript is rendered, crucial for AWS WAF-protected sites
}

# Send the request to ScraperAPI
response = requests.get('http://api.scraperapi.com', params=params)

# Check the response status
if response.status_code == 200:
    print('Successfully bypassed AWS WAF and scraped the page.')
    
    # Parse the response content with BeautifulSoup
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # Print the page content
    print(soup.text)  # Contains the actual HTML of the Catch homepage
else:
    print(f'Failed to scrape page. Status code: {response.status_code}')

So funktioniert es:

Schritt 1: Richten Sie Ihren API-Schlüssel ein

Ersetzen "your_scraperapi_key" mit Ihrem tatsächlichen ScraperAPI-Schlüssel. Mit diesem Schlüssel erhalten Sie Zugriff auf die Dienste von ScraperAPI, einschließlich IP-Rotation und JavaScript-Rendering.

Schritt 2: Konfigurieren Sie Parameter für die Anfrage

  • api_key: Dies ist Ihr ScraperAPI-Schlüssel, der die Anfrage authentifiziert.
  • url: Die Zielwebsite, die Sie durchsuchen möchten, in diesem Fall Catch.com.au.
  • render="true": Viele durch AWS WAF geschützte Websites verlassen sich stark auf JavaScript, um Inhalte bereitzustellen und Benutzer zu validieren. Durch das Rendern von JavaScript stellt ScraperAPI sicher, dass dynamische Inhalte wie Produktlisten oder Token-Validierungsskripte korrekt geladen werden – genau wie im Browser eines echten Benutzers. Dadurch wirkt Ihr Scraper menschlicher und hilft, JavaScript-basierte Schutzmaßnahmen zu umgehen. Verwenden Sie diesen Parameter immer, wenn Sie stark JavaScript-abhängige Seiten durchsuchen.

Schritt 3: Senden Sie die Anfrage

Benutzen requests.get()Senden Sie mithilfe der von uns eingerichteten Parameter eine GET-Anfrage an den Endpunkt von ScraperAPI. ScraperAPI kümmert sich um alles: die Ausführung von JavaScript, das Rotieren von Proxys und die Verwaltung von Cookies.

Schritt 4: Überprüfen Sie die Antwort

Wenn der Antwortstatuscode 200 ist, haben Sie AWS WAF erfolgreich umgangen! Wenn Sie andere Statuscodes erhalten, z 403 (forbidden)bedeutet dies, dass die Umgehung nicht funktioniert hat und Sie möglicherweise Ihren Ansatz anpassen müssen, z. B. durch längere Verzögerungen zwischen Anfragen.

Schritt 5: Analysieren Sie den Inhalt

Sobald Sie die Antwort erhalten, verwenden Sie BeautifulSoup um den HTML-Inhalt zu analysieren und die benötigten Daten zu extrahieren. Das Skript druckt den gesamten HTML-Inhalt der Catch.com.au-Homepage, Sie können es jedoch anpassen, um bestimmte Daten wie Produktdetails oder Preise zu extrahieren.

Warum ScraperAPI das beste Tool zur Umgehung von AWS WAF ist

Um AWS WAF Bot Control zu umgehen, ist eine Lösung erforderlich, die komplexe Abwehrmaßnahmen mühelos bewältigt. Deshalb zeichnet sich ScraperAPI aus und erleichtert Ihnen den Prozess:

1. All-in-One-Lösung für Bot-Schutz

Bei ScraperAPI geht es nicht nur um Proxys – es handelt sich um eine vollwertige Lösung, die alles von der IP-Rotation über die CAPTCHA-Lösung bis hin zum JavaScript-Rendering übernimmt. AWS WAF verwendet mehrere Strategien wie Sitzungsverwaltung, Header-Validierung und CAPTCHA-Herausforderungen, und ScraperAPI ist darauf ausgelegt, alle diese Ebenen nahtlos zu verarbeiten. Sie müssen nicht mit mehreren Tools jonglieren – ScraperAPI ist für Sie da.

2. Einfach zu integrieren, leistungsstark in der Aktion

Das Hinzufügen von ScraperAPI zu Ihrem Python-Skript ist ein Kinderspiel. Mit nur wenigen Codezeilen können Sie AWS WAF umgehen, ohne Proxys, Cookies und Header manuell einrichten zu müssen. Durch die Einfachheit der ScraperAPI-Integration verbringen Sie weniger Zeit mit der Fehlerbehebung und haben mehr Zeit mit dem Scrapen der benötigten Daten.

3. Konsistente Leistung im Vergleich zu AWS WAF

AWS WAF aktualisiert ständig seine Abwehrmaßnahmen, um Bots zu stoppen, aber ScraperAPI hält mit diesen Änderungen Schritt. Ganz gleich, ob es sich um kleinere Kratzer oder groß angelegte Arbeiten handelt, die zuverlässige Leistung von ScraperAPI sorgt für weniger Blöcke und glattere Kratzer. Es ist darauf ausgelegt, die sich weiterentwickelnden Schutzmaßnahmen von AWS WAF zu bewältigen, sodass Sie beruhigt sein können.

4. Skalierbar für große und kleine Projekte

Unabhängig von der Größe Ihres Projekts kann ScraperAPI entsprechend Ihren Anforderungen skaliert werden. Unabhängig davon, ob Sie eine Handvoll oder Millionen Seiten durchsuchen, die automatische IP-Rotation und die Infrastruktur verarbeiten große Mengen an Anfragen effizient. Sie können Ihr Scraping skalieren, ohne Einbußen bei Geschwindigkeit oder Zuverlässigkeit hinnehmen zu müssen.

5. Robuster Support und hilfreiche Ressourcen

Guter Support ist der Schlüssel zum Umgang mit etwas so Komplexem wie AWS WAF. ScraperAPI bietet detaillierte Dokumentationen und Tutorials und sein Support-Team hilft Ihnen gerne bei allen Herausforderungen. Egal, ob Sie technische Beratung oder Hilfe bei der Fehlerbehebung benötigen, die Ressourcen von ScraperAPI sorgen dafür, dass Sie nie auf der Strecke bleiben.

Wenn es um die Umgehung der AWS WAF Bot Control geht, sticht ScraperAPI als All-in-One-Lösung hervor. Seine Einfachheit, einfache Integration und zuverlässige Leistung machen es zu einem idealen Werkzeug zum Scrapen geschützter Websites.

Bereit zum Schaben? Eröffnen Sie ein kostenloses ScraperAPI-Konto und erhalten Sie 5.000 API-Credits, um die Funktionen sieben Tage lang zu testen.

Related Posts

Hinterlasse einen Kommentar