Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > LWP::UserAgent работа с http заголовками


Автор: burakov 6.4.2011, 16:31
помогите просмотреть и отредактировать http заголовки.
работаю под winxp

Код

use strict;
use warnings;
use Data::Dumper qw (Dumper);
use LWP::UserAgent;
use HTTP::Headers;


my $UserAgent = LWP::UserAgent -> new ();
my $url = 'http://classon.ru';
my $HTTPRequest =  HTTP::Request->new('GET', $url);
my $HTTPResponse = $UserAgent -> request ($HTTPRequest);
my $headers = $UserAgent -> default_headers ();

print $UserAgent -> default_headers () -> as_string; #????? не работает



Вот пытаюсь получить заголовки и посмотреть что ж такое я получаю там???
просмотреть не могу.

Могу их вот так отредактировать как бы заново созданные
Код

$ua -> agent ('User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1');
$ua->default_header ('User-Agent' => 'User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1'); 
$ua->default_header ('Accept' => 'Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'); 
$ua->default_header ('Accept-Language' => 'ru,en-us;q=0.7,en;q=0.3'); 
$ua->default_header ('Accept-Encoding' => 'gzip,deflate');    
$ua->default_header ('Accept-Charset' => 'windows-1251,utf-8;q=0.7,*;q=0.7'); 


А мне нужно именно получить страничку, посмотреть заголовки , подправить их, если нужно и на основе этого создать GET запрос (файл получить хочу smile).

Поделитесь рабочим примером,
Спасибо.

Автор: Pfailed 6.4.2011, 17:52
Делюсь
Код

use LWP::UserAgent;

my $ua = LWP::UserAgent->new( parse_head => 0 );
my $response = $ua->get("http://yandex.ru/");
my $headers = $response->headers; # HTTP::Headers object


Автор: burakov 6.4.2011, 19:51
Большое спасибо.

На всякий случай, я выложу как ПОСМОТРЕТЬ НА ЗАГОЛОВКИ.

Код

use LWP::UserAgent;
# my $ua = LWP::UserAgent->new ( parse_head => 0 );

my $ua = LWP::UserAgent->new ();
my $response = $ua->get("http://yandex.ru/");
my $headers = $response->headers; # HTTP::Headers object



print $headers -> as_string (); # 1 вариант

while (my ($key, $value) =  each (%$headers)) { # 2 вариант
    print $key."\t".$value."\n";                
}                                                


Автор: burakov 7.4.2011, 14:29
Господа долго думал и все таки 

не те заголовки мы здесь просмотрели, то есть какие то конечно увидели (но это те, которые в html странице в теге <heard>,

мне же нужно какие более ГЛУБОКИЕ заголовки просмотреть с технической информацией
которые содержатся в 
$ua -> default_headers.
Повторюсь что изменить их получается, но просмотреть не могу
$ua -> default_headers -> as_string не работает

Вот так я создаю default_headers без всзякого предварительного запроса $url 

Код

    my $ua = LWP::UserAgent -> new ();    
    $ua -> agent ('User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1');
    $ua -> default_headers -> push_header ('User-Agent' => 'User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1'); 
    $ua -> default_headers -> push_header ('Accept' => 'Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'); 
    $ua -> default_headers -> push_header ('Accept-Language' => 'ru,en-us;q=0.7,en;q=0.3'); 
    $ua -> default_headers -> push_header ('Accept-Encoding' => 'gzip,deflate');    
    $ua -> default_headers -> push_header ('Accept-Charset' => 'windows-1251,utf-8;q=0.7,*;q=0.7');        
    my $headers = $ua -> default_headers ();
    print Dumper $headers;



И вот извращенно Dumper их можно просмотреть ...  кое что видно там, а кое где ничего непонятно!
Нет ли более цивилизованного способа анализа заголовков, которые нужно послать
headers -> as_string () не работает

И кто может объяснить что за заголовки мы получили в предыдущем случае - вроде бы на вид заголовки, но не те....

Спасибо

Автор: Pfailed 7.4.2011, 15:22
Что-то я не пойму что вам нужно. Посмотреть заголовки которые вы сами и составили?
print $ua->default_headers->as_string вполне работает.

В предыдущем примере мы получили заголовки, которые отдал сервер. Если бы оставили parse_head => 0, то значения из тега <head> не вставлялись бы в заголовки.

Автор: burakov 7.4.2011, 16:01
блин и правда работает
этот as_string как заколдованный пол дня ковырял - пусто - сейчас проверяю - выдает...
Спасибо большое.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)