Perl 使用LWP读取firefoxcookie
我试图通过阅读浏览器cookie(我之前使用Firefox登录创建的cookie)来消除登录网站的过程。我用这个从Firefox导出了它。它给出了200 OK的响应,但返回的是通用主页,而不是我的自定义“登录”主页。如何确保cookie正确地传递到服务器Perl 使用LWP读取firefoxcookie,perl,http,cookies,lwp,Perl,Http,Cookies,Lwp,我试图通过阅读浏览器cookie(我之前使用Firefox登录创建的cookie)来消除登录网站的过程。我用这个从Firefox导出了它。它给出了200 OK的响应,但返回的是通用主页,而不是我的自定义“登录”主页。如何确保cookie正确地传递到服务器 #!/usr/bin/perl use strict ; use warnings; use LWP::UserAgent; use HTTP::Cookies::Netscape; my @GHeader = (
#!/usr/bin/perl
use strict ;
use warnings;
use LWP::UserAgent;
use HTTP::Cookies::Netscape;
my @GHeader = (
'User-Agent' => 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.19) Gecko/2010040200 Ubuntu/8.04 (hardy) Firefox/3.0.19',
'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language' => 'en-us,en;q=0.5',
'Accept-Charset' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Accept-Encoding' => 'gzip,deflate',
'Keep-Alive' => '300',
'Connection' => 'keep-alive'
);
my $cookie_jar = HTTP::Cookies::Netscape->new(
file => "cookies.txt",
);
my $Browser = LWP::UserAgent->new;
$Browser->cookie_jar( $cookie_jar );
my ($OutLine,$response)=();
my $URL = 'http://www.hanggliding.org/';
printf("Get [%s]\n",$URL);
$response = $Browser->get($URL,@GHeader);
if($response->is_success)
{
if($response->status_line ne "200 OK")
{
printf("%s\n", $response->status_line);
}
else
{
printf("%s\n", $response->status_line);
$OutLine =$response->decoded_content;
open(HTML,">out.html");printf HTML ("%s",$OutLine);close(HTML);
}
}
else
{
printf("Failed to get url [%s]\n", $response->status_line);
}
您可以在处理过程中访问或修改请求/响应数据
引用LWP::UserAgent的文档:
处理程序是在处理请求的不同阶段注入的代码。提供以下方法来管理活动处理程序:
$ua->添加处理程序($phase=>\&cb,%matchspec)
添加要在给定处理阶段调用的处理程序。有关如何指定%matchspec,请参阅HTTP::Config中的“匹配”
request\u send=>sub{my($request,$ua,$h)=@;…}
此处理程序在将请求发送到协议处理程序之前有机会处理这些请求。如果希望终止处理,则应返回HTTP::Response对象;否则它将不返回任何内容
从那里,您可以插入一个处理程序,该处理程序将分析请求对象,但在其他情况下不执行任何操作:
use LWP::UserAgent;
use Data::Dumper;
sub dump_request {
my ($request, $ua, $h) = @_;
print Dumper($request);
return undef;
}
my $browser = LWP::UserAgent->new;
$browser->add_handler(
request_send => \&dump_request,
m_method => 'GET'
);
$browser->get('http://www.google.com');