我制作了一个自动登录网页的脚本,它从以下开始:
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 .... )。
我希望我的解释清楚。
由于