Perl получить сессионный cookie - PullRequest
2 голосов
/ 21 июля 2011

не работает для некоторых файлов cookie

#!/usr/bin/perl -w
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common qw(GET);
use HTTP::Cookies;

my $ua = LWP::UserAgent->new;

# Define user agent type
$ua->agent('Mozilla/4.0');

# Cookies
$ua->cookie_jar(
    HTTP::Cookies->new(
        file => 'mycookies.txt',
        autosave => 1
    )
);

# Request object
my $req = GET 'http://www.google.com';

# Make the request
my $res = $ua->request($req);

# Check the response
if ($res->is_success) {
    print $res->content;
} else {
    print $res->status_line . "\n";
}

exit 0;

, когда файл cookie похож на это (из firebug)

name  value    
PREF  ID=00349dffbc142a77:FF=0:LD=en:CR=2:TM=1311217451:LM=1311217451:S=QKw9G4vAwl19Me4g

mycookies.txt равен

#LWP-Cookies-1.0
Set-Cookie3:  
PREF="ID=00349dffbc142a77:FF=0:TM=1311217451:LM=1311217451:S=QKw9G4vAwl19Me4g";
path="/"; domain=.google.com; path_spec; expires="2013-07-20 03:04:11Z"; version=0

, нодля какого-то сайта, когда cookie выглядят так:

name         value
verify       test
guest_id     131099303870438180
PHPSESSID    7s99iq1qcamooidrop4iehcv32

ничего в mycookies.txt

как это исправить.

спасибо.

Ответы [ 2 ]

3 голосов
/ 21 июля 2011

Ваш первый файл cookie - это файл cookie домена с истечением в будущем.Так что это записывается в банку с печеньем.

Второй файл cookie - это файл сеанса, срок действия которого истекает после закрытия программы.Он сохраняется в памяти и не записывается в банку.

1 голос
/ 26 июля 2013

Я понимаю, что это немного поздно.Проверенный ответ только описывает, почему у вас есть эта проблема.Чтобы действительно «исправить» проблему, вам нужно заглянуть в параметр ignore_discard для HTTP :: Cookies.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...