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

> requests.exceptions.ProxyError 'Impossibile connettersi al proxy' spiegazione: leggi la causa interna (rifiutato, timeout, DNS, 407, 502) e applica la correzione adeguata.

- URL: https://crawlrelay.com/it/docs/errors/cannot-connect-to-proxy/
- Ultimo aggiornamento: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

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

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

| Attributo | Valore |
| --- | --- |
| Errore | Cannot connect to proxy (ProxyError) |
| Tipo | Errore libreria client (Python, Node.js) |
| Inviato da | Il tuo client HTTP, prima o durante la connessione al proxy |
| Definito in | Library error; read the nested cause for the real reason |
| Riprovarlo? | Dipende dalla causa più profonda |
| Prima verifica | Leggi 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)*

```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 '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](https://crawlrelay.com/it/docs/errors/407-proxy-authentication-required/).
- **502 o 504:** riprova su un nuovo exit. Vedi [502](https://crawlrelay.com/it/docs/errors/502-bad-gateway/) e [504](https://crawlrelay.com/it/docs/errors/504-gateway-timeout/).
- **Proxy d'ambiente indesiderato:** imposta `session.trust_env = False` in requests, o pulisci le variabili.

*Python: costruisci l'URL del proxy con credenziali codificate*

```python
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](https://crawlrelay.com/it/docs/errors/ssl-wrong-version-number/) · [407](https://crawlrelay.com/it/docs/errors/407-proxy-authentication-required/) · [Guida Python](https://crawlrelay.com/it/docs/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

- [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.
