IO::Socket::Socks kann den SOCKS-Austausch ausgeben, wenn eine Verbindung fehlschlägt. Geben Sie Proxy, Ziel und Debug-Option ausdrücklich an:

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

Das Modul dokumentiert SocksDebug so, dass es SOCKS-Datenverkehr protokollorientiert anzeigt. Nutzen Sie es, um zu sehen, wie weit die Aushandlung kommt, und um einen zurückgegebenen SOCKS-Fehlercode zu prüfen.

ProxyAddr und ProxyPort benennen den Vermittler. Eine nicht authentifizierte Adresse aus der SOCKS5-Proxy-Liste kann diese Felder für einen zulässigen öffentlichen HTTP-Test füllen. ConnectAddr und ConnectPort benennen den Dienst, mit dem verbunden werden soll. Ein Fehler beim Erreichen des Listeners und eine negative SOCKS-Verbindungsantwort sind unterschiedliche Beobachtungen.

Bei einem Proxy, der SOCKS5-Benutzername/Kennwort-Authentifizierung verlangt, umfassen die dokumentierten Konstruktorfelder AuthType => 'userpass', Username und Password.

Ein erfolgreicher blockierender Konstruktor baut die SOCKS-Verbindung auf, während eine Anwendungsanfrage über den zurückgegebenen Socket das spätere Anwendungsergebnis liefert. Für ein HTTPS-Ziel fügen Sie nach SOCKS ein verifiziertes TLS des Ziels hinzu, bevor Sie die Anfrage dieses Protokolls senden. Behandeln Sie Debug-Ausgaben als vertraulich, wenn Anmeldedaten beteiligt sind.

Ähnliche Artikel