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

> 503 Service Unavailable attraverso proxy: sovraccarico del target, manutenzione, pagina challenge, o targeting troppo stretto. Come capire qual è e risolverlo.

- URL: https://crawlrelay.com/it/docs/errors/503-service-unavailable/
- Ultimo aggiornamento: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

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

**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

| Attributo | Valore |
| --- | --- |
| Errore | 503 Service Unavailable |
| Tipo | Codice di stato HTTP (5xx, errore server) |
| Inviato da | Il sito target, il suo CDN, o il proxy quando non ha exit disponibili |
| Definito in | RFC 9110, section 15.6.4 (Retry-After: section 10.2.3) |
| Riprovarlo? | Sì, dopo Retry-After o un backoff |
| Prima verifica | Controlla 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)*

```bash
# 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:PASSWORD@gw.crawlrelay.com: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*

```python
import random
import time

import requests

PROXY = "http://USERNAME:PASSWORD@gw.crawlrelay.com: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](https://crawlrelay.com/it/docs/errors/429-too-many-requests/) · [502 Bad Gateway](https://crawlrelay.com/it/docs/errors/502-bad-gateway/) · [504 Gateway Timeout](https://crawlrelay.com/it/docs/errors/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

- [401 Unauthorized vs 407](https://crawlrelay.com/it/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/it/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/it/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/it/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/it/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/it/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/it/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/it/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/it/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/it/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/it/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/it/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/it/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/it/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/it/docs/errors/ssl-wrong-version-number/)

**Proxy residenziali con documentazione che copre i casi di errore** Proxy residenziali CrawlRelay da 0,50 USD/GB, traffico che non scade mai. [Vedi i prezzi](https://crawlrelay.com/it/pricing/) · [Avvio rapido](https://crawlrelay.com/it/docs/)

---

CrawlRelay: CrawlRelay è un servizio di proxy residenziali rotanti e proxy mobili 4G/5G primo per sviluppatori: traffico pay-as-you-go senza scadenza da 0,50 USD/GB, pagato in crypto, senza caricamento documenti. Senza KYC — niente documento, selfie o altri documenti. Paga in crypto.
