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를 추가하십시오. 자격 증명이 관련된 경우 디버그 출력을 민감한 정보로 취급하십시오.

관련 글