Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с работой с куками (LWP), не отсылаются куки 
:(
    Опции темы
alex7851
Дата 12.2.2012, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 5.2.2012

Репутация: нет
Всего: нет



Всем привет, с перлом знаком два дня и вот возникла проблема. Задача: скачать страничку, доступ к которой дается после авторизации (по кукам т.е.). Причем куки надо получить автоматически, авторизовавшись логином и паролем, после чего использовать их для загрузки целевой странички. Гугл курил и cpan.org читал. По идее вот этот код должен все это делать:
Код

use LWP; 
use HTTP::Cookies; 

my $brws = LWP::UserAgent->new(); 
$brws->cookie_jar( HTTP::Cookies->new(file => 'cook.txt', autosave => 1) ); 

$brws->post('http://login.rutracker.org/forum/login.php',{'login_username' => 'alex_8686_rrr','login_password' => '01067851','login' => 'Вход'}); 

$res = $brws->get("http://rutracker.org/forum/profile.php?mode=viewprofile&u=12")->as_string; 

open(FILE, ">log.html") || die("err"); 
print FILE $res; 
close(FILE); 

Однако, это не работает и нужная страничка не грузится, вместо нее, каким-то чудом, возвращается index.php этого сайта (кстати, логин, пароль верные, т.ч. все можно проверить). Идем дальше и смотрим, что выдает это:
Код

use LWP;  
use HTTP::Cookies;  

my $brws = LWP::UserAgent->new(); 
$cookie_jar = HTTP::Cookies->new(file => 'cook.txt', autosave => 1); 
$cookie_jar->clear; 
$brws->cookie_jar( $cookie_jar );  

#смотрим, что вернется после запроса на авторизацию
$response = $brws->post('http://login.rutracker.org/forum/login.php',{'login_username' => 'alex_8686_rrr','login_password' => '01067851','login' => 'Вход'});  
$cookie_jar->extract_cookies( $response ); 
print "RESPONSE: ", $response->as_string; 

#смотрим, что в cookie_jar
print "COOKIES: ",$cookie_jar->as_string; 

#смотрим, какой пакет отправляется (явно указываем, что нужно добавить куку)
$request = HTTP::Request->new(GET => "http://rutracker.org/forum/profile.php?mode=viewprofile&u=12"); 
$cookie_jar->add_cookie_header( $request ); 
print "REQUEST: ", $request->as_string; 

$res = $brws->request($request);  

open(FILE, ">log.html") || die("err");  
print FILE $res->as_string;  
close(FILE); 

Вывод такой:
Код

RESPONSE: HTTP/1.1 302 Moved Temporarily 
Connection: close 
Date: Sun, 12 Feb 2012 10:40:54 GMT 
Location: http://rutracker.org/forum/index.php 
Server: nginx 
Content-Type: text/html 
Client-Date: Sun, 12 Feb 2012 10:40:53 GMT 
Client-Peer: 195.82.146.52:80 
Client-Response-Num: 1 
Client-Transfer-Encoding: chunked 
Set-Cookie: bb_data=1-16545867-17ukSdKLwRT3RwtCn1Fp-1840077282-1329043254-132904 
3254-2285584154-0; expires=Mon, 11-Feb-2013 10:40:54 GMT; path=/forum/; domain=. 
rutracker.org; httponly 

COOKIES: Set-Cookie3: bb_data=1-16545867-17ukSdKLwRT3RwtCn1Fp-1840077282-1329043 
254-1329043254-2285584154-0; path="/forum/"; domain=.rutracker.org; path_spec; e 
xpires="2013-02-11 10:40:54Z"; httponly; version=0 

REQUEST: GET http://rutracker.org/forum/profile.php?mode=viewprofile&u=12 

То есть, в response после авторизации приходит кука, которая успешно пишется в файл и ее можно достать с помощью $cookie_jar->as_string, однако она не добавляется к последнему request, соот-но страница, которая мне нужна, не загружается. Если вручную добавить в request этот header (Cookie: a=b), то все пучком. В чем проблема-то? Вообще везде пишут, что после подключения объекта HTTP::Cookies можно ни о чем не думать, все само будет приниматься и писаться (как вон в том коде на самом верху).
Заранее спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0375 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.