use LWP;
my $u='http://www.ya.ru';
my $ua = LWP::UserAgent->new;
my $newagent = 'HTTP/1.0 ('.$ua->agent.')';
$ua->agent($newagent);
my $request = HTTP::Request->new(GET=>$u);
my $response = $ua->request($request);
if ($response->is_success)
{$ccc=$response->content;}
print $ccc;
Для знатоков ПЕРЛ и Http запросов..
Код:
вьідает результат --- индекс HTML файл Яндекса,
а вот с адреса
http://uk.weather.com/weather/local/UPXX0017?x=0&post=post&code=code&y=0
не качает ничего.. тоесть все что не html в виде файла лежащего на сервере - не качает... как с етим боротся? Подскажите!
ЗАРАНЕЕ БЛАГОДАРЕН
Цитата:
Originally posted by Lorex
не качает ничего.. тоесть все что не html в виде файла лежащего на сервере - не качает...
не качает ничего.. тоесть все что не html в виде файла лежащего на сервере - не качает...
Загадочный набор слов... интересно что это означает?
Значит так, по указанному урлу идет 2 редиректа
1. заголовком (301) LWP должен нормально обработать это и перекинуть на другой урл.
2. с помощью HTML (<meta http-equiv="Refresh") LWP естественно такого не понимает.
Вот теперь в свете полученных данных объясни что у тебя не получается.
P.S. Возможно я ошибаюсь и LWP считает 301 ошибкой, поэтому посмотри "$response->status_line" там содержится описание ошибки, если это так то нужно будет обновить версию LWP так как при таком запросе 30x ошибки должны обрабатыватся нормально т.е. редиректится.
О и ето уже хлеб, СЕНКС БОЛЬШОЙ
ну в етом я не силен.. может...насчет редиректа..
1. заголовком (301) LWP должен нормально обработать это и перекинуть на другой урл.
2. с помощью HTML (<meta http-equiv="Refresh") LWP естественно такого не понимает.
Вот теперь в свете полученных данных объясни что у тебя не получается.
P.S. Возможно я ошибаюсь и LWP считает 301 ошибкой, поэтому посмотри "$response->status_line" там содержится описание ошибки,
$response->status_line # 404 not found!!!!
С аналогичньіми сайтами то же самое вроде...
Помоги...
$ua->proxy('http','proxy.comfort-service.com');
начало вьідавать 501 Protocol scheme '' is not supported
Я как бьі новьій в ентом деле...
ПОМОГИ
с адресом
404 это значит ты чтото не так делаеш...
выведи $request->as_string; (после my $response = $ua->request($request);)
А насчет proxy, правильно так:
$ua->proxy('http','http://proxy.comfort-service.com');
Код:
#!/usr/bin/perl
print "Hello, World...\n";
use IO::Handle;
use LWP::UserAgent;
my $u='http://uk.weather.com/weather/local/UPXX0017';
# my $u='http://www.ya.ru';
#my $u='http://weather.cnn.com/weather/forecast.jsp?locCode=UULV';
my $ua = LWP::UserAgent->new;
my $newagent = 'HTTP/1.0 ('.$ua->agent.')';
$ua->agent($newagent);
$ua->proxy('http','http://proxy.comfort-service.com');
my $request = HTTP::Request->new(GET=>$u);
my $response = $ua->request($request);
print $request->as_string,"\n";
print "status:",$response->status_line,"\n";
if ($response->is_success)
{$ccc=$response->content;}
print $ccc;
open (f,">__.html");
print f "\n";
if ($response->is_success) {
print f " $ссс" ; }
close f;
print "Hello, World...\n";
use IO::Handle;
use LWP::UserAgent;
my $u='http://uk.weather.com/weather/local/UPXX0017';
# my $u='http://www.ya.ru';
#my $u='http://weather.cnn.com/weather/forecast.jsp?locCode=UULV';
my $ua = LWP::UserAgent->new;
my $newagent = 'HTTP/1.0 ('.$ua->agent.')';
$ua->agent($newagent);
$ua->proxy('http','http://proxy.comfort-service.com');
my $request = HTTP::Request->new(GET=>$u);
my $response = $ua->request($request);
print $request->as_string,"\n";
print "status:",$response->status_line,"\n";
if ($response->is_success)
{$ccc=$response->content;}
print $ccc;
open (f,">__.html");
print f "\n";
if ($response->is_success) {
print f " $ссс" ; }
close f;
а вот результат
D:\temp5\perl>perl fs.pl
Hello, World...
GET http://uk.weather.com/weather/local/UPXX0017
User-Agent: HTTP/1.0 (libwww-perl/5.51)
status:404 Not Found
D:\temp5\perl>
как бьі так.. но в браузере ссьілку видно...
Может нужно как то прикинутся браузером, я видел такое изречение в каком-то мануале...
тоесь агента прописать Мозилу и т.д. но как ето сделать?..
И еще одно.. я сижу в локальной большой сети, может с серваком че.. хотя браузер видит все!
что возращает этот скрипт?
Код:
#!/usr/bin/perl
print "Content-type: text/html \n\n";
use LWP;
my $u='http://uk.weather.com/weather/local/UPXX0017';
my $ua = new LWP::UserAgent;
$ua->agent(' Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)');
$ua->proxy('http','http://proxy.comfort-service.com');
my $request = new HTTP::Request("GET" => $u);
$response = $ua->simple_request($request);
print $response->as_string();
print "\n";
print $response->status_line;
print "Content-type: text/html \n\n";
use LWP;
my $u='http://uk.weather.com/weather/local/UPXX0017';
my $ua = new LWP::UserAgent;
$ua->agent(' Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)');
$ua->proxy('http','http://proxy.comfort-service.com');
my $request = new HTTP::Request("GET" => $u);
$response = $ua->simple_request($request);
print $response->as_string();
print "\n";
print $response->status_line;
потом заменить $response = $ua->simple_request($request); на
$response = $ua->request($request) и скажи что возращает...
Код:
my $u = 'http://uk.w3.weather.com/weather/local/UPXX0017?';
насчет IO::Handle - не понял для чего он здесь нужен
не хиляет но сенкс..
-------------------------------------------------
возвращает в обоих случаях HTML ненайденой страницьі 404:
Код:
D:\temp5\perl>perl fdd.pl
Content-type: text/html
HTTP/1.1 404 Not Found
Connection: close
Date: Thu, 30 Sep 2004 08:53:38 GMT
Server: Apache/1.3.31 (Unix) mod_perl/1.29 PHP/4.3.8 mod_ssl/2.8.19 OpenSSL/0.9.
7d
Content-Type: text/html; charset=iso-8859-1
Client-Date: Thu, 30 Sep 2004 08:53:42 GMT
Client-Peer: 10.97.0.254:80
Title: 404 Not Found
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL /weather/local/UPXX0017 was not found on this server.
<HR>
<ADDRESS>Apache/1.3.31 Server at wall.comfort-service.com Port 80</ADDRESS>
</BODY></HTML>
404 Not Found
D:\temp5\perl>
Content-type: text/html
HTTP/1.1 404 Not Found
Connection: close
Date: Thu, 30 Sep 2004 08:53:38 GMT
Server: Apache/1.3.31 (Unix) mod_perl/1.29 PHP/4.3.8 mod_ssl/2.8.19 OpenSSL/0.9.
7d
Content-Type: text/html; charset=iso-8859-1
Client-Date: Thu, 30 Sep 2004 08:53:42 GMT
Client-Peer: 10.97.0.254:80
Title: 404 Not Found
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL /weather/local/UPXX0017 was not found on this server.
<HR>
<ADDRESS>Apache/1.3.31 Server at wall.comfort-service.com Port 80</ADDRESS>
</BODY></HTML>
404 Not Found
D:\temp5\perl>
если верить заголовкам ( а им к сожалению нельзя доверять )
запрос шел не через proxy:
-Нет полей характерным для proxy ( не обязательно )
-ответ вообще не от сервера (uk.weather.com) у них там и apche другой :) ( хотя это тоже может ничего не значить )
такое ощущение что http://proxy.comfort-service.com вобщемто не proxy, ты уверен что proxy сидит на 80 порту?
Вобщем тебе придется копать:
- попробуй прямой запрос (без прокси)
- попробуй запрос не другие сайты
- сам поюзай эту proxy
- обратись в супорт
- Client-Peer: 10.97.0.254:80 чей это IP? это ip кому идет ответ, по версии apache
http://proxy.comfort-service.com вобщемто не proxy, ты уверен что proxy сидит на 80 порту?
фиг знает на каком порту сидит... тут вообще какая то Novell сеть я не силен в ентом...
Вобщем тебе придется копать:
- попробуй прямой запрос (без прокси)
- попробуй запрос не другие сайты много не пробовал, но сайтьі http://xxxx.xxx/*.HTML откликиваются а вот всякое там CGI с серверньіми скриптами і лабудой.. нет
- сам поюзай эту proxy мда.. знать бьі еще как и что ето все значит...
- обратись в супорт А про такое первьій раз сльішу... начинаю..тока
- Client-Peer: 10.97.0.254:80 чей это IP? это ip кому идет ответ, по версии apache
ето или наш проки или сервер... Wall какойто .. брандмауер может... он фактически подставляет свой IP я так понимаю.. то ето тогда прокси... незнаю..
такое ощущение что
фиг знает на каком порту сидит... тут вообще какая то Novell сеть я не силен в ентом...
Вобщем тебе придется копать:
- попробуй прямой запрос (без прокси)
- попробуй запрос не другие сайты много не пробовал, но сайтьі http://xxxx.xxx/*.HTML откликиваются а вот всякое там CGI с серверньіми скриптами і лабудой.. нет
- сам поюзай эту proxy мда.. знать бьі еще как и что ето все значит...
- обратись в супорт А про такое первьій раз сльішу... начинаю..тока
- Client-Peer: 10.97.0.254:80 чей это IP? это ip кому идет ответ, по версии apache
ето или наш проки или сервер... Wall какойто .. брандмауер может... он фактически подставляет свой IP я так понимаю.. то ето тогда прокси... незнаю..