Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Для знатоков ПЕРЛ и Http запросов..

4.5K
29 сентября 2004 года
Lorex
13 / / 12.10.2003
Обьічньій *.html сайт вьіходит скачать вот таким скриптом даньім ниже, тоесть файл которьій является HTML файлом физически и лежит на серваке... а вот некоторьіе адреса скачать не вьіходит..


Код:
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;


вьідает результат --- индекс HTML файл Яндекса,
а вот с адреса

http://uk.weather.com/weather/local/UPXX0017?x=0&post=post&code=code&y=0

не качает ничего.. тоесть все что не html в виде файла лежащего на сервере - не качает... как с етим боротся? Подскажите!
ЗАРАНЕЕ БЛАГОДАРЕН
283
29 сентября 2004 года
Alone
910 / / 20.11.2002
Цитата:
Originally posted by Lorex
не качает ничего.. тоесть все что не html в виде файла лежащего на сервере - не качает...



Загадочный набор слов... интересно что это означает?

Значит так, по указанному урлу идет 2 редиректа
1. заголовком (301) LWP должен нормально обработать это и перекинуть на другой урл.
2. с помощью HTML (<meta http-equiv="Refresh") LWP естественно такого не понимает.

Вот теперь в свете полученных данных объясни что у тебя не получается.

P.S. Возможно я ошибаюсь и LWP считает 301 ошибкой, поэтому посмотри "$response->status_line" там содержится описание ошибки, если это так то нужно будет обновить версию LWP так как при таком запросе 30x ошибки должны обрабатыватся нормально т.е. редиректится.

4.5K
29 сентября 2004 года
Lorex
13 / / 12.10.2003
Значит так, по указанному урлу идет 2 редиректа


О и ето уже хлеб, СЕНКС БОЛЬШОЙ
ну в етом я не силен.. может...насчет редиректа..


1. заголовком (301) LWP должен нормально обработать это и перекинуть на другой урл.
2. с помощью HTML (<meta http-equiv="Refresh") LWP естественно такого не понимает.

Вот теперь в свете полученных данных объясни что у тебя не получается.

P.S. Возможно я ошибаюсь и LWP считает 301 ошибкой, поэтому посмотри "$response->status_line" там содержится описание ошибки,

$response->status_line # 404 not found!!!!
С аналогичньіми сайтами то же самое вроде...
Помоги...
4.5K
29 сентября 2004 года
Lorex
13 / / 12.10.2003
а вот вставил строчку
$ua->proxy('http','proxy.comfort-service.com');
начало вьідавать 501 Protocol scheme '' is not supported

Я как бьі новьій в ентом деле...
ПОМОГИ
4.5K
29 сентября 2004 года
Lorex
13 / / 12.10.2003
с адресом http://weather.cnn.com/weather/forecast.jsp?locCode=UULV то же самое
283
30 сентября 2004 года
Alone
910 / / 20.11.2002
Я скопировал твой скрипт и подставил указанные урлы, все ок.
404 это значит ты чтото не так делаеш...
выведи $request->as_string; (после my $response = $ua->request($request);)

А насчет proxy, правильно так:
$ua->proxy('http','http://proxy.comfort-service.com');
4.5K
30 сентября 2004 года
Lorex
13 / / 12.10.2003
Код:
#!/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;


а вот результат

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>

как бьі так.. но в браузере ссьілку видно...

Может нужно как то прикинутся браузером, я видел такое изречение в каком-то мануале...
тоесь агента прописать Мозилу и т.д. но как ето сделать?..
И еще одно.. я сижу в локальной большой сети, может с серваком че.. хотя браузер видит все!
283
30 сентября 2004 года
Alone
910 / / 20.11.2002
Гадать можно сколько угодно...
что возращает этот скрипт?

Код:
#!/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;


потом заменить $response = $ua->simple_request($request); на
$response = $ua->request($request) и скажи что возращает...
300
30 сентября 2004 года
ReDrum
689 / / 20.04.2000
Try this
 
Код:
my $u = 'http://uk.w3.weather.com/weather/local/UPXX0017?';
300
30 сентября 2004 года
ReDrum
689 / / 20.04.2000
насчет IO::Handle - не понял для чего он здесь нужен
4.5K
30 сентября 2004 года
Lorex
13 / / 12.10.2003
my $u = 'http://uk.w3.weather.com/weather/local/UPXX0017?';

не хиляет но сенкс..
-------------------------------------------------

возвращает в обоих случаях 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>
283
30 сентября 2004 года
Alone
910 / / 20.11.2002
мда...
если верить заголовкам ( а им к сожалению нельзя доверять )
запрос шел не через 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
4.5K
30 сентября 2004 года
Lorex
13 / / 12.10.2003
такое ощущение что 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 я так понимаю.. то ето тогда прокси... незнаю..
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог