Не могу подключиться к хосту через socks-прокси в perl

#!/usr/bin/perl

use strict;
use LWP::UserAgent;

my $ua = new LWP::UserAgent(agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.5');
$ua->proxy('http' => 'socks://188.26.223.189:1080');
my $response = $ua->get('http://example.com');
print $response->code,' ', $response->message,"\n";
print $response->decoded_content . "\n";

Я пытаюсь подключиться к сайту через socks-прокси, но получаю ошибку: 500 Не могу подключиться к example.com:80 Что я делаю не так?


person Artem    schedule 04.01.2015    source источник
comment
У вас установлен Perl-модуль LWP::Protocol::socks?   -  person David W.    schedule 05.01.2015
comment
Да, я установил его.   -  person Artem    schedule 05.01.2015
comment
Взгляните на это. За исключением [ qw/http https/ ], он выглядит почти так же.   -  person David W.    schedule 05.01.2015
comment
Это тоже не работает.   -  person Artem    schedule 05.01.2015
comment
Данг. Я надеялся на чудо здесь. Посмотрите, можете ли вы подключиться к прокси-серверу ($ telnet 188.26.223.189 1080) через telnet. Интересно, нужно ли вам имя пользователя и пароль на прокси?   -  person David W.    schedule 05.01.2015


Ответы (1)


Это может означать одно из трех:

  1. ваш прокси 188.26.223.189:1080 не работает
  2. example.com не работает
  3. example.com не работает для 188.26.223.189

LWP::Protocol::socks использует IO::Socket::Socks в качестве библиотеки SOCKS. Таким образом, вы можете включить отладку, определив переменную окружения SOCKS_DEBUG:

SOCKS_DEBUG=1 perl test.pl

Это покажет вам рукопожатие SOCKS. Таким образом, вы можете увидеть, было ли это рукопожатие успешным или нет (https://www.ietf.org/rfc/rfc1928.txt).

Вы также можете попробовать подключиться напрямую через IO::Socket::Socks, чтобы увидеть, будет ли это успешным:

perl -MIO::Socket::Socks -E 'IO::Socket::Socks->new(ProxyAddr => "188.26.223.189", ProxyPort => 1080, ConnectAddr => "example.com", ConnectPort => 80, Timeout => 30, SocksDebug => 1) or die $SOCKS_ERROR; say "Connected!"'
person Oleg G    schedule 13.01.2015