# 502 Bad Gateway a través de un proxy: qué significa y cómo arreglarlo

> Un 502 Bad Gateway desde un proxy residencial indica que el gateway no recibió respuesta válida arriba. Causas, cómo diferenciar proxy de destino, código de reintentos.

- URL: https://crawlrelay.com/es/docs/errors/502-bad-gateway/
- Última actualización: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

Código de estado HTTP (5xx, error servidor): el mensaje exacto en cada herramienta, las causas probables en orden y la solución que funciona.

**Respuesta rápida — ¿Qué significa 502 Bad Gateway con un proxy?**

**502 Bad Gateway** significa que un gateway o proxy recibió respuesta inválida o ninguna del siguiente servidor en cadena. Con proxies residenciales CrawlRelay, un 502 suele indicar que la conexión exit o destino falló a mitad de la solicitud. Reintenta una vez con una conexión nueva. Si 502 ocurren solo en un sitio, es problema del sitio; si afectan a todos, revisa tu configuración.

## 502 Bad Gateway en pocas palabras

| Atributo | Valor |
| --- | --- |
| Error | 502 Bad Gateway |
| Tipo | Código de estado HTTP (5xx, error servidor) |
| Enviado por | El gateway proxy o un proxy inverso frente al destino |
| Definido en | RFC 9110, section 15.6.3 |
| ¿Reintentar? | Sí, en una conexión o sesión nueva |
| Primera comprobación | Reintentar una vez con IP nueva; si persiste, prueba el destino sin proxy |

## ¿Qué significa 502 Bad Gateway?

RFC 9110 describe el 502 como forma de un gateway de decir que el servidor detrás respondió mal. En cadena de scraping hay al menos dos: el proxy y casi siempre un CDN o balanceador delante del sitio. Cualquiera puede causar 502 y el cuerpo suele indicarte cuál.

Las redes residenciales añaden un enlace más: el exit es una conexión doméstica real y un dispositivo puede salir de la red a mitad del request. Entonces el gateway no tiene nada válido para enviar.

## ¿Cómo se ve a 502 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:

- **Python requests:** `status_code == 502` o `ProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 502 Bad Gateway'))` para destino HTTPS
- **curl:** `curl: (56) CONNECT tunnel failed, response 502`
- **Navegadores:** `net::ERR_TUNNEL_CONNECTION_FAILED` en HTTPS o página de error simple en HTTP
- **Scrapy:** reintentado por defecto, porque 502 está en `RETRY_HTTP_CODES`

## ¿Qué causa a 502?

Lo más probable al principio:

- **El exit salió del pool** durante la solicitud, lo que pasa en cualquier red residencial.
- **El destino cerró conexión**, falló o respondió corrupto.
- **El CDN destino falló** al alcanzar su origen.
- **Fallo DNS del destino** en exit, por ejemplo error en hostname.
- **Segmentación muy estrecha** con pocos exits, por lo que fallos se repiten en mismos pocos.

## ¿Cómo diagnostico a 502 paso a paso?

1. Reintenta la solicitud con conexión nueva. Un solo 502 que desaparece fue un exit caído.
2. Lee cuerpo y encabezados: página de error CDN nombra al CDN; mensaje corto proxy nombra gateway.
3. Prueba el destino sin proxy con tu conexión.
4. Amplía segmentación de ciudad a país y compara tasa de fallo.

*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 a 502?

- **Reintenta con ID de sesión nuevo** o sin él, para que la solicitud pase por otro exit.
- **Establece timeouts razonables** para que un exit caído falle rápido y no quede colgado.
- **Registra 502s por host** y pausa un host si su tasa sube: probablemente está caído.

*Python: reintentar con Retry-After, backoff exponencial y 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))
```

## ¿Debo reintentar después de a 502?

Sí, reintenta un 502, pero con exit nuevo y límite. Dos o tres intentos con backoff corto bastan. Un 502 que persiste tras varios exits apunta al destino, y más intentos no ayudan. Controla la tasa por host para que un sitio fallido no sature tu cola de retries.

## ¿Cómo se aplica 502 Bad Gateway a CrawlRelay?

Con CrawlRelay, elimina o genera nuevo ID de sesión para salir, generalmente, por IP residencial distinta. Una sesión sticky te ata a un exit, así que un 502 dentro de ella debe terminar la sesión en tu código. La [guía de sesiones](https://crawlrelay.com/es/docs/sessions/) explica cómo rotar sesión limpiamente.

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: [504 Gateway Timeout](https://crawlrelay.com/es/docs/errors/504-gateway-timeout/) · [Connection reset](https://crawlrelay.com/es/docs/errors/connection-reset/) · [503 Service Unavailable](https://crawlrelay.com/es/docs/errors/503-service-unavailable/).

## 502 Bad Gateway: preguntas que hacen los desarrolladores

### ¿Es un 502 culpa del proxy o del sitio web?

Ambos. Lee el cuerpo de la respuesta: las páginas de error de CDN nombran la CDN, lo que indica el sitio web. Un 502 en todos los sitios que intentas apunta al proxy o a tu configuración, mientras que un 502 en un solo sitio apunta a ese sitio. Prueba la misma URL sin proxy para asegurarte.

### ¿Por qué los errores 502 son más comunes con proxies residenciales?

Las salidas residenciales son conexiones reales de hogares, y los dispositivos pueden desconectarse, cambiar de red o perder señal. Una petición en curso cuando eso ocurre termina con un 502 o un reinicio. Un buen scraper trata estos casos como normales y reintenta en una nueva salida, con un límite pequeño.

### ¿Debería cambiar a sesiones persistentes para reducir los 502?

No. Una sesión persistente te mantiene en una sola salida, por lo que si esa salida falla, todas las peticiones de la sesión fallan. Usa conexiones rotativas para páginas independientes y sesiones persistentes solo para flujos con múltiples pasos. Finaliza una sesión persistente después de un 502 y empieza una nueva.

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