【问题标题】:Perl WWW::Mechanize JSESSION issuePerl WWW::Mechanize JSESSION 问题
【发布时间】:2026-02-19 06:35:01
【问题描述】:

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

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

#!/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();

【问题讨论】:

    标签: perl screen-scraping mechanize www-mechanize jsessionid


    【解决方案1】:

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

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

    【讨论】: