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

502 Bad Gateway tramite proxy: 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 502 Bad Gateway con un proxy?

502 Bad Gateway significa che un gateway o proxy ha ricevuto una risposta invalida o nulla dal server successivo nella catena. Tramite i proxy residenziali di CrawlRelay, un 502 significa di solito che la connessione di uscita o il target sono falliti a metà richiesta. Ritenta una volta con una nuova connessione. Se i 502 continuano solo per un sito, il problema è il sito; se colpiscono tutti i siti, controlla la tua configurazione.

502 Bad Gateway a colpo d'occhio

Errore502 Bad Gateway
TipoCodice di stato HTTP (5xx, errore server)
Inviato daIl gateway proxy o un reverse proxy di fronte al target
Definito inRFC 9110, section 15.6.3
Riprovarlo?Sì, su una nuova connessione o sessione
Prima verificaRiprova una volta su un IP nuovo; se persiste, testa il target senza proxy

Cosa significa 502 Bad Gateway?

RFC 9110 descrive il 502 come un modo per un gateway di indicare che il server dietro ha risposto male. In una catena di scraping ci sono almeno due gateway: il proxy e, molto spesso, un CDN o bilanciatore di carico davanti al sito. Qualsiasi dei due può produrre il 502, e il corpo di risposta solitamente indica quale.

Le reti residenziali aggiungono un altro anello. L'exit è una connessione domestica reale, e un dispositivo può lasciare la rete a metà richiesta. Il gateway allora non ha nulla di valido da restituire.

Com'è a 502 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: status_code == 502, o ProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 502 Bad Gateway')) per target HTTPS
  • curl: curl: (56) CONNECT tunnel failed, response 502
  • Browser: net::ERR_TUNNEL_CONNECTION_FAILED su HTTPS, o una pagina errore semplice su HTTP
  • Scrapy: ritentato di default, visto che 502 è in RETRY_HTTP_CODES

Cosa causa a 502?

Probabilmente prima:

  • L'exit è uscito dal pool durante la richiesta, cosa che succede in qualunque rete residenziale.
  • Il target ha chiuso la connessione, crashato o restituito qualcosa di malformato.
  • Il CDN del target ha fallito nel raggiungere il server origin.
  • Fallimento DNS per il target lato exit, ad esempio un errore di battitura nell'hostname.
  • Targeting molto stretto che lascia pochi exit, quindi i fallimenti si ripetono sul piccolo insieme.

Come diagnostico a 502 passo dopo passo?

  1. Ritenta la richiesta con una connessione nuova. Un singolo 502 che sparisce era un exit caduto.
  2. Leggi il corpo risposta e le intestazioni: la pagina errore CDN nomina il CDN; un messaggio proxy breve nomina il gateway.
  3. Testa il target dalla tua connessione senza proxy.
  4. Allarga il targeting da città a paese e confronta le frequenze di errore.
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 502?

  • Ritenta con un nuovo ID di sessione o senza, così la richiesta esce da un altro exit.
  • Imposta timeout sensati così un exit morto fallisce rapidamente invece di bloccarsi.
  • Registra i 502 per host e metti in pausa un host se il tasso di 502 sale: probabilmente è offline.
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 502?

Sì, ritenta un 502, ma con un exit nuovo e con un limite. Due o tre tentativi con un piccolo backoff bastano. Un 502 che persiste con diversi exit punta al target, e altri retry non aiutano. Monitora il tasso per host così che un sito fallito non saturi la coda di retry.

Come si applica 502 Bad Gateway a CrawlRelay?

Con CrawlRelay, scarta l'ID di sessione o creane uno nuovo per uscire quasi sempre attraverso un IP residenziale diverso. Una sessione sticky ti lega a un exit, quindi un 502 dentro una sessione sticky dovrebbe terminare quella sessione nel tuo codice. La guida alle sessioni spiega come ruotare una sessione pulita.

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: 504 Gateway Timeout · Connection reset · 503 Service Unavailable.

502 Bad Gateway: domande frequenti dagli sviluppatori

Un 502 è colpa del proxy o del sito web?

Entrambi. Leggi il contenuto della risposta: le pagine d'errore CDN indicano il CDN, che punta al sito web. Un 502 su ogni sito che provi punta al proxy o alla tua configurazione, mentre un 502 su un solo sito punta a quel sito. Prova lo stesso URL senza proxy per esserne sicuro.

Perché gli errori 502 sono più comuni con proxy residentiali?

Gli exit residentiali sono vere connessioni domestiche, e i dispositivi si disconnettono, cambiano rete o perdono segnale. Una richiesta in corso in quel momento termina con un 502 o un reset. Un buon scraper tratta questi casi come normali e riprova con un nuovo exit, con un limite basso.

Dovrei passare a sessioni sticky per ridurre i 502?

No. Una sessione sticky ti mantiene su un solo exit, quindi se quell'exit fallisce, tutte le richieste della sessione falliscono con esso. Usa connessioni rotanti per pagine indipendenti e sessioni sticky solo per flussi multi-passo. Termina una sessione sticky dopo un 502 e inizia una nuova.

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