Explicado
SOCKS5 es un protocolo proxy de capa de transporte definido en el RFC 1928. A diferencia de un proxy HTTP, que entiende y analiza las solicitudes y respuestas HTTP, un proxy SOCKS5 opera a un nivel inferior: reenvía paquetes TCP o UDP sin procesar entre usted y el destino sin inspeccionar ni modificar la carga útil. Esto significa que un proxy SOCKS5 puede transportar cualquier protocolo que funcione sobre TCP o UDP, no solo tráfico web.
SOCKS5 es la versión moderna del protocolo proxy SOCKS, añadiendo soporte para IPv6, reenvío UDP y métodos de autenticación (sin autenticación, usuario/contraseña, GSS-API). La mayoría de los proveedores de proxies residenciales e ISP exponen sus endpoints tanto sobre HTTP como sobre SOCKS5 para que los clientes puedan elegir el protocolo que mejor se adapte a su entorno.
Para el web scraping sobre HTTPS, un proxy HTTP CONNECT y un proxy SOCKS5 se comportan de forma casi idéntica: ambos terminan tunelizando tráfico TCP cifrado. Las diferencias se vuelven relevantes cuando su cliente utiliza protocolos no HTTP (FTP, SMTP, IRC, BitTorrent, juegos) o cuando necesita específicamente soporte UDP.
Cómo funciona
Cuando su cliente se conecta a un proxy SOCKS5, envía un pequeño protocolo de enlace especificando el método de autenticación, luego un comando CONNECT con el host y el puerto de destino. El proxy abre una conexión TCP a ese destino y a partir de ese momento simplemente retransmite bytes entre el cliente y el destino. No hay conciencia de la capa HTTP: el proxy no lee la URL, las cabeceras ni el cuerpo de la respuesta.
Esta transparencia en la capa de transporte es la razón por la que SOCKS5 funciona con cualquier protocolo basado en TCP. El soporte UDP utiliza un flujo UDP ASSOCIATE separado donde el cliente envía datagramas UDP al proxy y el proxy los reenvía al destino. La autenticación, si se utiliza, ocurre una vez durante el protocolo de enlace inicial y se aplica a toda la sesión.