El evento connect del socket de Node le indica que TCP llegó al proxy. No indica que el proxy haya abierto una conexión con el destino.

Un servidor SOCKS5 espera una negociación de método, cualquier autenticación seleccionada y una solicitud de destino antes del tráfico de la aplicación. Enviar una solicitud HTTP de inmediato puede hacer que el servidor cierre la conexión. Una escritura posterior puede entonces producir EPIPE.

EPIPE por sí solo no demuestra que falte el handshake. Informa de una escritura en una conexión cuyo par ya no acepta esa comunicación. Lea los eventos y las respuestas de protocolo anteriores para averiguar por qué el par cerró.

Utilice un conector que implemente el intercambio SOCKS completo. Para el cliente HTTPS principal de Node, un agente compatible con SOCKS puede realizar esa negociación antes del TLS del destino. Si implementa el intercambio usted mismo, acumule datos según las longitudes de campo del protocolo. No se garantiza que un evento data contenga una respuesta completa, y la dirección vinculada devuelta no tiene que coincidir con una cadena de bytes codificada de forma fija.

Registre el manejo de errores antes de que la operación pueda fallar, conserve la etapa de la conexión en el informe de error y envíe el protocolo de destino solo después de que la negociación tenga éxito. Capturar el error evita un evento no controlado; no repara un intercambio no válido.

Artículos relacionados