Просмотр полной версии : проблеми с установкой модулей
привет
нашол пример для роботи через прокси:
system('cls');
use IO::Socket::Socks;
my $proxy_addr = "128.10.10.15";
my $proxy_port = 3128;
my $conn_addr = "http://www.mail.ru/";
my $conn_port = 80;
my $socks = new IO::Socket::Socks(ProxyAddr=>$proxy_addr,
ProxyPort=>$proxy_port,
ConnectAddr=>$conn_addr,
ConnectPort=>$conn_port,
) or die "Can't create Sock: $!";
print $sock "GET ",$conn_addr," HTTP/1.0\n\n";
while($line = <$sock>) {
print $line;
}
$socks->close()
запускаю,.. пишет
Can't locate IO/Socket/Socks.pm in @INC (@INC contains: C:/Perl/lib C:/Perl/site
/lib .) at D:\pr0gramm1n9\perl\my\proxy\_proxy.pl line 3.
BEGIN failed--compilation aborted at D:\pr0gramm1n9\perl\my\proxy\_proxy.pl line
3., я так понял что модуль IO::Socket не установлен..
запускаю ppm.bat
ввожу install IO::Socket
и опять ошибка!
что делать?
О!
установил вроде..) скачал новий перл и установил..
ppm.bat:
проверка IO::Socket:
Verifying IO-Socket-Socks ...
3 files verified
как я понямаю, я устанил...
запускаю скрипт с надеждой, и ..... пля! опять ошибка:
Can't locate IO/Socket/Socks.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl
/lib .) at D:\pr0gramm1n9\perl\my\proxy\_proxy.pl line 3.
BEGIN failed--compilation aborted at D:\pr0gramm1n9\perl\my\proxy\_proxy.pl line
3.
что такое?
================================
переделал скрипт
system('cls');
print '1';
use IO::Socket::Socks;
print '1';
my $proxy_addr = "128.10.10.15";print '1';
my $proxy_port = 3128;print '1';
my $conn_addr = "http://www.mail.ru/";print '1';
my $conn_port = 80;print '1';
my $socks = new IO::Socket::Socks(ProxyAddr=>$proxy_addr,
ProxyPort=>$proxy_port,
ConnectAddr=>$conn_addr,
ConnectPort=>$conn_port,
) or die "Can't create Sock: $!";
print '1';
print $sock "GET ",$conn_addr," HTTP/1.0\n\n";
print '1';
while($line = <$sock>) {
print '1';
print $line;
print '1';
}
$socks->close();
print '1';
теперь ошибка:
Can't create Sock: Unknown error at D:\pr0gramm1n9\perl\my\proxy\_proxy.pl line
10.
111111
что я не так делаю?
тебе надо установить модуль IO::Socket::Socks
Какой perl ты пользуешь? Может так получить, что ты установил необходимый модуль (кстате в ActiveState он установлен, если по нему есть документация), но запускаешь с помощью другого perl (который прописан в системной переменной). Попробуй запустить скрипт указав полный путь к perl.exe. И вообще ActivePerl лучше всего ставить в корень!
Я когда разюирался с модулем IO::Socket::Socks столкнулся с проблемой другого плана! Он отказался работать с обычной проксей! Только для Socks 5
тебе надо установить модуль IO::Socket::Socks
Какой perl ты пользуешь? Может так получить, что ты установил необходимый модуль (кстате в ActiveState он установлен, если по нему есть документация), но запускаешь с помощью другого perl (который прописан в системной переменной). Попробуй запустить скрипт указав полный путь к perl.exe. И вообще ActivePerl лучше всего ставить в корень!
Я когда разюирался с модулем IO::Socket::Socks столкнулся с проблемой другого плана! Он отказался работать с обычной проксей! Только для Socks 5
5.10.0 использую
перл у меня стоит в : c:/perl/ ,тоесть в корне
просто у меня привязка к файлам *.pl стоит на запуск c:/perl/bin/perl.exe, тоесть скрипти норм запускаютса..
вот вроде я модуль установил.., только запускаю и пишет ошибка сооденения с чем то..
(не с прокси и не с сайтом)
Кстате, знакомый скрипт. :-) Кажется я знаю где ты его взял! Но он у меня так и не заработал. :-( я там написал, что переделать его надо.
И еще: попробуй запустить: perl -e "use IO::Socket::Socks"; из комендной строки.
Если выдаст ошибку, значит модуль не установлен! А пока он у тебя на его вызов и ругается!
Ты, кстате, в начале скрипта use пишешь?
C:\Perl\bin>perl.exe -e "use IO::Socket::Socks";
C:\Perl\bin>
запускаю скрипт system('cls');
$num = 0;
sub p {$num++; print $num;}
use IO::Socket::Socks;
p;
my $proxy_addr = "75.69.203.194";
p;
my $proxy_port = 15689;
p;
my $conn_addr = "http://www.mail.ru/";
p;
my $conn_port = 80;
p;
my $socks = new IO::Socket::Socks(ProxyAddr=>$proxy_addr,
ProxyPort=>$proxy_port,
ConnectAddr=>$conn_addr,
ConnectPort=>$conn_port,
) or die "Can't create Sock: $!";
p;
print $sock "GET ",$conn_addr," HTTP/1.0\n\n";
p;
while($line = <$sock>) {
print $line;http://forum.antichat.ru/thread91556.html
p;
}
$socks->close();
p;
(прокси взял из сайта http://www.checker.freeproxy.ru/checker/last_checked_proxies.php для Socks5)
результат виполнения:
Can't create Sock: at D:\pr0gramm1n9\perl\my\proxy\_proxy.pl line 17.
12345
Все дело в том, что по адресу 75.69.203.194:15689 обычный прокси сервер, а не Socks 5. IO-Socket-Socks только для socks 5.
Вот рабочий пример кода для работы с обычной проксей:
use IO::Socket;
use IO::Socket::INET;
my $conn_addr = "http://www.mail.ru/";
my $sock = IO::Socket::INET->new(PeerAddr => '75.69.203.194',
PeerPort => 'http(15689)',
Proto => 'tcp') or die "Can't create Socks: $!";
print $sock "GET ",$conn_addr," HTTP/1.0\n\n";
while($line = <$sock>) {
print $line;
}
Проверял. Все работает.
мдее..
что со мною..
use IO::Socket;
use IO::Socket::INET;
sub saveFile
{
open(myFILE,">$_[0]") || die "error: $!";
print myFILE $_[1];
close(myFILE);
}
my $conn_addr = "http://www.mail.ru/";
my $sock = IO::Socket::INET->new(PeerAddr => '75.69.203.194',
PeerPort => 'http(15689)',
Proto => 'tcp') or die "Can't create Socks: $!";
print $sock "GET ",$conn_addr," HTTP/1.0\n\n";
$answ='';
while($line = <$sock>) {
$answ.=$line;
}
saveFile('result.html',$answ);
результат:
Can't create Socks: Unknown error at pr2.pl line 13
.
думал.., может прокси дохлий? полошол опять на http://www.checker.freeproxy.ru/checker/last_checked_proxies.php все перепробивал - результат один и тот же((
попробуй изменить 14-ю строчку на PeerPort => '15689',
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot