Un cliente de juego que ignora el proxy de tu navegador, una app de Telegram que pide un «servidor SOCKS5», un scraper cuyas consultas DNS no deben salir de la red de tu oficina: los tres casos llevan al mismo protocolo. SOCKS5 abre una conexión en tu nombre y pasa los bytes en ambos sentidos, sea cual sea el tráfico.
Esta guía cubre SOCKS4 y SOCKS5, el intercambio inicial (handshake) paso a paso, UDP y DNS a través del proxy, la configuración, qué revisar al comprar y los errores más comunes. El código se probó contra un servidor SOCKS5 local.
¿Qué es SOCKS?
Un proxy SOCKS es un servidor intermediario entre tu programa y el servidor de destino. El cliente le indica al proxy a qué dirección y puerto quiere llegar, el proxy abre esa conexión y, a partir de ahí, pasa el tráfico entre las dos partes. El destino ve la dirección IP del proxy y no la tuya.
A diferencia de un proxy HTTP, SOCKS no lee los paquetes ni los modifica. Por eso se sitúa en la capa 5 del modelo OSI, por debajo de HTTP, y por eso los proxies SOCKS se llevan bien con aplicaciones que hablan protocolos muy distintos: un cliente de juego, un programa de correo y una sesión SSH pueden usar el mismo proxy. OpenSSH incluso se convierte en un servidor SOCKS local si lo inicias con ssh -D (manual de OpenSSH).
Hay dos versiones principales: SOCKS4 y SOCKS5. Cuando hoy un proveedor habla de «SOCKS», se refiere a SOCKS5.
¿Qué es SOCKS4, el protocolo antiguo?
SOCKS4 es la versión anterior y solo sirve para conexiones TCP. Su petición es mínima: un byte de versión, un comando, el puerto de destino, la dirección IPv4 de destino y un ID de usuario (especificación de SOCKS4).
Características principales de SOCKS4
- Solo TCP: CONNECT para las conexiones salientes y BIND para las entrantes. No hay UDP.
- Solo IPv4: el campo de destino ocupa cuatro bytes, así que solo admite destinos IPv4.
- Sin contraseña: el ID de usuario identifica a alguien, pero no inicia sesión. En la práctica, los servidores SOCKS4 controlan el acceso por la IP del cliente.
- DNS en el cliente: el cliente tiene que resolver el nombre de dominio y enviar una IP. La extensión SOCKS4a lo solucionó: el cliente puede enviar el nombre para que lo resuelva el proxy (especificación de SOCKS4a).
SOCKS4 sobrevive en herramientas antiguas y en reenvíos internos sencillos. Los clientes de juego actuales necesitan UDP y nombres de host, así que quien busca un proxy para juegos elige SOCKS5. Un servidor que solo habla SOCKS5 rechaza las peticiones SOCKS4; por eso, comprueba qué versión envía tu herramienta.
¿Qué es un proxy SOCKS5?
SOCKS5 es la versión actual del protocolo, publicada en 1996 como RFC 1928. Añade lo que necesitan las aplicaciones modernas:
- TCP y UDP: además de CONNECT y BIND tiene el comando UDP ASSOCIATE, por lo que transporta tráfico web, correo, transferencias de archivos, llamadas de voz, consultas DNS y tráfico de juegos.
- Autenticación: el cliente y el servidor acuerdan un método: ninguno, GSSAPI o usuario y contraseña, este último definido en el RFC 1929. Los proveedores comerciales usan usuario y contraseña o una lista de IP autorizadas.
- IPv6: el destino puede ser una dirección IPv4, una dirección IPv6 o un nombre de dominio.
- DNS en el proxy: el cliente puede enviar el nombre de dominio; así lo resuelve el proxy y la consulta nunca sale de tu propia red.
La configuración pide un host, un puerto y, normalmente, un usuario y una contraseña. Lo que cambia es el soporte de cada herramienta: Chrome no puede enviar una contraseña SOCKS5, los ajustes Wi-Fi de iPhone y Android solo aceptan proxies HTTP y algunas bibliotecas necesitan un paquete adicional.
¿Cómo funciona una conexión SOCKS5?
Cada sesión SOCKS5 empieza con un breve intercambio sobre una conexión TCP con el proxy. Los pasos siguen el RFC 1928:
- Saludo. El cliente envía la versión y sus métodos de autenticación, por ejemplo
05 02 00 02: ninguno (0x00) y usuario/contraseña (0x02). - Selección del método. El servidor devuelve su elección, por ejemplo
05 02, o05 FFsi ninguno le sirve. - Autenticación. El cliente envía el usuario y la contraseña, cada uno precedido de su longitud. El estado 0 indica éxito.
- Petición. El cliente envía un comando (CONNECT = 1, BIND = 2, UDP ASSOCIATE = 3), un tipo de dirección (IPv4 = 1, nombre de dominio = 3, IPv6 = 4), la dirección y el puerto.
- Respuesta. El proxy intenta la conexión y responde con un código: 0 éxito, 1 fallo general, 2 no permitido por las reglas, 3 red inaccesible, 4 host inaccesible, 5 conexión rechazada, 6 TTL expirado, 7 comando no admitido, 8 tipo de dirección no admitido.
- Reenvío. El proxy copia los bytes en ambos sentidos. Con HTTPS, TLS va dentro de este túnel, así que el proxy solo ve datos cifrados.
El script de abajo hace estos pasos a mano y luego abre TLS con httpbin.org a través del túnel. Contra nuestro servidor de prueba imprimió server picked method 0x2, auth status 0, reply code 0 y la IP de salida; con una contraseña incorrecta se detuvo en auth status 1.
import socket
import ssl
import struct
PROXY_HOST, PROXY_PORT = "pr.proxynet.io", 1080
USER, PASSWORD = b"user", b"pass"
TARGET_HOST, TARGET_PORT = "httpbin.org", 443
def recv_exact(sock, n):
data = b""
while len(data) < n:
chunk = sock.recv(n - len(data))
if not chunk:
raise ConnectionError("proxy closed the connection")
data += chunk
return data
sock = socket.create_connection((PROXY_HOST, PROXY_PORT), timeout=15)
# 1. Saludo: versión 5, dos métodos ofrecidos (0x00 sin autenticación, 0x02 usuario/contraseña)
sock.sendall(b"\x05\x02\x00\x02")
ver, method = recv_exact(sock, 2)
print("server picked method", hex(method))
if method == 0xFF:
raise SystemExit("no acceptable authentication method: send credentials or whitelist your IP")
# 2. Subnegociación de usuario y contraseña (RFC 1929)
if method == 0x02:
sock.sendall(b"\x01" + bytes([len(USER)]) + USER + bytes([len(PASSWORD)]) + PASSWORD)
_, status = recv_exact(sock, 2)
print("auth status", status) # 0 = éxito
if status != 0:
raise SystemExit("wrong username or password")
# 3. Petición CONNECT con nombre de dominio (ATYP 0x03): el proxy resuelve el DNS
name = TARGET_HOST.encode()
sock.sendall(b"\x05\x01\x00\x03" + bytes([len(name)]) + name + struct.pack(">H", TARGET_PORT))
ver, rep, _, atyp = recv_exact(sock, 4)
print("reply code", rep) # 0 = éxito, 4 = host inaccesible, 5 = conexión rechazada
if rep != 0:
raise SystemExit(f"SOCKS5 request failed with REP={rep}")
addr_len = {1: 4, 4: 16}.get(atyp) or recv_exact(sock, 1)[0]
recv_exact(sock, addr_len + 2) # dirección y puerto asignados, aquí no hacen falta
# 4. A partir de aquí el socket es un túnel simple: TLS va de extremo a extremo con el destino
tls = ssl.create_default_context().wrap_socket(sock, server_hostname=TARGET_HOST)
tls.sendall(b"GET /ip HTTP/1.1\r\nHost: httpbin.org\r\nConnection: close\r\n\r\n")
response = b""
while chunk := tls.recv(4096):
response += chunk
print(response.decode(errors="replace").split("\r\n\r\n", 1)[1])¿Cómo transporta SOCKS5 el tráfico UDP?
El proxy no reenvía UDP sin más por el puerto al que te conectas:
- El cliente abre la conexión TCP habitual, se autentica y envía una petición UDP ASSOCIATE.
- El proxy responde con la dirección y el puerto de su relé UDP.
- El cliente envía cada datagrama al relé con una pequeña cabecera que lleva la dirección y el puerto de destino; el relé lo reenvía y envuelve las respuestas de la misma forma.
- La asociación dura mientras siga abierta la conexión TCP del paso 1.
Los dos lados tienen que implementarlo: Chrome, por ejemplo, nunca envía UDP por SOCKS5, como indica la documentación de proxies de Chromium. El servicio SOCKS5 de Proxynet admite UDP. Los dos protocolos de transporte se comparan en TCP y UDP: ¿en qué se diferencian y dónde se usan?.
¿En qué se diferencian SOCKS4 y SOCKS5?
SOCKS4a aparece en la tabla porque cerró el hueco del DNS antes de que llegara SOCKS5.
| Característica | SOCKS4 | SOCKS4a | SOCKS5 |
|---|---|---|---|
| Tráfico | TCP | TCP | TCP y UDP |
| Autenticación | Solo ID de usuario, sin contraseña | Igual que SOCKS4 | Ninguna, GSSAPI, usuario y contraseña |
| Dirección de destino | IPv4 | IPv4 o nombre de dominio | IPv4, IPv6 o nombre de dominio |
| Resolución DNS | Cliente | Proxy | Cliente o proxy, decide el cliente |
| Esquema en cURL | socks4:// | socks4a:// | socks5://, socks5h:// |
| Uso habitual hoy | Herramientas antiguas | Herramientas antiguas | Juegos, apps, mensajería, scraping |
SOCKS5 deja fuera a los usuarios no autorizados con una contraseña, mientras que SOCKS4 solo puede filtrar por IP. SOCKS5 también llega a destinos IPv6 (consulta Proxies IPv4 e IPv6: ¿cuál conviene elegir?) y transporta UDP para llamadas, streaming y juegos. En la práctica, casi no te vas a encontrar SOCKS4.
¿SOCKS5 o proxy HTTP: cuál necesitas?
Un proxy HTTP(S) entiende las peticiones web; SOCKS5 transporta cualquier conexión TCP o UDP sin saber nada de HTTP. Para tráfico web sirven los dos, y HTTP(S) tiene más soporte en las herramientas; si solo haces scraping sobre HTTP, los Proxies HTTPS son el camino más directo. Para juegos, aplicaciones de escritorio, protocolos que no son web y UDP, SOCKS5 es el que funciona. La comparación completa está en Diferencia entre SOCKS y HTTP: ¿cuál elegir?.
socks5 o socks5h: ¿dónde se resuelve el DNS?
Una petición SOCKS5 puede indicar el destino por IP o por nombre de dominio, y eso decide quién busca el nombre:
- cURL:
socks5://resuelve en local;socks5h://o--socks5-hostnamedeja que resuelva el proxy (Everything curl). - Python Requests y HTTPX: los mismos esquemas; la documentación de Requests indica que
socks5hresuelve en el proxy. - Firefox: la casilla «DNS proxy usando SOCKS v5», activada por defecto desde Firefox 128.
- Chrome: siempre deja la resolución al proxy SOCKS5.
En el registro de nuestro servidor de prueba, cURL con socks5h:// llegó como domain httpbin.org:443; con socks5:// llegó como una IP sin más, es decir, la consulta ya había pasado por el resolvedor local. No es solo un detalle de comodidad: si el nombre lo resuelve tu propio equipo, la consulta DNS le muestra a tu red cada dominio que visitas, aunque después el tráfico pase por el proxy. Por eso conviene la resolución remota. Las pruebas de fugas están en Fugas de WebRTC y DNS: qué son y cómo evitarlas.
¿Es seguro un proxy SOCKS5? ¿Cifra el tráfico?
No. SOCKS5 cambia el camino de tu tráfico, no su contenido. HTTPS ya cifra las páginas web, de modo que el proxy solo conoce el destino y el puerto; HTTP sin cifrar, FTP o el correo sin TLS se pueden leer.
- La contraseña del proxy viaja en texto plano. Lo dice el propio RFC 1929. Usa una contraseña única, o una lista de IP autorizadas en redes compartidas.
- El operador ve tus conexiones. Detrás de un proxy de pago hay una empresa conocida; detrás de las listas gratuitas de SOCKS5, no. Consulta ¿Son seguros los proxies gratis y los sitios web proxy?.
Si el tramo hasta el proxy tiene que ir cifrado, ssh -D 1080 user@server te da un servidor SOCKS local cuyo tráfico viaja dentro de SSH.
¿Cómo se usa un proxy SOCKS5?
| Herramienta | Soporte de SOCKS5 | Dónde se configura |
|---|---|---|
| cURL | Sí, con contraseña | -x socks5h://user:pass@host:port |
| Python Requests / HTTPX | Sí, con un paquete adicional | pip install "requests[socks]" o "httpx[socks]" |
| Firefox | Sí, sin campo de contraseña | Ajustes, busca «proxy», Configurar proxy (versiones anteriores: Configuración de red > Configuración…), SOCKS v5 |
| Chrome | Solo TCP, sin contraseña | --proxy-server="socks5://host:port" con lista de IP autorizadas |
| macOS | Sí | Ajustes del Sistema > Red > Detalles > Proxies > Proxy SOCKS |
| iPhone, Wi-Fi de Android | No, solo HTTP | El puerto HTTP, o una app con ajuste de proxy propio |
| Telegram, Proxifier | Sí, con contraseña | El ajuste de proxy de la propia app |
Guías paso a paso: Firefox, Windows y Chrome, Telegram y Proxifier.
Prueba el proxy con cURL
# El proxy resuelve el DNS (recomendado)
curl -x "socks5h://user:pass@pr.proxynet.io:1080" https://httpbin.org/ip
# La misma petición con opciones separadas
curl --socks5-hostname pr.proxynet.io:1080 --proxy-user user:pass https://httpbin.org/ipLa respuesta muestra la IP de salida del proxy. Tienes más opciones en cURL con proxy: cómo configurar proxies HTTP y SOCKS5; una comprobación solo con el navegador está en ¿Funciona tu proxy? Cómo probar un proxy.
Úsalo en Python con reintentos
Este script reintenta cuando la red falla de forma pasajera, pero se detiene enseguida ante los errores de configuración, que reintentar no arregla.
# pip install "requests[socks]"
import time
import requests
PROXY = "socks5h://user:pass@pr.proxynet.io:1080" # socks5h = el proxy resuelve el DNS
PROXIES = {"http": PROXY, "https": PROXY}
# Errores de configuración: reintentar no los arregla
FATAL = ("SOCKS5 authentication failed", "sent invalid data", "Missing dependencies for SOCKS")
def fetch(url, attempts=3):
for attempt in range(1, attempts + 1):
try:
r = requests.get(url, proxies=PROXIES, timeout=(10, 30))
r.raise_for_status()
return r
except (requests.ConnectionError, requests.Timeout, requests.exceptions.InvalidSchema) as exc:
message = str(exc)
if any(text in message for text in FATAL) or attempt == attempts:
raise
print(f"attempt {attempt} failed, retrying: {exc.__class__.__name__}")
time.sleep(2 ** attempt)
start = time.perf_counter()
r = fetch("https://httpbin.org/ip")
print("exit IP:", r.json()["origin"], f"({time.perf_counter() - start:.2f}s)")En nuestra prueba imprimió la IP de salida, falló de inmediato con una contraseña incorrecta y reintentó dos veces con un puerto cerrado. Los puertos de estos ejemplos son orientativos; tu panel muestra los tuyos.
¿Para qué se usan los proxies SOCKS5?
- Juegos online. Los clientes de juego usan protocolos propios y a menudo UDP; una herramienta de enrutamiento los envía por SOCKS5. Nuestra página de proxy para Growtopia es un ejemplo.
- Apps de mensajería. Telegram acepta SOCKS5 con contraseña en sus propios ajustes.
- Programas sin ajuste de proxy. Proxifier envía cualquier programa de escritorio por SOCKS5, aplicación por aplicación.
- Recogida de datos. Los scrapers que deben resolver el DNS en la salida usan SOCKS5 con
socks5h; consulta nuestras soluciones de extracción de datos.
Residencial, móvil, ISP o centro de datos: qué revisar antes de comprar proxies SOCKS5
SOCKS5 es un protocolo, no un tipo de IP. Comprar un proxy SOCKS5 significa elegir el tipo de IP que pide la tarea y un servicio que funcione con tus herramientas.
| Tipo de IP | De dónde sale la IP | Adecuado para |
|---|---|---|
| Centro de datos | Servidores en centros de datos, fija | Juegos, transferencias masivas, destinos que no filtran por tipo de IP |
| ISP estático | Direcciones de proveedores de internet domésticos, fijas durante meses | Sesiones largas, gestión de cuentas |
| Residencial | Conexiones domésticas, rotativa o de sesión fija | Scraping, resultados locales, comprobación de precios |
| Móvil | IP de operadores 4G/5G | Apps móviles, plataformas que esperan IP de operador |
Un proxy SOCKS5 privado es una IP que solo usas tú; las IP residenciales y móviles, en cambio, salen de un pool compartido. Consulta Proxies residenciales y de centro de datos: diferencias. Antes de comprar, revisa:
- UDP. No todos los servicios SOCKS5 lo reenvían. El de Proxynet sí.
- Autenticación. Si tu herramienta no puede enviar una contraseña SOCKS5, como pasa con Chrome, necesitas una lista de IP autorizadas; Proxynet admite hasta 10 IP. Consulta Autenticación de proxy: user:pass o lista blanca de IP.
- DNS remoto. El servicio debe aceptar nombres de dominio para que
socks5hfuncione. - Puertos y credenciales. En Proxynet, residencial y móvil usan un mismo gateway con puertos HTTP y SOCKS5 separados; el Generador de endpoints del panel construye el nombre de usuario con el país, la ciudad y la sesión.
- Sesiones. Las sesiones fijas (de 1 a 60 minutos en Proxynet) mantienen la misma IP durante todo un proceso de inicio de sesión.
- Primero, una prueba. Ejecuta el comando de cURL y revisa la ubicación y las fugas de DNS.
Los pools residencial y móvil de Proxynet suman 160 millones de IP, 140 millones de ellas residenciales, y el pool móvil incluye líneas de Turkcell, Türk Telekom y Vodafone en Türkiye. Páginas de producto: Proxies SOCKS5, Proxies residenciales, Proxies móviles y Proxies ISP. Más preguntas en Qué tener en cuenta al comprar un proxy: 10 preguntas. Para ver lado a lado quién vende SOCKS5 y en qué condiciones, consulta Los mejores proveedores de proxy SOCKS5 - 2026.
Errores comunes de SOCKS5 y cómo solucionarlos
Reprodujimos los mensajes de cURL 8.21, Python y Chrome contra nuestro servidor de prueba; el texto del paquete que falta está citado del código fuente de Requests.
| Mensaje de error | Causa probable | Solución |
|---|---|---|
curl: (97) User was rejected by the SOCKS5 server (1 1). | Usuario o contraseña incorrectos | Vuelve a copiar las credenciales; codifica en URL los caracteres especiales |
curl: (97) No authentication method was acceptable. | No se enviaron credenciales y tu IP no está autorizada | Añade user:pass o autoriza tu IP |
curl: (97) Received invalid version in initial SOCKS5 response. | Petición SOCKS5 enviada a un puerto de proxy HTTP | Usa el puerto SOCKS5 |
curl: (56) Proxy CONNECT aborted | Esquema http:// apuntando a un puerto SOCKS5 | Cambia a socks5h:// |
Missing dependencies for SOCKS support. | PySocks no está instalado | pip install "requests[socks]" |
ERR_SOCKS_CONNECTION_FAILED (Chrome) | El proxy pide una contraseña que Chrome no puede enviar | Autoriza tu IP |
ERR_PROXY_CONNECTION_FAILED (Chrome) | Host o puerto del proxy inaccesible | Revisa el host, el puerto y el cortafuegos |
| El juego inicia sesión y se desconecta en plena partida | No se reenvía el tráfico UDP | Usa un servicio SOCKS5 y una herramienta de enrutamiento con soporte UDP |
Python envuelve estos errores en una línea Max retries exceeded; consulta Max Retries Exceeded With URL: qué es y cómo solucionarlo.
Guía de decisión
| Tu necesidad | Recomendación |
|---|---|
| Cliente de juego, llamadas de voz u otro tráfico UDP | SOCKS5 con UDP, más una herramienta de enrutamiento si hace falta |
| Telegram u otra app con un campo SOCKS5 | SOCKS5 con usuario y contraseña |
| Chrome o automatización con Chromium | SOCKS5 con lista de IP autorizadas, o HTTP(S) con contraseña |
| Scraping de sitios web con Python o Node.js | HTTP(S), o SOCKS5 con socks5h |
| Proxy para todo el sistema en iPhone o Android | El puerto HTTP(S) del mismo plan |
Preguntas frecuentes
¿Qué puerto usa SOCKS5?
El 1080, por convención. Los proveedores suelen usar otros puertos: usa el que muestra tu panel. Los puertos de proxy se explican en ¿Qué es el puerto 8080? Puertos de proxy y qué significan.
¿SOCKS5 es lo mismo que una VPN?
No. Una VPN cifra todo el tráfico del dispositivo hasta su servidor. SOCKS5 cubre solo las aplicaciones que configuras y no cifra. Consulta Proxy o VPN: diferencias y cuándo usar cada uno.
¿Un proxy SOCKS5 es lo mismo que un proxy residencial?
No. SOCKS5 es el protocolo con el que tu aplicación habla con el proxy; «residencial» describe de dónde sale la IP de salida. A los proxies residenciales, de centro de datos, ISP y móviles se puede llegar tanto por HTTP como por SOCKS5.
¿SOCKS5 funciona con sitios HTTPS?
Sí. La negociación TLS y la comprobación del certificado ocurren entre tu cliente y el sitio, así que el proxy no puede leer la página.
¿Puedo usar SOCKS5 en iPhone o Android?
No desde los ajustes de proxy de la red Wi-Fi, que en los dos sistemas solo aceptan un proxy HTTP. Las apps con su propio ajuste de proxy, como Telegram, sí aceptan SOCKS5. Para usarlo en todo el sistema, introduce el puerto HTTP(S) del mismo plan, como se explica en Cómo configurar un proxy en un teléfono Android.
¿Son seguras las listas gratuitas de proxies SOCKS5?
No para nada que requiera iniciar sesión. No puedes saber quién gestiona un servidor gratuito, y ese servidor puede leer el tráfico sin cifrar. Úsalas solo para pruebas desechables.
En resumen
SOCKS5 reenvía conexiones TCP y UDP sin leerlas y sustituye a SOCKS4 en todos los aspectos prácticos, pero no cifra. Usa socks5h, recurre a una lista de IP autorizadas cuando una herramienta no pueda enviar una contraseña SOCKS5 y comprueba el soporte de UDP si vas a usarlo para juegos o llamadas. Para tener acceso SOCKS5 y HTTP(S) en el mismo plan, consulta nuestros servicios de proxy.




