Senza KYC — niente documento, selfie o altri documenti. Paga in crypto: BTC, USDT, USDC, ETH, SOL, LTC
Lingua: Italiano
Inizia ora

Riferimento errori proxy · Codici di stato HTTP

503 Service Unavailable quando si fa scraping: cosa significa e come risolverlo

Codice di stato HTTP (5xx, errore server): il messaggio esatto in ogni strumento, le cause probabili in ordine e la soluzione che funziona.

Ultimo aggiornamento: · 5 minuti di lettura

Risposta rapida

Cosa significa 503 Service Unavailable con un proxy?

503 Service Unavailable significa che il server non può gestire la richiesta in questo momento, per sovraccarico, manutenzione o regole di protezione. Tramite i proxy residentiali CrawlRelay, leggi l'intestazione Retry-After e il corpo della risposta: un 503 per manutenzione o sovraccarico si risolve col tempo, mentre una pagina challenge indica che il sito filtra traffico automatizzato e dovresti rallentare.

503 Service Unavailable a colpo d'occhio

Errore503 Service Unavailable
TipoCodice di stato HTTP (5xx, errore server)
Inviato daIl sito target, il suo CDN, o il proxy quando non ha exit disponibili
Definito inRFC 9110, section 15.6.4 (Retry-After: section 10.2.3)
Riprovarlo?Sì, dopo Retry-After o un backoff
Prima verificaControlla l'intestazione Retry-After e se il corpo è una pagina di sfida CDN

Cosa significa 503 Service Unavailable?

La RFC 9110 definisce 503 come condizione temporanea. Il server è attivo ma non disponibile o non disposto a servire questa richiesta ora, e può indicare quando tornare con Retry-After.

In pratica, tre situazioni diverse condividono questo codice: un sito veramente sovraccarico o in manutenzione, un CDN che presenta una pagina challenge al traffico che considera automatizzato, e un gateway proxy senza exit disponibili per un targeting molto specifico. Corpo e intestazioni li distinguono.

Com'è a 503 in Python, curl, Node.js e browser?

Lo stesso errore si presenta in modo diverso in ogni strumento. Questi sono i messaggi da cercare nei log:

  • Python requests / httpx: status_code == 503, talvolta con Retry-After
  • Scrapy: riprovato di default (503 in RETRY_HTTP_CODES)
  • curl: HTTP/2 503, spesso con intestazione server: che nomina il CDN
  • Browser: una pagina di manutenzione o una pagina di controllo interstiziale

Cosa causa a 503?

Probabilmente prima:

  • Sovraccarico o manutenzione lato target, spesso con Retry-After.
  • Una pagina challenge che un CDN serve a client da verificare, con stato 503 o 403.
  • Il tuo carico, quando il tuo crawler rappresenta una grande quota del traffico del sito.
  • Targeting stretto, come una piccola città, quando nessun exit corrisponde in quel momento.
  • Un’interruzione a monte nel CDN o nella regione cloud usata dal sito.

Come diagnostico a 503 passo dopo passo?

  1. Leggi Retry-After e l'intestazione server, poi osserva il titolo HTML del corpo.
  2. Carica la pagina in un browser dallo stesso paese per vedere cosa vede un utente.
  3. Metti in pausa il crawler per qualche minuto e prova una richiesta: se va, il tuo carico era la causa.
  4. Allarga il targeting al livello paese e confronta.
Testa l'URL che fallisce con curl (porta HTTP, verbose)
# 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_URL

Come risolvo a 503?

  • Attendi e riprova usando il ritardo Retry-After o un backoff esponenziale.
  • Riduci il carico su quell'host: meno richieste parallele, ritardi più lunghi, caching.
  • Considera una pagina challenge come segnale di stop a quel ritmo. Non usare strumenti di risoluzione CAPTCHA o camuffamento browser per passarla; abbassa la frequenza e contatta il sito se serve accesso.
  • Allarga il targeting quando il 503 arriva con un filtro ristretto su città.
Python: riprova con Retry-After, backoff esponenziale e jitter
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))

Devo riprovare dopo a 503?

Riprova un 503, ma con pazienza. Usa Retry-After se presente; altrimenti backoff esponenziale da pochi secondi fino a uno o due minuti. Se un host restituisce 503 alla maggior parte delle richieste per più di pochi minuti, sospendilo del tutto e torna dopo. Conta le challenge pages separatamente dai blackout reali nei tuoi log.

Come si applica 503 Service Unavailable a CrawlRelay?

CrawlRelay invia la tua richiesta tramite un IP residential scelto in base al target. Il targeting a livello paese usa il set più ampio di exit; il targeting a livello città è più ristretto. Se i 503 appaiono solo con filtro città, prova la stessa richiesta solo a livello paese prima di cambiare altro.

Gateway: gw.crawlrelay.com, porta 7777 (HTTP, HTTPS tramite CONNECT) e porta 7778 (SOCKS5). Formato username: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Correlato: 429 Too Many Requests · 502 Bad Gateway · 504 Gateway Timeout.

503 Service Unavailable: domande frequenti dagli sviluppatori

Perché ricevo 503 solo tramite proxy e non da casa?

O il sito tratta diversamente il tuo traffico proxy, spesso mostrando una pagina challenge, oppure il tuo targeting è così stretto che gli exit sono pochi. Confronta il corpo della risposta nei due casi. Una pagina challenge significa rallentare; un breve messaggio proxy con targeting stretto significa allargare il filtro di localizzazione.

Un 503 è la stessa cosa di essere bloccati?

No. Un vero 503 è temporaneo e si risolve col tempo. Una pagina challenge servita con 503 è un filtro, e di solito indica che il ritmo o il pattern sembrano automatizzati. Abbassa la concorrenza e aggiungi ritardi. Se il sito non vuole alcun accesso automatizzato, rispettalo e cerca un’API o dati con licenza.

Quante volte devo riprovare un 503?

Da tre a cinque volte con backoff esponenziale è un limite ragionevole per un URL. Oltre, metti in pausa l’intero host invece di riprovare singoli URL, perché un sito in difficoltà non si riprende più velocemente con retry. Registra host e orario per riprendere dopo.

Altri errori proxy in questo riferimento

Codici di stato HTTP

Errori del browser e client

Errori di connessione e TLS

Proxy residenziali con documentazione che copre i casi di errore

Proxy residenziali CrawlRelay da 0,50 USD/GB, traffico che non scade mai.

Da 0,50 USD/GB · senza KYC

Inizia ora