# ProxyError: 'No se puede conectar al proxy' en Python y Node.js

> requests.exceptions.ProxyError 'No se puede conectar al proxy' explicado: lee la causa anidada (rechazado, timeout, DNS, 407, 502) y aplica la solución correcta.

- URL: https://crawlrelay.com/es/docs/errors/cannot-connect-to-proxy/
- Última actualización: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

Error en la librería cliente (Python, Node.js): el mensaje exacto en cada herramienta, las causas probables en orden y la solución que funciona.

**Respuesta rápida — ¿Qué significa Cannot connect to proxy (ProxyError) con un proxy?**

**'No se puede conectar al proxy'** es un error contenedor: requests y urllib3 de Python colocan la razón real dentro. Lee la causa más interna. 'Conexión rechazada' o un timeout significa un problema en host, puerto o red; 'Fallo al resolver' significa DNS; 'Fallo en la conexión del túnel: 407' significa credenciales. Con CrawlRelay, cada uno tiene una solución en una línea.

## Cannot connect to proxy (ProxyError) en pocas palabras

| Atributo | Valor |
| --- | --- |
| Error | Cannot connect to proxy (ProxyError) |
| Tipo | Error en la librería cliente (Python, Node.js) |
| Enviado por | Tu cliente HTTP, antes o mientras habla con el proxy |
| Definido en | Library error; read the nested cause for the real reason |
| ¿Reintentar? | Depende de la causa anidada |
| Primera comprobación | Lee la excepción más interna: rechazado, timeout, resolución de nombre o un código de estado |

## ¿Qué significa Cannot connect to proxy (ProxyError)?

urllib3 lanza un `ProxyError` por cada fallo que involucra al proxy, y requests lo pasa. La información útil está en la excepción anidada, que el traceback imprime al final de una línea larga.

Los clientes Node.js se comportan distinto: reportan directamente el error de socket, como `ECONNREFUSED` o `ETIMEDOUT`, a menudo sin decir que la dirección era la del proxy.

## ¿Cómo se ve 'Cannot connect to proxy' en Python, curl, Node.js y navegadores?

El mismo fallo se muestra de forma diferente en cada herramienta. Estos son los mensajes que debes buscar en tus registros:

- **Rechazado:** `ProxyError('Unable to connect to proxy', NewConnectionError(... Connection refused))`
- **DNS:** `NameResolutionError(... Failed to resolve ...)` dentro del `ProxyError`
- **Credenciales:** `OSError('Tunnel connection failed: 407 Proxy Authentication Required')`
- **Error de puerta de enlace:** `OSError('Tunnel connection failed: 502 Bad Gateway')`
- **Node.js:** `Error: connect ECONNREFUSED`, `ETIMEDOUT` o `ENOTFOUND`, seguido por la dirección del proxy

## ¿Qué causa 'Cannot connect to proxy'?

Lo más probable al principio:

- **Host o puerto incorrectos** en la URL del proxy.
- **Falta el esquema**: `host:port` sin `http://` se interpreta de forma inesperada en algunas librerías.
- **Tráfico saliente bloqueado** en tu red o servidor.
- **Errores de credenciales o puerta de enlace** que aparecen en el paso CONNECT, envueltos en la misma excepción.
- **Variables de entorno** como `HTTPS_PROXY` que apuntan a un proxy viejo y sobrescriben tu código.

## ¿Cómo diagnostico 'Cannot connect to proxy' paso a paso?

1. Imprime la excepción completa y lee la última causa anidada.
2. Imprime `requests.utils.get_environ_proxies(url)` o las variables `HTTP_PROXY`, `HTTPS_PROXY` y `NO_PROXY` para ver qué más está configurado.
3. Ejecuta la prueba curl abajo desde la misma máquina.
4. Empareja la causa con la lista de soluciones abajo.

*Prueba la URL que falla con curl (puerto HTTP, modo detallado)*

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

## ¿Cómo soluciono 'Cannot connect to proxy'?

- **Rechazado o tiempo agotado:** corrige host y puerto, o abre el tráfico saliente a la puerta de enlace.
- **Fallo al resolver:** revisa DNS en la máquina; prueba el host con `nslookup`.
- **407:** corrige y codifica URL las credenciales. Véase [407 Proxy Authentication Required](https://crawlrelay.com/es/docs/errors/407-proxy-authentication-required/).
- **502 o 504:** reintenta con una salida nueva. Véase [502](https://crawlrelay.com/es/docs/errors/502-bad-gateway/) y [504](https://crawlrelay.com/es/docs/errors/504-gateway-timeout/).
- **Proxy de entorno no deseado:** configura `session.trust_env = False` en requests, o limpia las variables.

*Python: construye la URL del proxy con las credenciales codificadas*

```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)
```

## ¿Debo reintentar después de 'Cannot connect to proxy'?

Reintenta sólo las causas a nivel de red que pueden cambiar: timeouts y errores de puerta de enlace como 502 o 504. Una conexión rechazada, un fallo DNS o un 407 se repetirán hasta que cambies la configuración, así que hazlos fatales en tu manejo de errores.

## ¿Cómo se aplica Cannot connect to proxy (ProxyError) a CrawlRelay?

Para CrawlRelay, la URL del proxy es `http://USERNAME:PASSWORD@` seguida del host y puerto HTTP de la puerta de enlace listados abajo, para destinos HTTP y HTTPS por igual. Usa la misma URL `http://` para las claves `http` y `https` en requests: el esquema especifica el protocolo hablado con el proxy, no con el sitio web.

Gateway: `gw.crawlrelay.com`, puerto 7777 (HTTP, HTTPS a través de CONNECT) y puerto 7778 (SOCKS5). Formato de usuario: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. Relacionado: [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/es/docs/errors/ssl-wrong-version-number/) · [407](https://crawlrelay.com/es/docs/errors/407-proxy-authentication-required/) · [Guía Python](https://crawlrelay.com/es/docs/python/).

## Cannot connect to proxy (ProxyError): preguntas que hacen los desarrolladores

### ¿Qué significa 'Max retries exceeded with url' con un proxy?

Significa que urllib3 se rindió tras su límite de reintentos, y la razón real sigue en la parte 'Caused by' del mensaje. Con un proxy, esa parte suele ser un ProxyError con una causa anidada: conexión rechazada, timeout, fallo en resolución de nombre o estado de túnel como 407.

### ¿Por qué requests usa un proxy que no configuré?

requests lee las variables de entorno `HTTP_PROXY`, `HTTPS_PROXY` y `NO_PROXY` por defecto, y en Windows también lee los ajustes del proxy del sistema. Un valor remanente sobrescribe tus expectativas. Configura `session.trust_env = False`, o pasa los proxies explícitamente en cada petición.

### ¿Debo escribir http:// o https:// delante de la dirección del proxy?

Escribe `http://` para un proxy HTTP, incluso cuando el sitio use HTTPS. El esquema describe cómo tu cliente habla con el proxy. Escribir `https://` hace que las versiones nuevas de urllib3 inicien TLS con el proxy, lo que falla en un puerto de proxy HTTP simple con un error SSL.

## Otros errores de proxy en esta referencia

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

**Proxies residenciales con documentación que cubre los casos de fallo** CrawlRelay proxies residenciales de 0,50 US$/GB, tráfico que nunca expira. [Ver precios](https://crawlrelay.com/es/pricing/) · [Inicio rápido](https://crawlrelay.com/es/docs/)

---

CrawlRelay: CrawlRelay es un servicio de proxies residenciales rotativos y proxies móviles 4G/5G para desarrolladores, ideal para scrapers y pipelines de datos de IA: tráfico prepago sin vencimiento desde 0,50 US$/GB, pagado con criptomonedas, sin subir documentos de identidad. Sin KYC — sin ID, sin selfie, sin documentos. Paga con criptomonedas.
