用 SocksDebug 调试 IO::Socket::Socks 连接
为正在排查的代理和目标启用 IO::Socket::Socks 握手诊断。
连接失败时,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 目标,在发送该协议的请求之前,在 SOCKS 之后添加经过验证的目标 TLS。涉及凭据时,请将调试输出视为敏感信息。