Perl WWW :: Механизировать выпуск JSESSION - PullRequest
0 голосов
/ 13 января 2011

У меня возникла проблема при входе в систему с помощью 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();

1 Ответ

0 голосов
/ 13 января 2011

Я не уверен, почему это сработало, но я смог решить эту проблему с помощью LWP :: ConnCache

$agent->conn_cache(LWP::ConnCache->new());
...