Всем привет! google не хочет отдавать страницу,возможно что то не так с заголовками,подскажите как исправить! Code: #!/usr/bin/perl use IO::Socket; my $server = "www.google.com"; my $port = 80; my $socket=IO::Socket::INET->new( PeerAddr => $server, PeerPort => $port, Proto => 'tcp', Type => SOCK_STREAM) or die print "Unable to connect to $server:$portn"; print $socket "GET / HTTP/1.1\r\n"; print $socket "Host: www.google.com\r\n"; print $socket "Connection: keep-alive\r\n"; print $socket "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24\r\n"; print $socket "Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n"; print $socket "Accept-Encoding: gzip,deflate,sdch\r\n"; print $socket "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4\r\n"; print $socket "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3\r\n"; print $socket "Connection: close\r\n"; my $ans=<$socket>; print $ans;
смотрел , оно такое Location: http://www.google.com/ меняю строку в скрипте Code: print $socket "Host: http://www.google.com/\r\n"; в ответ получаю HTTP/1.1 404 Not Found
Плохо смотрите Code: Location: http://www.google.[b]ru[/b]/ А этот заголовок Code: Host: http://www.google.com/\r\n неправильный
извиняюсь может я что не могу понять, о вот скрипт целиков выдает 404 Code: #!/usr/bin/perl use IO::Socket; my $server = "google.ru"; my $port = 80; my $socket=IO::Socket::INET->new( PeerAddr => $server, PeerPort => $port, Proto => 'tcp', Type => SOCK_STREAM) or die print "Unable to connect to $server:$portn"; print $socket "GET / HTTP/1.1\r\n"; print $socket "Host: http://www.google.ru/\r\n"; print $socket "Connection: keep-alive\r\n"; print $socket "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24\r\n"; print $socket "Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n"; print $socket "Accept-Encoding: gzip,deflate,sdch\r\n"; print $socket "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4\r\n"; print $socket "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3\r\n"; print $socket "Connection: close\r\n\r\n"; my $ans; while($ans=<$socket>){ print $ans; }
Вот такой вариант попробуйте Code: #!/usr/bin/perl use strict; use warnings; use IO::Socket::INET; my $server = "www.google.ru"; my $port = 80; my $socket = IO::Socket::INET->new ( 'PeerAddr' => $server, 'PeerPort' => $port, 'Proto' => 'tcp', 'Type' => SOCK_STREAM, 'Timeout' => 10 ) or die print "Unable to connect to $server:$port: $!\n"; my $req = "GET / HTTP/1.1\r\n" . "Host: $server\r\n" . "Referer: http://$server\r\n" . "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24\r\n" . "Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n" . "Accept-Encoding: gzip,deflate,sdch\r\n" . "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4\r\n" . "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3\r\n" . "Connection: close\r\n\r\n"; print $socket $req; print while <$socket>; Или LWP заюзайте
правда одна проблема, LWP не хочет открывать адреса типа http://www.google.com.ua/search?q=a если просто http://www.google.com.ua все работает, в чем может быть проблема ?
Все открывает: Code: #!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; $\ = "\n"; my $url = 'http://www.google.com.ua/search?q=a&ie=UTF-8&oe=UTF-8'; my $ua = LWP::UserAgent->new; $ua->agent ('User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24'); my $req = $ua->get ($url); die 'Cannot get the page' unless $req->is_success; #print 'Return code: ', $req->status_line; if ($req->status_line eq '200 OK') { my $content = $req->content; print $content; } else { print 'Error: ', $req->status_line; } 1;