如何在perl中从cookie jar获取会话id?

如何在perl中从cookie jar获取会话id?,perl,Perl,我的问题很简单。。这是如何从cookie jar获取会话id。。。我尝试了以下代码:- use warnings; use HTTP::Cookies; use HTTP::Request::Common; use LWP::UserAgent; $ua = new LWP::UserAgent; if ( !$ua ) { print "Can not get the page :UserAgent fialed \n"; return 0; } my $cookies =

我的问题很简单。。这是如何从cookie jar获取会话id。。。我尝试了以下代码:-

use warnings;
use HTTP::Cookies;
use HTTP::Request::Common;
use LWP::UserAgent;

$ua = new LWP::UserAgent;
if ( !$ua ) {
    print "Can not get the page :UserAgent fialed \n";
    return 0;
}

my $cookies = new HTTP::Cookies( file => './cookies.dat', autosave => 1 );
$ua->cookie_jar($cookies);

# push does all magic to exrtact cookies and add to header for further reqs. useragent should be newer
push @{ $ua->requests_redirectable }, 'POST';
$result = $ua->request(
    POST "URL",
    {   Username => 'admin',
        Password => 'admin',
        Submit   => 'Submit',
    }
);
my $session_id = $cookies->extract_cookies($result);
print $session_id->content;
print "\n\n";
$resp = $result->content;
#print "Result is \n\n\n $resp \n";
$anotherURI    = URL;
$requestObject = HTTP::Request::Common::GET $anotherURI;
$result        = $ua->request($requestObject);
$resp          = $result->content;
#print $resp."\n";
我不知道会话id存储在哪里以及如何获取它? 注意:-URL包含页面的URL。

请查看

类似这样的操作应该可以做到(至少应该在域上添加一个约束):

看一看

类似这样的操作应该可以做到(至少应该在域上添加一个约束):

我写这封信是为了让这类事情变得容易一点。如果您不知道要找哪种饼干,可以这样做:

use strict;
use warnings;

use HTTP::CookieMonster;
use WWW::Mechanize;

my $mech    = WWW::Mechanize->new;
my $monster = HTTP::CookieMonster->new( $mech->cookie_jar );

my $url = 'http://www.nytimes.com';
$mech->get( $url );

my @all_cookies = $monster->all_cookies;
foreach my $cookie ( @all_cookies ) {
    printf( "key: %s value: %s\n", $cookie->key, $cookie->val);
}
如果您已经知道cookie的密钥,则可以执行以下操作:

my $cookie = $monster->get_cookie('RMID');
my $session_id = $cookie->val;
我写这封信是为了让这类事情变得容易一点。如果您不知道要找哪种饼干,可以这样做:

use strict;
use warnings;

use HTTP::CookieMonster;
use WWW::Mechanize;

my $mech    = WWW::Mechanize->new;
my $monster = HTTP::CookieMonster->new( $mech->cookie_jar );

my $url = 'http://www.nytimes.com';
$mech->get( $url );

my @all_cookies = $monster->all_cookies;
foreach my $cookie ( @all_cookies ) {
    printf( "key: %s value: %s\n", $cookie->key, $cookie->val);
}
如果您已经知道cookie的密钥,则可以执行以下操作:

my $cookie = $monster->get_cookie('RMID');
my $session_id = $cookie->val;

您应该在所有Perl程序中始终
使用strict
。这看起来像是你从互联网上的某个地方复制的(一个非常古老的资源),你并不完全确定你在做什么。了解URL将有助于帮助您。会话id可能在cookies.dat文件的某个地方。您还可以通过使用Firebug或Chrome的devtools检查网站的HTTP响应来查看cookie的调用。您应该在所有Perl程序中始终
使用strict
。这看起来像是你从互联网上的某个地方复制的(一个非常古老的资源),你并不完全确定你在做什么。了解URL将有助于帮助您。会话id可能在cookies.dat文件的某个地方。您还可以通过使用Firebug或Chrome的devtools检查网站的HTTP响应来查看cookie的调用。我在这段代码中遇到了一个错误,如“使用未初始化的calue$session_id”。你能告诉我这个$cookie\u罐子是从哪里来的吗?因为我没有在我的代码片段中使用它。你能不能再写一遍代码或者解释一下!!!$cookie\u jar在代码中是$cookie(HTTP::Cookies的实例)。我觉得你不理解你的代码,你应该在继续之前多翻一翻,以了解你在做什么。我在这段代码中遇到了一个错误,比如“使用未初始化的calue$session\u id”。你能告诉我这个$cookie\u罐子是从哪里来的吗?因为我没有在我的代码片段中使用它。你能不能再写一遍代码或者解释一下!!!$cookie\u jar在代码中是$cookie(HTTP::Cookies的实例)。我觉得你不理解你的代码,你应该在进一步研究之前多研究一下,以了解你在做什么。