IO::Socket::Socks puede imprimir el intercambio SOCKS cuando falla una conexión. Indica el proxy, el destino y la opción de depuración de forma explícita:

use IO::Socket::Socks;

my $socket = IO::Socket::Socks->new(
    ProxyAddr   => 'proxy.example',
    ProxyPort   => 1080,
    ConnectAddr => 'www.example.com',
    ConnectPort => 80,
    SocksVersion => 5,
    SocksDebug  => 1,
    Timeout     => 10,
) or die $SOCKS_ERROR;

$socket->close();

El módulo documenta SocksDebug como una forma de mostrar el tráfico SOCKS con orientación al protocolo. Úsalo para ver hasta dónde avanza la negociación e inspeccionar un código de fallo SOCKS devuelto.

ProxyAddr y ProxyPort identifican al intermediario. Una dirección sin autenticación de la lista de proxies SOCKS5 puede rellenar esos campos para una prueba HTTP pública permitida. ConnectAddr y ConnectPort identifican el servicio al que debe conectarse. Un error al alcanzar el listener y una respuesta negativa de conexión SOCKS son observaciones distintas.

Para un proxy que exige autenticación de usuario y contraseña de SOCKS5, los campos documentados del constructor incluyen AuthType => 'userpass', Username y Password.

Un constructor bloqueante exitoso establece la conexión SOCKS, mientras que una solicitud de la aplicación a través del socket devuelto proporciona el resultado posterior de la aplicación. Para un destino HTTPS, añade TLS verificado del destino después de SOCKS antes de enviar la solicitud de ese protocolo. Trata la salida de depuración como sensible cuando haya credenciales implicadas.

Artículos relacionados