Una conexión SOCKS puede fallar localmente antes de que el proxy tenga la oportunidad de resolver el destino. Compruebe si su código resolvió el objetivo mientras construía la dirección del socket.

Para un socket Java SOCKS, conserve el nombre de host de destino con una dirección de destino sin resolver:

Proxy proxy = new Proxy(Proxy.Type.SOCKS,
    new InetSocketAddress("203.0.113.10", 1080));
Socket socket = new Socket(proxy);
socket.connect(InetSocketAddress.createUnresolved(
    "destination.example", 443), 5000);

El punto de conexión y el nombre de host son marcadores de posición; use su servicio SOCKS5 o un candidato de la lista de proxies SOCKS5 para pruebas permitidas de destinos públicos. La distinción importante está entre resolver el proxy para poder alcanzarlo y conservar el nombre de destino para el intercambio SOCKS.

Una vez conectado, un cliente HTTPS todavía necesita una sesión TLS para el nombre de host de destino. Un envoltorio TLS no debe usar el nombre de host del proxy como identidad del par.

Compruebe también el código de nivel superior: una biblioteca puede realizar su propia búsqueda antes de llamar a su conector. Conservar un nombre de host en esta dirección de socket no puede deshacer una búsqueda realizada en otra parte de la aplicación.

Artículos relacionados