使用WWW :: Mechanize和HTTP :: Cookies如何从服务器的响应中提取过去的cookie?
#usr/bin/perl
#MagicLogin.pl
use warnings;
use strict;
use Win32::IE::Mechanize;
use HTTP::Message;
use WWW::Mechanize;
use HTTP::Request::Form;
use HTML::TreeBuilder 3.0;
my $url = 'http://magic.dstcorp.net/MagicDST/';
my $mech = WWW::Mechanize->new(cookie_jar => {});
$mech->agent_alias('Windows IE 6');
my $cookie_jar = new HTTP::Cookies;
my $res = $mech->get($url);
my $tree = new HTML::TreeBuilder;
$tree->parse($res->content);
$tree->eof;
my @forms = $tree->find_by_tag_name('form') or die "No form available";
my $f = HTTP::Request::Form->new($forms[0], $url);
my @fields = $f->allfields;
my $name = $f->name;
my $links = $f->link;
my $buttons = $f->buttons;
my $referrer = $f->referer;
print "Name: ", $name, "\nLink: ", $links, "\nFields: ", @fields,"\nButtons: ", $buttons, "\nReferrer: ", $referrer;
my $response = $mech->request($f->press("ok"));
my $cookie = $cookie_jar->extract_cookies($response);
print $response->content if $response->is_success;
print "Succesfully got url" if $mech->success;
#my $headers = new HTTP::Headers;
#my $cookie = $headers->header('Cookie:');
#print "Cookie:", $headers->referer;
#$mech->get($url);
#my @forms = $mech->forms;
#my $content = $mech->content;
my $output_content = 'MagicLogin.html';
#open Write ,">$output_content";
#print Write $content;
输出:
名称:frmLoginEmbedded在MagicLoginTest.pl第32行打印时使用未初始化的值$ link . 链接:字段:按钮:0在MagicLoginTest.pl第37行打印时使用未初始化的值$ referre .
在此先感谢您的帮助 .
2 回答
Mechanize已包含cookie jar . 您无需手动构建它 .
我使用以下代码段来访问Cookie: