привет нашол пример для роботи через прокси: Code: 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() запускаю,.. пишет , я так понял что модуль IO::Socket не установлен.. запускаю ppm.bat ввожу install IO::Socket и опять ошибка! что делать?
О! установил вроде..) скачал новий перл и установил.. ppm.bat: проверка IO::Socket: как я понямаю, я устанил... запускаю скрипт с надеждой, и ..... пля! опять ошибка: что такое? ================================ переделал скрипт Code: 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'; теперь ошибка: что я не так делаю?
тебе надо установить модуль 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 пишешь?
запускаю скрипт Code: 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;/thread91556.html p; } $socks->close(); p; (прокси взял из сайта http://www.checker.freeproxy.ru/checker/last_checked_proxies.php для Socks5) результат виполнения:
Все дело в том, что по адресу 75.69.203.194:15689 обычный прокси сервер, а не Socks 5. IO-Socket-Socks только для socks 5. Вот рабочий пример кода для работы с обычной проксей: Code: 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; } Проверял. Все работает.
мдее.. что со мною.. Code: 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); результат: думал.., может прокси дохлий? полошол опять на http://www.checker.freeproxy.ru/checker/last_checked_proxies.php все перепробивал - результат один и тот же((