Cambiar idioma
Español English Русский Deutsch Français Italiano Українська Tiếng Việt Türkçe Bahasa Indonesia हिन्दी 日本語 中文
Menú
Precios
Proxies
TIPOS DE PROXY
POR UBICACIÓN77 ubicaciones
Soluciones
Recursos

Proxies SOCKS5

SOCKS5 es un protocolo de proxy de nivel de transporte: abre una conexión en tu nombre y mueve bytes, sin leer ni reescribir lo que hay dentro. Cada proxy ISP estático que vendemos se puede cambiar entre HTTP y SOCKS5 en el pedido que ya tienes.

Cambiar de protocolo no es cambiar de producto: cambias el proxy que ya tienes, desde el panel o la API, y el pedido se actualiza con el puerto y las credenciales nuevos con los que conectarte.

En resumen: SOCKS5 es un protocolo de proxy, no un tipo de dirección: retransmite una conexión TCP sin leer ni reescribir lo que hay dentro. Cada proxy residencial estático (ISP) que vende ProxyJam funciona con HTTP, que transporta HTTPS, o con SOCKS5, y cambias entre ellos en el pedido que ya tienes; después del cambio, conéctate con el puerto y las credenciales que muestra el pedido.

SOCKS5 transporta cualquier cosa para la que tu cliente pueda abrir una conexión TCP, incluido tráfico que un proxy HTTP no puede reenviar, y pasa los bytes sin tocarlos. Eso lo convierte en la opción natural para un cliente de base de datos, una sesión SSH o cualquier herramienta que no hable HTTP. Lo que no hace es cambiar lo que es la dirección. El protocolo de proxy se habla entre tu cliente y el proxy; el sitio del otro extremo ve una conexión desde la dirección del proxy, más las cabeceras que un proxy HTTP haya decidido añadir. Así que la pregunta que vale la pena hacerse no es qué protocolo comprar. Es a qué red pertenece la dirección, y ahí la respuesta es un proveedor de internet con nombre, 19 de ellos en Estados Unidos.

Qué dicen las especificaciones

La versión 5 de SOCKS se publicó en 1996 como RFC 1928, un protocolo para atravesar cortafuegos que amplió la versión 4 de SOCKS con UDP, un marco para métodos de autenticación y destinos indicados como nombres de dominio o direcciones IPv6. Un cliente ofrece los métodos de autenticación que admite y el servidor elige uno; después el cliente pide una conexión saliente (CONNECT), un puerto de escucha (BIND) o un relé UDP (UDP ASSOCIATE). El inicio de sesión con usuario y contraseña tiene su propia especificación breve, el RFC 1929, que envía la contraseña en texto claro; por eso conviene mantener cifrado el tráfico dentro del túnel cuando importa.

La opción del nombre de dominio es lo que distingue los esquemas socks5 y socks5h. El manual de curl describe --socks5 como usar el proxy «but resolve the hostname locally» (pero resolver el nombre de host localmente), y --socks5-hostname como la variante que deja que «the proxy resolve the hostname» (el proxy resuelva el nombre de host). En una URL de proxy, socks5:// da el primer comportamiento y socks5h:// el segundo, como recoge la tabla de Everything curl. Un proxy HTTP que transporta HTTPS normalmente recibe el nombre: una petición CONNECT nombra el host y el puerto de destino, y el proxy abre el túnel hasta él (RFC 9110, sección 9.3.6). El relé UDP forma parte de la especificación de SOCKS5, pero las implementaciones difieren en él; las preguntas frecuentes de abajo explican qué significa eso en nuestros proxies.

Usar SOCKS5 sobre SSH

Si ya tienes un acceso SSH a un servidor, tienes un proxy SOCKS5 sin comprar ninguno. ssh -N -D 1080 user@server configura lo que el manual de ssh de OpenBSD llama reenvío de puertos local «dynamic» (dinámico) a nivel de aplicación: ssh escucha en el puerto 1080 de tu máquina y «will act as a SOCKS server» (actuará como servidor SOCKS), transportando cada conexión por el canal SSH cifrado y abriéndola desde la máquina remota. -N lo limita al reenvío, sin shell remota. Apunta un cliente a socks5h://127.0.0.1:1080 y su tráfico sale desde el servidor.

La diferencia con un proxy SOCKS5 comprado está en por dónde sale la conexión. A través de un túnel SSH, el sitio del otro extremo ve la dirección del servidor SSH y la red a la que pertenece ese servidor, que en un servidor alquilado suele ser la de una empresa de hosting. SSH cifra el tramo entre tú y el servidor; del servidor al sitio, el tráfico es lo que ya era. Un proxy de ProxyJam cambiado a SOCKS5 sale desde una dirección en la red de un proveedor de internet con nombre, elegida por país y operador al pagar, y te conectas a él directamente con el puerto y las credenciales del pedido, sin SSH de por medio y sin ningún servidor propio que mantener.

Así que los dos responden a preguntas distintas. Un túnel sobre SSH saca el tráfico por una máquina que ya controlas. Un proxy SOCKS5 en una dirección ISP es para el trabajo en el que importa la propia dirección de salida, es decir, qué red muestra una consulta sobre ella.

Qué pasa entre tu cliente y el nuestro

Tres intercambios breves, y en ninguno de ellos el proxy necesita entender tu tráfico.

Paso 01

Tu cliente saluda al proxy y acuerdan la autenticación. Ofrece los métodos que admite; el proxy nombra el que quiere. En nuestras direcciones es un usuario y una contraseña, o nada en absoluto si en su lugar has puesto tu propia IP en la lista blanca.

Paso 02

Tu cliente pide un destino. Un host y un puerto, enviados como dirección o como nombre. Enviar el nombre es el caso interesante: lo resuelve el proxy, así que la consulta sale desde la red del proxy y no desde la tuya.

Paso 03

A partir de ahí el proxy solo mueve bytes. No analiza el contenido, no añade cabeceras y no sabe si transporta una página web, una sesión de base de datos o una transferencia de correo. Esa indiferencia es precisamente la razón para elegir SOCKS5 en lugar de un proxy HTTP.

Empezar

SOCKS5 frente a proxy HTTP: qué transporta cada uno y qué puede ver el proxy

Un proxy de ProxyJam funciona con HTTP, que transporta HTTPS mediante CONNECT, o con SOCKS5, y el cambio se hace en el pedido. La elección depende de lo que tu cliente necesita enviar.
Proxy HTTPHTTPS mediante CONNECTSOCKS5
Qué puede transportarSolo peticiones HTTPUn túnel TCP hasta el host y el puerto indicadosCualquier flujo TCP
¿Lee el proxy el contenido?Sí: analiza la peticiónNo, una vez abierto el túnelNo, en ningún momento
¿Puede cambiar tus cabeceras?Sí: las reenvía y puede añadir las suyas, como ViaNo, una vez abierto el túnelNo: no tiene noción de cabecera
Dónde se resuelve el nombre de hostEn el proxyEn el proxy: CONNECT nombra el hostLo eliges tú, en cualquiera de los dos extremos
Compatibilidad habitual de los clientesUniversal en las herramientas HTTPUniversal en las herramientas HTTPHabitual en las herramientas de línea de comandos; algunas bibliotecas necesitan un paquete adicional
Más adecuado paraPeticiones web simplesNavegación y scraping HTTPS corrientesProtocolos no web y tráfico mixto

Para decidir a qué protocolo apuntar un cliente

Desarrolladores

A qué protocolo apuntar un cliente, y qué esquema, socks5 o socks5h, configurar en él una vez cambiado el proxy.

Equipos de operaciones

A qué protocolo apuntar un cliente, y cómo cambiar el proxy que ya tienes desde el panel o la API.

Pasar un proxy de ProxyJam a SOCKS5

  1. Cambia el propio proxy

    Desde el panel o con una llamada a la API sobre el pedido; cambiar solo el cliente no basta. El proxy puede quedar brevemente no disponible mientras cambia.

  2. Copia el puerto, el usuario y la contraseña que muestra el pedido después del cambio

    No reutilices los valores con los que te conectabas por HTTP.

  3. Configura el esquema en tu cliente

    socks5h://USERNAME:PASSWORD@HOST:PORT para que el proxy resuelva los nombres de host, o socks5:// para resolverlos en tu lado.

  4. Prueba desde un terminal antes de tocar código

    curl -x socks5h://USERNAME:PASSWORD@HOST:PORT https://example.com/.

  5. Instala el extra SOCKS en Python

    En Python, requests necesita su extra SOCKS, pip install requests[socks], antes de que funcione una URL de proxy socks5h://.

Qué te da SOCKS5 en nuestras direcciones

Protocolo
SOCKS5 o HTTP (que transporta HTTPS), con el cambio hecho en el pedido
Autenticación
Usuario y contraseña, o una lista blanca de IP
Dirección que ve el destino
Una dirección ISP estática en la red de un operador con nombre
Elección de operador
19 operadores con nombre en Estados Unidos; una lista más corta en otros países
Cobertura
77 países en el catálogo, cada uno con el operador nombrado
Rotación
Ninguna: la dirección no cambia durante el periodo
Sesiones simultáneas
100 por proxy, 10 a partir de 50 GB al mes
Contabilización del tráfico
Por IP y por periodo; la transferencia no se mide con ningún protocolo
import requests

# HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
proxy = "http://USERNAME:PASSWORD@HOST:PORT"

proxies = {
    "http": proxy,
    "https": proxy,
}

response = requests.get(
    "https://example.com/",
    proxies=proxies,
)

print(response.status_code)
# HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
curl -x http://USERNAME:PASSWORD@HOST:PORT \
     https://example.com/
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";

// HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
const proxy = "http://USERNAME:PASSWORD@HOST:PORT";
const agent = new HttpsProxyAgent(proxy);

const response = await axios.get(
  "https://example.com/",
  {
    httpAgent: agent,
    httpsAgent: agent,
  },
);

console.log(response.status);
package main

import (
    "fmt"
    "net/http"
    "net/url"
)

func main() {
    // HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
    proxy, _ := url.Parse(
        "http://USERNAME:PASSWORD@HOST:PORT")

    client := &http.Client{Transport: &http.Transport{
        Proxy: http.ProxyURL(proxy),
    }}

    res, _ := client.Get("https://example.com/")
    fmt.Println(res.Status)
}

Conéctate primero, y después cambia el esquema

Los ejemplos de abajo se conectan por HTTP, el protocolo con el que empieza un pedido. Para usar SOCKS5, cambia primero el propio proxy, desde el panel o con una llamada a la API; el pedido muestra entonces el puerto y las credenciales que debes usar a partir de ese momento. En el cliente, cambia el esquema a socks5, o a socks5h si quieres que el proxy resuelva el nombre de host, con ese puerto y esas credenciales. Para eso Python necesita requests[socks], y Node.js un agente SOCKS en lugar del agente HTTPS.

Documentación de configuración completa

Preguntas sobre SOCKS5

Las respuestas de abajo indican las condiciones con las que vendemos, y cada una que lo hace enlaza al documento que nos obliga a cumplirlas.

¿Qué es un proxy SOCKS5?

SOCKS5 es un protocolo de proxy definido en el RFC 1928 que funciona en la capa de transporte. Tu cliente pide al proxy que abra una conexión con un host y un puerto, el proxy la abre y, a partir de ahí, reenvía bytes en ambas direcciones sin interpretarlos. Como nunca analiza lo que transporta, no se limita al tráfico web: cualquier cosa que funcione sobre TCP puede pasar por él.

¿En qué se diferencia de un proxy HTTP?

Un proxy HTTP entiende HTTP. Lee la línea de petición y las cabeceras, y puede añadirlas, quitarlas o reescribirlas, y por eso algunos proxies se anuncian discretamente en una cabecera que tú no pusiste. SOCKS5 no tiene ninguna noción de cabecera: ve un destino y un flujo de bytes. Si tu tráfico no es HTTP, o prefieres que nada en medio pueda editarlo, SOCKS5 es el que debes elegir.

¿Cifra SOCKS5 mi tráfico?

No, y un proxy HTTP tampoco. SOCKS5 te autentica ante el proxy y después reenvía bytes. La especificación permite que un método de autenticación añada su propia protección, pero la autenticación con usuario y contraseña (RFC 1929) envía la contraseña en texto claro y no protege nada después. Si el tráfico de dentro es HTTPS o SSH, ya está cifrado de extremo a extremo, y el proxy no puede leerlo. Si el tráfico de dentro es texto plano, sigue siendo texto plano, así que no trates SOCKS5 como una capa de cifrado.

¿Qué hace socks5h que no haga socks5?

Traslada la consulta DNS. Con socks5, tu cliente resuelve el nombre de host localmente y pide al proxy que se conecte a la dirección resultante. Con socks5h, tu cliente envía el nombre y el proxy lo resuelve. Eso importa por dos motivos: tu propio resolvedor nunca ve qué hosts visitas, y obtienes la respuesta que obtiene la red del proxy, que para un nombre de host que varía según la geografía a menudo no es la que obtendrías en casa.

¿Admite UDP?

UDP ASSOCIATE está en el RFC 1928; que un cliente o un servidor concreto lo implemente varía, así que compruébalo en los dos extremos en lugar de darlo por hecho. No hemos publicado compatibilidad con UDP para nuestros proxies, así que cuenta con TCP, y pregunta a soporte antes de construir algo que dependa de UDP.

¿Necesito otro proxy para usar SOCKS5?

No. Cambias el proxy que ya tienes entre HTTP, que también transporta HTTPS, y SOCKS5, desde el panel o con una llamada a la API sobre el mismo pedido. No es solo un ajuste del cliente: el cambio se hace en el proxy, el pedido se actualiza con el nuevo protocolo, puerto y credenciales, y el proxy puede quedar brevemente no disponible mientras ocurre. El proxy sigue siendo tuyo durante todo el periodo que pagaste, se sustituye gratis si deja de responder o está bloqueado en un objetivo que indicaste, hasta el 20 % del pedido por mes natural, y el primer pedido incluye un reembolso de 24 horas para un máximo de 10 IP que las pruebas no anulan. Términos de Servicio

¿HTTP o SOCKS5?

Quédate en HTTP cuando todo lo que envías es tráfico web y tus herramientas ya hablan con proxies HTTP. Cambia a SOCKS5 cuando un cliente tenga que transportar algo que no es HTTP, o cuando quieras que los nombres de host se resuelvan en el proxy sin que nada en medio pueda editar tus cabeceras. En los dos casos es el mismo producto, que se pide en proxies ISP y que también se describe como proxies residenciales estáticos, sin pedido aparte y sin cargo por cambiar. Las preguntas de configuración se responden en las preguntas frecuentes. Las cifras de operadores y de países de esta página se leen de la instantánea del catálogo con la que se genera el sitio, como describe nuestra política editorial.

Fuentes

  • RFC 1928, SOCKS Protocol Version 5: la especificación de 1996, con la negociación de la autenticación, los comandos CONNECT, BIND y UDP ASSOCIATE, y destinos indicados como nombres de dominio o direcciones IPv6
  • RFC 1929, Username/Password Authentication for SOCKS V5: el método de inicio de sesión, que envía la contraseña en texto claro
  • RFC 9110, HTTP Semantics: sección 9.3.6, una petición CONNECT nombra el host y el puerto de destino, y el proxy abre el túnel hasta él
  • curl man page: --socks5 resuelve el nombre de host localmente, --socks5-hostname deja que lo resuelva el proxy
  • Everything curl, SOCKS proxy: socks5:// y socks5h:// en una URL de proxy, y qué extremo resuelve el nombre de host
  • OpenBSD manual, ssh(1): -D configura el reenvío dinámico de puertos local, con ssh actuando como servidor SOCKS4 y SOCKS5, y -N reenvía puertos sin ejecutar un comando remoto