Kurze Antwort
Was bedeutet 503 Service Unavailable bei einem Proxy?
503 Service Unavailable bedeutet, dass der Server die Anfrage aktuell nicht bearbeiten kann, wegen Überlastung, Wartung oder Schutzregel. Über CrawlRelay Residential Proxies lesen Sie den Retry-After Header und den Antworttext: Wartungs- oder Überlast-503 lösen sich mit der Zeit, eine Challenge-Seite zeigt eine Filterung automatisierten Verkehrs, hier sollten Sie das Tempo reduzieren.
503 Service Unavailable auf einen Blick
| Fehler | 503 Service Unavailable |
|---|---|
| Typ | HTTP-Statuscode (5xx, Serverfehler) |
| Gesendet von | Die Ziel-Website, ihr CDN oder der Proxy, wenn kein Exit verfügbar ist |
| Definiert in | RFC 9110, section 15.6.4 (Retry-After: section 10.2.3) |
| Noch einmal versuchen? | Ja, nach Retry-After oder einer Wartezeit |
| Zuerst prüfen | Prüfen Sie den Retry-After-Header und ob der Body eine CDN-Prüfseite zeigt |
Was bedeutet 503 Service Unavailable?
RFC 9110 definiert 503 als temporären Zustand. Der Server ist erreichbar, kann die Anfrage aber momentan nicht bedienen, und gibt eventuell mit Retry-After an, wann man es erneut versuchen soll.
In der Praxis sind drei Situationen damit gemeint: eine stark belastete oder wartende Seite, ein CDN, das eine Challenge-Seite an automatisierten Verkehr sendet, und ein Proxy-Gateway ohne passenden Exit bei enger Zielauswahl. Body und Header unterscheiden das.
Wie sieht a 503 in Python, curl, Node.js und Browsern aus?
Der gleiche Fehler wird in jedem Tool anders angezeigt. Hier sind die Meldungen, nach denen Sie in Ihren Logs suchen sollten:
- Python requests / httpx:
status_code == 503, manchmal mitRetry-After - Scrapy: Standardmäßig Retrying (503 ist in
RETRY_HTTP_CODES) - curl:
HTTP/2 503, oft mitserver:Header, der das CDN nennt - Browser: Wartungsseite oder Zwischenseite mit Prüfung
Was verursacht a 503?
Wahrscheinlich zuerst:
- Überlast oder Wartung auf Zielseite, häufig mit
Retry-After. - Challenge-Seite von einem CDN als Prüfung, meist mit Status 503 oder 403.
- Ihr eigener Traffic, wenn der Crawler großen Anteil am Seitenverkehr hat.
- Enge Zielauswahl, z. B. eine kleine Stadt, wenn aktuell kein Exit passt.
- **Störung im CDN oder Cloud-Region, die die Seite nutzt.
Wie diagnostiziere ich a 503 Schritt für Schritt?
- Lesen Sie
Retry-AfterundserverHeader und schauen Sie sich den HTML-Titel des Bodys an. - Laden Sie die Seite im Browser aus dem gleichen Land, um zu sehen, was ein Nutzer sieht.
- Pausieren Sie den Crawler einige Minuten und testen Sie eine Anfrage. Wenn sie klappt, war Ihr Traffic der Grund.
- Erweitern Sie die Zielauswahl auf Landesebene und vergleichen.
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL
# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URLWie behebe ich a 503?
- Warten und mit
Retry-AfterDelay oder exponentiellem Backoff erneut versuchen. - Reduzieren Sie Ihre Last auf diesen Host: weniger parallele Anfragen, längere Pausen, Caching.
- Behandeln Sie eine Challenge-Seite als Stoppsignal für diese Rate. Kein Einsatz von CAPTCHA-Lösungen oder Browser-Tarnung; reduzieren Sie das Tempo und kontaktieren Sie die Seite, wenn Zugang nötig.
- Erweitern Sie die Zielauswahl, wenn 503 mit enger Stadtfilterung auftritt.
import random
import time
import requests
PROXY = "http://USERNAME:[email protected]:7777"
PROXIES = {"http": PROXY, "https": PROXY}
RETRY_STATUSES = {429, 502, 503, 504}
def fetch(url, attempts=5, timeout=(10, 30)):
for attempt in range(attempts):
try:
r = requests.get(url, proxies=PROXIES, timeout=timeout)
except (requests.exceptions.ConnectionError, requests.exceptions.Timeout):
r = None # dropped exit, reset or timeout: a new connection gets a new exit
if r is not None and r.status_code not in RETRY_STATUSES:
return r
retry_after = r.headers.get("Retry-After", "") if r is not None else ""
if retry_after.isdigit():
wait = int(retry_after)
else:
wait = min(60, 2 ** attempt) + random.uniform(0, 1)
time.sleep(wait)
raise RuntimeError("giving up on %s after %d attempts" % (url, attempts))Soll ich nach a 503 einen erneuten Versuch starten?
Versuchen Sie einen 503 geduldig erneut. Beachten Sie Retry-After, falls vorhanden; ansonsten erhöhen Sie die Wartezeit exponentiell von einigen Sekunden bis ein bis zwei Minuten. Wenn ein Host länger als ein paar Minuten zu 503 auf die meisten Anfragen antwortet, pausieren Sie ihn komplett und kommen später zurück. Protokollieren Sie Challenge-Seiten getrennt von richtigen Ausfällen.
Wie wirkt sich 503 Service Unavailable auf CrawlRelay aus?
CrawlRelay sendet Ihre Anfrage über eine Residential IP, die zu Ihrer Zielwahl passt. Eine Landeszielauswahl nutzt den breitesten Ausstiegs-Pool; eine Stadtzielauswahl ist enger. Wenn 503s nur mit Stadtfilter auftreten, testen Sie die gleiche Anfrage nur mit Länderauswahl, bevor Sie Änderungen vornehmen.
Gateway: gw.crawlrelay.com, Port 7777 (HTTP, HTTPS über CONNECT) und Port 7778 (SOCKS5). Benutzername im Format: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Verwandt: 429 Too Many Requests · 502 Bad Gateway · 504 Gateway Timeout.
503 Service Unavailable: Fragen, die Entwickler stellen
Warum bekomme ich 503 nur über den Proxy und nicht zu Hause?
Entweder behandelt die Seite Ihren proxied Traffic anders, zeigt oft eine Challenge-Seite, oder Ihre Zielwahl ist so eng, dass Exits rar sind. Vergleichen Sie den Antwort-Body beider Fälle. Eine Challenge-Seite bedeutet langsamer machen; eine kurze Proxy-Meldung mit enger Zielauswahl heißt, Sie sollten den Standortfilter erweitern.
Ist ein 503 das gleiche wie eine Blockierung?
Nein. Ein echter 503 ist temporär und verschwindet mit der Zeit. Eine Challenge-Seite mit 503 ist ein Filter, der meist zeigt, dass Ihr Tempo oder Muster automatisiert wirkt. Verringern Sie gleichzeitige Anfragen und fügen Sie Pausen ein. Wenn die Seite automatisierten Zugriff ganz ablehnt, akzeptieren Sie das und suchen Sie nach API oder lizenzierten Daten.
Wie oft soll ich einen 503 erneut versuchen?
Drei bis fünf Versuche mit exponentiellem Backoff sind eine vernünftige Obergrenze pro URL. Darüber hinaus pausieren Sie den gesamten Host, statt einzelne URLs weiter zu versuchen, denn eine gestresste Seite erholt sich durch Wiederholungen nicht schneller. Protokollieren Sie Host und Zeit, um später fortzufahren.
Weitere Proxy-Fehler in diesem Leitfaden
HTTP-Statuscodes
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Browser- und Clientfehler
Verbindungs- und TLS-Fehler
Residential-Proxys mit Dokumentationen, die Fehlerfälle abdecken
CrawlRelay Residential-Proxys von 0,50 $/GB, Traffic, der nie abläuft.