2011-01-13 80 views
0

我有一個問題讓/保持登錄使用Perl機械化到網站Perl的WWW ::機械化JSESSION問題

望着頭,看來該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(); 

回答

0

我不知道爲什麼這個工作,但我可以利用LWP :: ConnCache

$agent->conn_cache(LWP::ConnCache->new()); 
來解決這個