IO::Socket::Socks может печатать обмен SOCKS, когда соединение завершается неудачей. Укажите прокси, назначение и параметр отладки явно:

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

Модуль описывает SocksDebug как отображение трафика SOCKS в ориентированном на протокол виде. Используйте его, чтобы видеть, насколько продвинулось согласование, и проверять возвращённый код ошибки SOCKS.

ProxyAddr и ProxyPort определяют посредника. Неаутентифицированный адрес из списка прокси SOCKS5 может заполнить эти поля для разрешённого публичного HTTP-теста. ConnectAddr и ConnectPort определяют службу, к которой нужно подключиться. Ошибка при достижении слушателя и отрицательный ответ SOCKS на соединение — разные наблюдения.

Для прокси, требующего аутентификации SOCKS5 по имени пользователя и паролю, документированные поля конструктора включают AuthType => 'userpass', Username и Password.

Успешный блокирующий конструктор устанавливает соединение SOCKS, а запрос приложения через возвращённый сокет даёт более поздний результат приложения. Для назначения HTTPS добавьте проверенный TLS назначения после SOCKS перед отправкой запроса этого протокола. Если задействованы учётные данные, считайте вывод отладки конфиденциальным.

Похожие статьи