O IO::Socket::Socks pode imprimir a troca SOCKS quando uma conexão falha. Informe o proxy, o destino e a opção de depuração explicitamente:

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();

O módulo documenta o SocksDebug como a exibição do tráfego SOCKS de forma orientada ao protocolo. Use-o para ver até onde a negociação avança e para inspecionar um código de falha SOCKS retornado.

ProxyAddr e ProxyPort identificam o intermediário. Um endereço sem autenticação da lista de proxies SOCKS5 pode preencher esses campos para um teste HTTP público permitido. ConnectAddr e ConnectPort identificam o serviço ao qual ele deve se conectar. Um erro ao alcançar o listener e uma resposta negativa de conexão SOCKS são observações diferentes.

Para um proxy que exige autenticação de usuário e senha do SOCKS5, os campos documentados do construtor incluem AuthType => 'userpass', Username e Password.

Um construtor bloqueante bem-sucedido estabelece a conexão SOCKS, enquanto uma solicitação da aplicação pelo socket retornado fornece o resultado posterior da aplicação. Para um destino HTTPS, adicione TLS verificado do destino após o SOCKS antes de enviar a solicitação desse protocolo. Trate a saída de depuração como sensível quando houver credenciais envolvidas.

Artigos relacionados