Sin KYC — sin ID, sin selfie, sin documentos. Paga con criptomonedas: BTC, USDT, USDC, ETH, SOL, LTC
Idioma: Español
Comienza ahora

Referencia de errores proxy · Errores de conexión y TLS

SSL WRONG_VERSION_NUMBER vía proxy: la solución

Error TLS en el cliente: el mensaje exacto en cada herramienta, las causas probables en orden y la solución que funciona.

Última actualización: · 4 minutos de lectura

Respuesta rápida

¿Qué significa SSL: WRONG_VERSION_NUMBER con un proxy?

[SSL: WRONG_VERSION_NUMBER] a través de un proxy casi siempre significa que tu cliente inició un handshake TLS con algo que respondió en texto plano. La causa habitual es una URL de proxy https:// apuntando a un puerto proxy HTTP simple. Con CrawlRelay, escribe http:// delante de la dirección de la puerta de enlace tanto para destinos HTTP como HTTPS; el HTTPS propio del sitio sigue funcionando dentro del túnel.

SSL: WRONG_VERSION_NUMBER en pocas palabras

ErrorSSL: WRONG_VERSION_NUMBER
TipoError TLS en el cliente
Enviado porTu biblioteca TLS, cuando el otro lado no habla TLS
Definido enTLS 1.3: RFC 8446; HTTP proxy CONNECT: RFC 9110, section 9.3.6
¿Reintentar?No. Es un error de configuración
Primera comprobaciónMira el esquema delante de la URL del proxy

¿Qué significa SSL: WRONG_VERSION_NUMBER?

TLS empieza con un registro de handshake. Si los bytes que regresan son una respuesta HTTP en lugar de eso, la biblioteca TLS lee un número de versión inválido y para. Python reporta WRONG_VERSION_NUMBER; la redacción varía con la versión de OpenSSL y el cliente.

El esquema de la URL del proxy decide cómo el cliente habla con el proxy. http:// significa HTTP plano con el proxy, seguido por túnel CONNECT y TLS con el sitio web. https:// significa TLS con el mismo proxy, que sólo funciona si el puerto del proxy espera TLS.

¿Cómo se ve SSL: WRONG_VERSION_NUMBER 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 / urllib3 2.x: SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number')) envuelto en un ProxyError
  • httpx: httpx.ConnectError: [SSL: WRONG_VERSION_NUMBER] wrong version number
  • curl: curl: (35) ... wrong version number cuando escribes -x https:// para un proxy simple
  • Node.js: EPROTO ... wrong version number en el mensaje de error

¿Qué causa SSL: WRONG_VERSION_NUMBER?

Lo más probable al principio:

  • https:// delante de la dirección del proxy en un puerto que habla HTTP plano. Es el caso más común.
  • Configuraciones copiadas de un proveedor cuyo puerto proxy sí espera TLS.
  • https:// en una URL con puerto 80, o http:// en un puerto de sitio que espera TLS, fuera de cualquier proxy.
  • Una variable de entorno como HTTPS_PROXY=https://... que tu código hereda.

¿Cómo diagnostico SSL: WRONG_VERSION_NUMBER paso a paso?

  1. Imprime la URL del proxy que tu código usa y revisa su esquema.
  2. Revisa el entorno para HTTPS_PROXY y ALL_PROXY.
  3. Ejecuta la prueba curl abajo con -x http:// y confirma que funciona.
  4. Si curl funciona y tu código no, tu código o entorno todavía usa https://.
Prueba la URL que falla con curl (puerto HTTP, modo detallado)
# 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

¿Cómo soluciono SSL: WRONG_VERSION_NUMBER?

  • Usa http:// para la URL del proxy en cada clave: {"http": "http://...", "https": "http://..."}.
  • Deja activa la verificación TLS. La solución es el esquema, no verify=False.
  • Corrige la variable de entorno en lugar de sobreescribir en un script.

¿Debo reintentar después de SSL: WRONG_VERSION_NUMBER?

Nunca reintentes este error: cada intento falla igual. Es una corrección de configuración de un solo carácter.

¿Cómo se aplica SSL: WRONG_VERSION_NUMBER a CrawlRelay?

El puerto HTTP de CrawlRelay es un puerto proxy HTTP plano que transporta sitios HTTPS mediante túneles CONNECT. TLS funciona de extremo a extremo entre tu cliente y el sitio web dentro del túnel, así que la puerta de enlace nunca necesita una URL de proxy https://.

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: Error de verificación de certificado SSL · No se puede conectar al proxy · Guía Python.

SSL: WRONG_VERSION_NUMBER: preguntas que hacen los desarrolladores

¿Mi tráfico no está cifrado si uso una URL proxy http://?

No para sitios HTTPS. El esquema http:// sólo cubre el intercambio corto CONNECT con el proxy, que incluye tus credenciales. Después, el cliente ejecuta TLS directamente con el sitio dentro del túnel, y el proxy sólo reenvía bytes cifrados. Los sitios con http:// plano están sin cifrar con o sin proxy.

¿Por qué empezó esto tras actualizar urllib3?

urllib3 2.x soporta proxies HTTPS, así que toma literalmente una URL de proxy https:// y arranca TLS con el proxy. Configuraciones antiguas a veces funcionaban por accidente con esquema erróneo. Escribe http:// para puertos proxy HTTP plano y el error desaparece.

¿Debo poner verify=False para eliminar el error?

No. Desactivar la verificación de certificados no arregla un esquema erróneo y te expone a interceptación en cada petición. Corrige el esquema de la URL del proxy. Mantén la verificación activada en producción.

Otros errores de proxy en esta referencia

Códigos de estado HTTP

Errores de navegador y cliente

Errores de conexión y TLS

Proxies residenciales con documentación que cubre los casos de fallo

CrawlRelay proxies residenciales de 0,50 US$/GB, tráfico que nunca expira.

Desde 0,50 US$/GB · sin KYC

Comienza ahora