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

Riferimento errori proxy · Errori del browser e client

ProxyError: 'Impossibile connettersi al proxy' in Python e Node.js

Errore libreria client (Python, Node.js): il messaggio esatto in ogni strumento, le cause probabili in ordine e la soluzione che funziona.

Ultimo aggiornamento: · 4 minuti di lettura

Risposta rapida

Cosa significa Cannot connect to proxy (ProxyError) con un proxy?

'Impossibile connettersi al proxy' è un errore wrapper: requests e urllib3 di Python mettono la ragione reale al suo interno. Leggi la causa più profonda. 'Connessione rifiutata' o timeout significa un problema di host, porta o rete; 'Impossibile risolvere' significa DNS; 'Connessione tunnel fallita: 407' significa credenziali. Con CrawlRelay, ognuno di questi ha una soluzione in una riga.

Cannot connect to proxy (ProxyError) a colpo d'occhio

ErroreCannot connect to proxy (ProxyError)
TipoErrore libreria client (Python, Node.js)
Inviato daIl tuo client HTTP, prima o durante la connessione al proxy
Definito inLibrary error; read the nested cause for the real reason
Riprovarlo?Dipende dalla causa più profonda
Prima verificaLeggi l’eccezione più interna: rifiutato, timeout, risoluzione nome o codice di stato

Cosa significa Cannot connect to proxy (ProxyError)?

urllib3 genera un ProxyError per ogni errore che coinvolge il proxy, e requests lo trasmette. L'informazione utile è nell'eccezione annidata, che il traceback stampa alla fine di una lunga riga.

I client Node.js si comportano diversamente: riportano direttamente l'errore del socket, come ECONNREFUSED o ETIMEDOUT, spesso senza indicare che l'indirizzo era quello del proxy.

Com'è 'Cannot connect to proxy' 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:

  • Rifiutato: ProxyError('Unable to connect to proxy', NewConnectionError(... Connection refused))
  • DNS: NameResolutionError(... Failed to resolve ...) dentro ProxyError
  • Credenziali: OSError('Tunnel connection failed: 407 Proxy Authentication Required')
  • Errore gateway: OSError('Tunnel connection failed: 502 Bad Gateway')
  • Node.js: Error: connect ECONNREFUSED, ETIMEDOUT o ENOTFOUND, seguito dall'indirizzo del proxy

Cosa causa 'Cannot connect to proxy'?

Probabilmente prima:

  • Host o porta sbagliati nell'URL del proxy.
  • Mancanza dello schema: host:port senza http:// è interpretato in modi sorprendenti da alcune librerie.
  • Traffico in uscita bloccato sulla rete o server.
  • Errori di credenziali o gateway che emergono durante la fase CONNECT, racchiusi nella stessa eccezione.
  • Variabili d'ambiente come HTTPS_PROXY che puntano a un vecchio proxy e sovrascrivono il tuo codice.

Come diagnostico 'Cannot connect to proxy' passo dopo passo?

  1. Stampa l'eccezione completa e leggi la causa annidata più recente.
  2. Stampa requests.utils.get_environ_proxies(url) o le variabili HTTP_PROXY, HTTPS_PROXY e NO_PROXY per vedere cos'altro è configurato.
  3. Esegui il test curl qui sotto dalla stessa macchina.
  4. Associa la causa con la lista delle soluzioni qui sotto.
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 'Cannot connect to proxy'?

  • Rifiutato o timeout: correggi host e porta, o apri il traffico in uscita verso il gateway.
  • Impossibile risolvere: controlla il DNS sulla macchina; prova l'host con nslookup.
  • 407: correggi e codifica URL le credenziali. Vedi 407 Proxy Authentication Required.
  • 502 o 504: riprova su un nuovo exit. Vedi 502 e 504.
  • Proxy d'ambiente indesiderato: imposta session.trust_env = False in requests, o pulisci le variabili.
Python: costruisci l'URL del proxy con credenziali codificate
from urllib.parse import quote

import requests

user = "USERNAME-country-us"
password = "p@ss:word/1"  # example containing special characters

# safe="" also encodes "/", "@" and ":" inside the credentials
proxy = "http://{}:{}@gw.crawlrelay.com:7777".format(
    quote(user, safe=""), quote(password, safe="")
)
proxies = {"http": proxy, "https": proxy}  # http:// for both keys

r = requests.get("https://api.ipify.org", proxies=proxies, timeout=(10, 30))
print(r.status_code, r.text)

Devo riprovare dopo 'Cannot connect to proxy'?

Riprova solo le cause a livello di rete che possono cambiare: timeout ed errori di gateway come 502 o 504. Una connessione rifiutata, un fallimento DNS o un 407 si ripeteranno finché non cambi la configurazione, quindi trattali come errori fatali nella gestione degli errori.

Come si applica Cannot connect to proxy (ProxyError) a CrawlRelay?

Per CrawlRelay, l'URL del proxy è http://USERNAME:PASSWORD@ seguito dall'host del gateway e dalla porta HTTP indicata qui sotto, per destinazioni HTTP e HTTPS allo stesso modo. Usa lo stesso URL http:// per entrambe le chiavi http e https in requests: lo schema indica il protocollo parlato col proxy, non col sito web.

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: SSL: WRONG_VERSION_NUMBER · 407 · Guida Python.

Cannot connect to proxy (ProxyError): domande frequenti dagli sviluppatori

Cosa significa 'Max retries exceeded with url' con un proxy?

Significa che urllib3 ha rinunciato dopo aver esaurito i tentativi, e la ragione reale segue nella parte 'Caused by' del messaggio. Con un proxy, quella parte è di solito un ProxyError con una causa annidata: connessione rifiutata, timeout, fallimento nella risoluzione del nome oppure uno stato tunnel come 407.

Perché requests usa un proxy che non ho configurato?

requests legge le variabili d'ambiente HTTP_PROXY, HTTPS_PROXY e NO_PROXY per impostazione predefinita, e su Windows legge anche le impostazioni proxy di sistema. Un valore residuo sovrascrive così le tue aspettative. Imposta session.trust_env = False, o passa i proxy esplicitamente a ogni richiesta.

Devo scrivere http:// o https:// davanti all'indirizzo del proxy?

Scrivi http:// per un proxy HTTP, anche se il sito usa HTTPS. Lo schema descrive come il client comunica col proxy. Scrivere https:// fa sì che le versioni più recenti di urllib3 inizino TLS col proxy, cosa che genera un errore SSL su una porta proxy HTTP semplice.

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