Perl Mechanize,制作一个在网页上登录的脚本

时间:2016-10-14 12:50:34

标签: perl mechanize

我制作了一个自动登录网页的脚本,它从以下开始:

use HTTP::Cookies;
use WWW::Mechanize;

my $cookie_jar = HTTP::Cookies->new;
my $agent      = WWW::Mechanize->new( cookie_jar => $cookie_jar );

my $server_endpoint = "http://10.11.5.2/index.php";

$agent->post($server_endpoint,[tg => 'login', referer => 'index.php',login => 'login',sAuthType=>'LOL',nickname=>'admin',password=>'012345678',submit=>'Login']);

print "Set Cookie Jar?\n", $agent->cookie_jar->as_string, "\n";

print $agent->content;

我得到一个页面说"您没有登录" ...但是当我在浏览器中使用相同的凭据时,一切正常。

所以我用[{1}}检索了服务器发送的cookie的值(位于响应的 set-cookie 标题中),这里的 OV3176019645 = 3inkmpee0r5gpfm41c3iltvda1 即可。

在发送之前我把它放在POST请求中,如下所示:

$agent->cookie_jar->as_string

这次一切正常......

所以,我的问题是:在发送请求之前,如何自动获取服务器提供的cookie值?

还出现了另一个问题,即服务器发回一个具有以下形状的cookie(在 set-cookie 标题中):

use HTTP::Cookies;
use WWW::Mechanize;

my $cookie_jar = HTTP::Cookies->new;
my $agent      = WWW::Mechanize->new( cookie_jar => $cookie_jar );

my $server_endpoint = "http://10.11.5.2/index.php";
$agent->add_header( Cookie => 'OV3176019645=osovm5u0vfc2dmkuo6bqn6hah1' );
$agent->post($server_endpoint,[tg => 'login', referer => 'index.php',login => 'login',sAuthType=>'LOL',nickname=>'admin',password=>'012345678',submit=>'Login']);


print $agent->content;

我只需要这个cookie的第一项( OV3176019 .... )。

我希望我的解释清楚。

由于

0 个答案:

没有答案