2011-07-08 6 views
1

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; 

出力:

名:MagicLoginTest.plのline32で印刷中に初期化されていない値$リンクの
使用をfrmLoginEmbedded。 リンク:

フィールド: ボタン:MagicLoginTest.plラインでの印刷で初期化されていない値$ referreの0 利用助けを事前に37.

感謝。

+0

2番目の質問/無関係の問題を編集しました。そのためには、[個別の質問を開く](http://stackoverflow.com/questions/ask)を参考にしてください。あなたが同意しない場合、私の編集を元に戻すことができます。 – daxim

答えて

1

Mechanizeのは、すでにcookie jarが含まれています。手動で構築する必要はありません。

use Data::Dumper qw(Dumper); 
use WWW::Mechanize qw(); 
my $m = WWW::Mechanize->new; 
$m->get(…); 
$m->cookie_jar; # returns a HTTP::Cookies object 
# e.g. 
print $m->cookie_jar->as_string; 
$m->cookie_jar->scan(sub { print Dumper \@_; }) 
+0

ダンパーとは何ですか? – artyfrost

+0

引数を匿名コールバックにダンプします。すでにリンクしているドキュメントの 'scan'メソッドを参照してください。 – daxim

0

私はクッキーにアクセスするには、次のスニペットを使用します。

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"; 
関連する問題