PDA

Просмотр полной версии : кукисы и perl


x-treem
14.04.2007, 15:56
скажите пожалуйссста
вот надо мне сделать пост-запрос на страничку.
после этого мне должны выдать кукисов целый поднос
как с помощью перла их прочитать?
очень нужно

Gh0s7
14.04.2007, 16:07
А вот так:

($sock - дескриптор сокета, подразумевается, что ты заешь IO::Socket, если lwp то читай маны.)


while (<$sock>) {
print if /^Set-Cookie:/
}


Этот код просто выведет заголовки.
А вообще сервер дает куки так:

Set-Cookie: Cookie_name=Cookie_val; Cookie_name2=cookie_val2;

x-treem
14.04.2007, 16:15
я так и думал. спасибо. просто если честно мне какзалось что простой парсинг ответа серва, не самый лучше вариант. но если профи сказал)))

x-treem
14.04.2007, 16:50
кста, а нельзя их выдрать при помощи Lwp или Http?

Gh0s7
14.04.2007, 17:22
кста, а нельзя их выдрать при помощи Lwp или Http?

Можно. Как я уже и сказал, хорошо было бы почитать маны.
Но, имхо, лучше всего юзать IO::Socket.
Насчет парсинга ответа: парсить его придеться в любом случае, но выбирать тебе - ручками, или через lwp.

x-treem
14.04.2007, 17:34
если ручками, то в ответе кукисы не выглядят как Cookie: Cookie_name=Cookie_val; Cookie_name2=cookie_val2;
у мну ответ такой при установке кукисов
HTTP/1.1 200 OK
Date: Sat, 14 Apr 2007 13:32:48 GMT
Server: Apache/1.3.27 (Win32) PHP/4.3.6
X-Powered-By: PHP/4.3.6
Set-Cookie: userid=asdasd
Connection: close
Content-Type: text/html

Gh0s7
14.04.2007, 17:39
если ручками, то в ответе кукисы не выглядят как Cookie: Cookie_name=Cookie_val; Cookie_name2=cookie_val2;
у мну ответ такой при установке кукисов

Хм, да. Не тот пакет, извиняюсь.

flipper
14.04.2007, 18:23
Самое удобное это юзать LWP
http://www.citforum.ru/internet/perl/lwp/

KSURi
14.04.2007, 20:45
Парсить ничего не надо, IO::Socket сделан для обмена данными непосредственно между клиентом и сервом, без протоколов-надстроек, а для HTTP есть LWP::UserAgent

my $ua = LWP::UserAgent->new(agent => 'FF 1.5', cookie_jar => {});

После запроса, $ua->{cookie_jar} будет содержать объект HTTP::Cookies со всеми куками.
ЗЫ: Ессесно не забываем сделать use HTTP::Cookies

x-treem
14.04.2007, 22:29
Парсить ничего не надо, IO::Socket сделан для обмена данными непосредственно между клиентом и сервом, без протоколов-надстроек, а для HTTP есть LWP::UserAgent

my $ua = LWP::UserAgent->new(agent => 'FF 1.5', cookie_jar => {});

После запроса, $ua->{cookie_jar} будет содержать объект HTTP::Cookies со всеми куками.
ЗЫ: Ессесно не забываем сделать use HTTP::Cookies


!!!
спасибо огромнющие!!!