Zum Inhalt

503-Statuscode: Der Erzfeind des Web Scrapers (und wie man ihn besiegt)

  • by
  • Blog
  • 11 min gelesen

Wenn Sie längere Zeit im Internet verbracht haben, sind Sie zweifellos auf den gefürchteten Fehler „503 Service Unavailable“ gestoßen. Für den durchschnittlichen Internetnutzer ist es ein kleines Ärgernis. Für Web-Scraper kann dies jedoch ein großes Hindernis beim Sammeln der benötigten Daten sein.

Laut Daten von Pingdom sind 503-Fehler der zweithäufigste 5xx-Statuscode und machen fast 25 % aller Serverfehlerreaktionen aus. Und in einer Umfrage unter über 1,000 Entwicklern gaben 38 % an, dass die Fehlerbehebung und Behebung von 503-Fehlern einer der frustrierendsten Teile ihrer Arbeit sei.

Als professioneller Web-Scraper können Sie es sich nicht leisten, dass 503-Fehler Ihre Projekte zum Scheitern bringen. In diesem ausführlichen Leitfaden erläutern wir genau, was 503-Statuscodes bedeuten, was sie verursacht und, was am wichtigsten ist, bewährte Strategien, um sie zu vermeiden und zu überwinden. Lass uns eintauchen!

Dekonstruktion des 503-Fehlers: Ein Überblick

Bevor wir über die Vermeidung von 503-Fehlern sprechen, ist es wichtig zu verstehen, was sie wirklich bedeuten.

Ein 503-Statuscode ist ein HTTP-Antwortstatuscode, der angibt, dass der Server die Anfrage vorübergehend nicht verarbeiten kann. Dies geschieht normalerweise, weil der Server überlastet ist oder wegen Wartungsarbeiten nicht verfügbar ist.

Offiziell lautet die Beschreibung für den Statuscode 503 „Dienst nicht verfügbar“. Dies wird häufig auf Fehlerseiten zusammen mit Meldungen wie den folgenden angezeigt:

  • „Der Server kann Ihre Anfrage aufgrund von Wartungsausfällen oder Kapazitätsproblemen vorübergehend nicht verarbeiten. Bitte versuchen Sie es später erneut.“
  • „Der Dienst ist nicht verfügbar. Bitte versuchen Sie es später noch einmal.“
  • „Diese Seite verzeichnet mehr Zugriffe als sonst. Bitte warten Sie, wir sind in Kürze zurück!“

Es ist wichtig zu beachten, dass ein 503-Fehler konkret bedeutet, dass der Server selbst ordnungsgemäß funktioniert, aber aus irgendeinem Grund die aktuelle Anfrage nicht verarbeiten kann. Dies unterscheidet sich von anderen 5xx-Fehlern, die auf einen tatsächlichen Serverausfall hinweisen:

StatuscodeName und VornameBeschreibung
500Internal Server ErrorAllgemeiner Fehler, der auf einen unerwarteten Zustand auf dem Server hinweist
501Nicht implementiertDer Server unterstützt die Funktionalität zur Erfüllung der Anfrage nicht
502Bad GatewayDer als Proxy/Gateway fungierende Server hat eine ungültige Antwort vom Ursprung erhalten
503Service UnavailableDer Server ist überlastet oder aufgrund von Wartungsarbeiten nicht verfügbar
504Gateway TimeoutDer Gateway-Server hat die Antwort vom Ursprungsserver nicht rechtzeitig erhalten

Wie Sie sehen, fallen 503-Fehler in eine Grauzone. Der Server ist nicht per se kaputt, er kann in diesem Moment nur nicht antworten. Dies ist ein wichtiger Unterschied, auf den wir später zurückkommen werden.

Analyse der Ursachen von 503-Fehlern

Was führt also eigentlich dazu, dass ein Server einen 503-Fehler zurückgibt? Es gibt einige häufige Szenarien:

  1. Überlastete Serverressourcen
    Jeder Server verfügt über begrenzte Ressourcen – CPU, Arbeitsspeicher, Festplatten-E/A, Netzwerkbandbreite usw. Wenn die Menge der eingehenden Anfragen die Kapazität dieser Ressourcen übersteigt, kann der Server beginnen, neue Verbindungen abzulehnen, um einen vollständigen Absturz zu vermeiden. Es antwortet mit einer 503, um zu signalisieren, dass es derzeit zu beschäftigt ist, um die Anfrage zu erfüllen.

  2. Geplante Wartung
    Viele Websites haben regelmäßige Wartungsfenster, in denen sie Updates bereitstellen, Backups durchführen oder andere Wartungsarbeiten durchführen. Während dieser Zeit ist die Website möglicherweise teilweise oder vollständig nicht verfügbar. Anfragen schlagen mit 503 fehl, bis die Wartung abgeschlossen ist und der Server neu gestartet wird.

  3. Abwehr von DDoS-Angriffen
    Wenn eine Website einem DDoS-Angriff (Distributed Denial of Service) ausgesetzt ist, können Notfallregeln zur Ratenbegrenzung oder Blockierung aktiviert werden, um den böswilligen Datenverkehr abzuwehren. Dies kann dazu führen, dass legitime Anfragen ins Kreuzfeuer geraten und mit 503-Fehlern abgelehnt werden.

  4. Webanwendungs-Firewall-Blöcke
    Viele Websites leiten Anfragen über eine Web Application Firewall (WAF) weiter, um sich vor häufigen Angriffen wie SQL-Injection und Cross-Site-Scripting zu schützen. Wenn eine Anfrage verdächtig erscheint, kann die WAF sie blockieren und einen 503-Fehler zurückgeben.

  5. Anti-Bot-Service-CAPTCHAs
    Einige Websites verwenden CAPTCHAs und andere Challenge-Response-Tests, um Bots herauszufiltern, die sich als Menschen ausgeben. Automatisierte Web-Scraper können davon betroffen sein und zu 503-Fehlern führen.

Laut dem Bad Bot Report 2022 von Imperva stammen 27.7 % des gesamten Website-Verkehrs von Bots, und 30.2 % dieses Bot-Verkehrs sind böswillig. Es ist kein Wunder, dass mehr Websites als je zuvor zum Leidwesen der Web-Scraper hart durchgreifen.

Ermitteln der Grundursache IHRER 503-Fehler

Wenn Ihr Web Scraper nur noch 503-Fehler zurückgibt, geraten Sie nicht in Panik. Der erste Schritt besteht darin, die zugrunde liegende Ursache zu ermitteln. Es gibt zwei Hauptmöglichkeiten:

  1. Die Website ist vollständig deaktiviert oder nicht für jedermann verfügbar
  2. Die Website ist verfügbar, hat aber Ihren spezifischen Scraper blockiert

Um herauszufinden, mit welchem ​​Szenario Sie es zu tun haben, versuchen Sie, in einem normalen Webbrowser oder über einen Proxy in einer anderen geografischen Region zu der URL zu navigieren, die 503-Fehler zurückgibt. Wenn Sie die Website normal erreichen können, bedeutet das, dass die 503-Fehler spezifisch für Ihre Scraping-IP-Adresse sind.

Sie können auch Website-Überwachungstools von Drittanbietern verwenden, um den Gesamtstatus der Website zu überprüfen:

  • DownDetector verfolgt von Benutzern gemeldete Probleme für beliebte Websites
  • UptimeRobot und Pingdom überwachen eine URL von mehreren globalen Standorten aus
  • IsItDownRightNow und CurrentDown bieten schnelle Statusprüfungen

Wenn eine davon anzeigt, dass die Website für alle nicht verfügbar ist, müssen Sie warten, bis das Problem behoben ist. Keine noch so clevere Codierung kann eine Website beseitigen, die vollständig offline ist.

Aber wenn die Site für den Rest der Welt gut aussieht, bedeutet das, dass Sie sich darauf konzentrieren müssen, Ihren Scraper besser nachzubilden als ein normaler Benutzer.

Kampferprobte Taktiken zur Vermeidung von 503-Fehlern

Zu diesem Zeitpunkt haben Sie festgestellt, dass die Anfragen Ihres Scrapers ausgesondert und mit 503-Fehlern blockiert werden. Was kannst du tun? Hier sind einige bewährte Techniken, um Ihren Web-Scraper wieder in den guten Ruf der Website zu versetzen:

  1. Verlangsamen Sie Ihre Rolle
    Der häufigste Grund, warum Websites Scraper blockieren, ist, dass sie zu schnell zu viele Anfragen stellen. Es ist äußerst verdächtig, eine Website schneller zu bearbeiten, als ein Mensch sie durchsuchen könnte. Ihre erste Verteidigungslinie sollte darin bestehen, Ihre Scraper so zu drosseln, dass höchstens alle 10–15 Sekunden eine Seite angefordert wird. Erwägen Sie auch das Hinzufügen zufälliger Verzögerungen zwischen Anfragen, um das Timing organischer erscheinen zu lassen.

  2. Verteilen Sie die Last
    Selbst mit zusätzlichen Verzögerungen ist das Senden von Hunderten oder Tausenden von Anfragen von einer einzigen IP-Adresse in kurzer Zeit immer noch ein großes Warnsignal. Durch die Verteilung der Anfragen auf einen Pool rotierender Proxys sieht Ihr Datenverkehr so ​​aus, als käme er von vielen verschiedenen legitimen Benutzern an verschiedenen Standorten. Der Einsatz von Proxys aus verschiedenen Subnetzen und sogar unterschiedlichen Anbietern erhöht die Tarnung zusätzlich.

  3. Verschmelzen Sie mit den Menschen
    Alle Anfragen Ihres Scrapers sollten denen eines normalen Benutzers mit einem normalen Browser entsprechen. Das bedeutet, einen gemeinsamen User-Agent-Header festzulegen, der den typischen Besuchern der Website entspricht. Es bedeutet auch, normale Header wie Accept-Language und Referer einzuschließen. Stellen Sie sicher, dass Sie eine Keksdose zum Speichern und Zurücksenden aller von der Website ausgegebenen Cookies bereitstellen.

  4. Umgehen Sie häufige Bot-Fallen
    Vermeiden Sie Crawling-Muster, die für Menschen äußerst ineffizient, für Bots jedoch häufig vorkommen, wie etwa das schnelle Crawlen jedes Links auf jeder Seite. Organisieren Sie Ihre Scraper stattdessen um eine zentrale Warteschlange von Zielseiten herum. Beachten Sie die robots.txt-Regeln, die gut erzogenen Bots sagen, dass sie sich fernhalten sollen. Und durchsuchen Sie nicht endlos die gleichen Seiten, immer und immer wieder.

Erholung von unvermeidbaren 503-Fehlern

Manchmal tritt bei Ihrem Scraper trotz aller richtigen Vorsichtsmaßnahmen immer noch der Fehler 503 auf. Möglicherweise kam es auf der Website plötzlich zu einem Anstieg des legitimen Datenverkehrs, oder einige Ihrer Anfragen wurden zufällig über einen überlasteten Server weitergeleitet.

Wenn eine Anfrage fehlschlägt, versuchen Sie es nicht sofort erneut. Eine Flut von Wiederholungsversuchen ist ein großes Bot-Signal und wird wahrscheinlich dazu führen, dass Ihre IP gesperrt wird. Verwenden Sie stattdessen einen exponentiellen Backoff:

  1. Warten Sie 1 Sekunde und versuchen Sie es erneut
  2. Wenn es erneut fehlschlägt, warten Sie 2 Sekunden und versuchen Sie es erneut
  3. Wenn es erneut fehlschlägt, warten Sie 4 Sekunden und versuchen Sie es erneut
  4. Wenn es erneut fehlschlägt, warten Sie 8 Sekunden und versuchen Sie es erneut
  5. Und so weiter, bis zu maximal 5 Wiederholungsversuchen

Hier ist eine Python-Funktion, die dies implementiert:

import time
import random

def retry_with_exp_backoff(func, max_retries=5):
  for n in range(max_retries):
    try:
      return func()
    except Exception:
      if n == max_retries - 1:
        raise
      sleep_seconds = 2 ** n + random.uniform(0, 1)  
      time.sleep(sleep_seconds)

Die zufällige Bruchteilverzögerung trägt dazu bei, die Wiederholungsversuche zu staffeln, sodass Sie nicht eine Reihe von Scrapern haben, die alle genau in derselben Sekunde erneut versuchen.

Wenn Sie nach fünf Wiederholungsversuchen immer noch 503 erhalten, fahren Sie am besten zunächst fort und versuchen Sie es später noch einmal. Besuchen Sie vielleicht für eine Weile einen anderen Bereich der Website oder halten Sie den Scraper einfach ganz an. Sie möchten nicht zu hartnäckig wirken.

Die nukleare Option: Verwendung eines Headless-Browsers

Bei Websites mit besonders aggressiven Anti-Bot-Abwehrmaßnahmen besteht die einzige Möglichkeit, 503-Fehler zu vermeiden, manchmal darin, mit einem Headless-Browser in den vollständigen Stealth-Modus zu wechseln.

Mit Tools wie Puppeteer und Playwright können Sie einen echten Browser programmgesteuert steuern. Im Gegensatz zu Selenium sind sie standardmäßig darauf ausgelegt, kopflos zu laufen und verfügen über zusätzliche Tricks, um menschliches Verhalten nachzuahmen:

  • Erzeugen gefälschter Mausbewegungen und Klicks
  • Zufällige Darstellung der Größe des Ansichtsfensters und der Geräteparameter
  • Abfangen und Ändern von Anfragen/Antworten

Dies ist das Beste, was Sie erreichen können, damit Ihr Scraper nicht mehr von einem echten Benutzer zu unterscheiden ist. Der Nachteil besteht darin, dass es im Vergleich zum Senden einfacher Anfragen recht ressourcenintensiv ist. Aber für geschäftskritische Daten auf Bot-feindlichen Websites lohnt sich der Kompromiss.

Ich wäre nachlässig, die potenziellen rechtlichen und ethischen Auswirkungen der Umgehung der Bot-Gegenmaßnahmen einer Website nicht anzuerkennen.

Im Allgemeinen haben Gerichte entschieden, dass das Scraping öffentlich zugänglicher Informationen keinen Verstoß gegen das Computer Fraud and Abuse Act darstellt. Im bahnbrechenden Fall HiQ Labs gegen LinkedIn aus dem Jahr 2019 entschied das 9. US-Berufungsgericht, dass das Scrapen öffentlicher LinkedIn-Profile kein „unberechtigter Zugriff“ sei, da diese Daten nicht hinter einem Login steckten.

Einige Unternehmen haben jedoch erfolgreich Klagen wegen Urheberrechtsverletzung, unbefugtem Zugriff auf bewegliche Sachen, Vertragsbruch und anderen Klagegründen gegen Web-Scraper eingereicht. Besonders rechtlich riskant ist die Umgehung technischer Zugangsbeschränkungen nach Erhalt einer Unterlassungserklärung.

Es gibt auch das Argument, dass die absichtliche Umgehung eines 503-Rate-Limit-Fehlers, um eine Website weiter zu hämmern, gegen die sozialen Normen im Internet verstößt und die Ressourcen des Websitebesitzers verschwendet. Nur weil du es kannst, heißt das nicht immer, dass du es auch solltest.

Als ethischer Web-Scraper sollten Sie immer versuchen, die robots.txt-Regeln zu befolgen, den impliziten Vertrag der Nutzungsbedingungen einer Website zu respektieren und eine übermäßige Belastung ihrer Server zu vermeiden. Manchmal ist es besser, direkt mit Websitebesitzern zusammenzuarbeiten, um die benötigten Daten über genehmigte Mittel wie APIs und Daten-Dumps zu erhalten.

Die Zukunft des Web Scraping im Vergleich zur Anti-Bot-Abwehr

Das Katz-und-Maus-Spiel zwischen Web-Scrapern und Website-Betreibern, die versuchen, sie zu blockieren, zeigt keine Anzeichen einer Verlangsamung.

Da immer mehr Unternehmen den Wert von Webdaten erkennen, waren die Anreize, hochentwickelte Scraper zu entwickeln, noch nie so groß. Gleichzeitig ergreifen viele Websites strengere Anti-Bot-Maßnahmen, um sich vor böswilligen Akteuren zu schützen.

Modelle des maschinellen Lernens werden auf beiden Seiten eingesetzt – von Scrapern, um menschliche Browsing-Muster zu lernen, und von Websites, um Bot-ähnliche Anfragemuster zu lernen. Wir werden wahrscheinlich erleben, wie sich dieses KI-Wettrüsten verschärft, wobei Bots versuchen, Menschen nachzuahmen, und Bot-Detektoren versuchen, ihre Tarnung aufzudecken.

Auch die Rechtslandschaft rund um Web Scraping entwickelt sich noch weiter, und es gibt viele offene Fragen dazu, wo Scraping die Grenze zum unbefugten Zugriff überschreitet. Wir werden mit Sicherheit weitere CFAA-Entscheidungen wie HiQ Labs vs. LinkedIn sehen, die der Web-Scraping-Community hoffentlich mehr Klarheit verschaffen werden.

Der 503-Fehler bleibt vorerst der Fluch der Existenz vieler Scraper. Aber wenn Sie verstehen, was es bedeutet, intelligente Drosselungstechniken anwenden und sich einige Tricks von hinterhältigeren Bots leihen, können Sie es überwinden und den Datenfluss aufrechterhalten.

Wichtige Erkenntnisse zur Vermeidung von 503-Fehlern

Wir haben in diesem ausführlichen Einblick in die Fehler 503 „Dienst nicht verfügbar“ viel abgedeckt. Hier sind die wichtigsten Punkte, die Sie beachten sollten:

  1. Ein 503-Fehler bedeutet, dass der Server der Website ordnungsgemäß funktioniert, aber überlastet oder nicht verfügbar ist, um Ihre Anfrage zu diesem Zeitpunkt zu bearbeiten.

  2. Stellen Sie immer fest, ob der 503 nur für Sie oder für den gesamten Standort geeignet ist, bevor Sie eine weitere Diagnose stellen.

  3. Die häufigsten Ursachen für 503-Fehler sind zu viele Anfragen zu schnell, Serverwartung, DDoS-Schutz, Webanwendungs-Firewall-Regeln und Anti-Bot-CAPTCHAs.

  4. Das Hinzufügen von Verzögerungen, die Verwendung von Proxy-Rotation, das Spoofing menschenähnlicher Anforderungsheader und unterschiedliche Crawling-Muster können dazu beitragen, dass Ihr Scraper unter dem Radar bleibt.

  5. Wiederholen Sie fehlgeschlagene Anfragen mit exponentiellem Backoff, um temporäre 503-Fehler zu verarbeiten, ohne zu sehr wie ein Bot zu wirken.

  6. Headless-Browser wie Puppeteer und Playwright sind die letzte Verteidigungslinie gegen die ausgefeiltesten Anti-Bot-Systeme.

  7. Seien Sie sich der potenziellen rechtlichen Grauzone bei der Umgehung von 503-Fehlern und Nutzungsbedingungen bewusst.

  8. Das technologische Wettrüsten zwischen Web Scrapern und Anti-Bot-Maßnahmen wird sich nur noch beschleunigen.

Wenn Sie diese Empfehlungen befolgen und etwas Zurückhaltung und gesunden Menschenverstand walten lassen, können Sie den 503-Fehler überwinden und die Daten erhalten, die Sie zum Betrieb Ihrer Anwendungen benötigen. Viel Spaß beim Schaben!

Mitreden

E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind MIT * gekennzeichnet. *