0

我在使用 perl mechanize 登录/保持登录到网站时遇到问题

查看标题,似乎 JSESSIONID 不断变化。我正在使用一个饼干罐,但我认为它以某种方式被覆盖了。

#!/usr/bin/perl
use strict;
use warnings;
use WWW::Mechanize;
use HTTP::Cookies;
use Crypt::SSLeay;

use LWP::UserAgent;
use Crypt::SSLeay::CTX;
use Crypt::SSLeay::Conn;
use Crypt::SSLeay::X509;

use LWP::Simple qw(get);
use LWP::Debug;

my $cookie_jar = HTTP::Cookies->new(ignore_discard => 1);
my $agent = WWW::Mechanize->new(cookie_jar => $cookie_jar, noproxy=>0);
$agent->agent_alias('Linux Mozilla');

$ENV{HTTPS_CA_DIR} = 'cert/';

my $user = 'xxxx';
my $pass = 'xxxx';

my $url = '';

print "\n\n=========================================================\nGOING TO LOGIN PAGE:\n";
my $res = $agent->get($url);

for my $key ( $res->header_field_names() ) {
    print $key, " : ", $res->header( $key ), "\n";
}
print "cookie: ".$agent->cookie_jar->as_string();
$agent->form_name('loginForm');
$agent->set_fields(
    userId => $user,
    password => $pass
);    
$agent->submit();


print "\n\n=========================================================\nREDIRECT:\n";
my $res = $agent->submit();

for my $key ( $res->header_field_names() ) {
    print $key, " : ", $res->header( $key ), "\n";
}
print "cookie: ".$agent->cookie_jar->as_string();   


my $cUrl = '';
$cookie_jar->revert;

print "\n\n=========================================================\nGOING TO CAMPAIGN PAGE:\n";
my $res = $agent->get($cUrl);

for my $key ( $res->header_field_names() ) {
    print $key, " : ", $res->header( $key ), "\n";
}
print "cookie: ".$agent->cookie_jar->as_string();
4

1 回答 1

0

我不确定为什么会这样,但我能够通过使用 LWP::ConnCache 来解决这个问题

$agent->conn_cache(LWP::ConnCache->new());
于 2011-01-13T20:20:29.933 回答