使用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 line32打印中使用未初始化的值$ link。 链接:字段:button:0在MagicLoginTest.pl第37行打印中使用未初始化的值$ referre。
先谢谢您的帮助。
机械化已经包括一个饼干罐 。 您不需要手动构建它。
use Data::Dumper qw(Dumper); use WWW::Mechanize qw(); my $m = WWW::Mechanize->new; $m->get(…); $m->cookie_jar; # returns a HTTP::Cookies object # eg print $m->cookie_jar->as_string; $m->cookie_jar->scan(sub { print Dumper \@_; })
我使用下面的代码访问cookie:
my $jar = HTTP::Cookies->new(); my $mech = WWW::Mechanize->new(cookie_jar => $jar); $mech->get('http://www.example.com'); # $jar now contains any cookies set during the GET print $jar->as_string(), "\n";