繁体   English   中英

如何使用Perl通过cookie发送和HTTP请求?

[英]How can I use Perl to send and HTTP request with a cookie?

我是Perl的新手,我想编写一个Perl程序:

  • 创建HTTP请求
  • 将其发送到任何网址(例如http://www.google.com
  • 在请求中包含cookie
  • 将http响应代码记录在文件中

我试过这个:

    #!/usr/bin/perl
require HTTP::Request;
require LWP::UserAgent;

$request = HTTP::Request->new(GET => 'http://www.google.com/');
$ua = LWP::UserAgent->new;
$ua->cookie_jar({file => "testcookies.txt",autosave =>1});

$response = $ua->request($request);
if($response->is_success){
print "sucess\n";
print $response->code;
}
else {
print "fail\n";
die $response->code;
}

请告诉我们如何在'request'中设置cookie即ie

我们发送HTTP :: Request时如何设置cookie

我期待的是:

$request = HTTP::Request->new(GET => 'http://www.google.com/');
$ua = LWP::UserAgent->new;
$ua->new CGI::Cookie(-name=>"myCookie",-value=>"fghij");

这可能吗??

如上所述,cookie在HTTP :: Cookies中:

  • 你需要创建一个cookie罐

  • 您可以设置要放入jar中的cookie的值

  • 然后,将该jar与您的用户代理关联

例如:

my $ua = LWP::UserAgent->new;
my $cookies = HTTP::Cookies->new();
$cookies->set_cookie(0,'cookiename', 'value','/','google.com',80,0,0,86400,0);
$ua->cookie_jar($cookies);
# Now make your request

set_cookie有相当多的参数:

set_cookie($ version,$ key,$ val,$ path,$ domain,$ port,$ path_spec,$ secure,$ maxage,$ discard,\\%rest)

这是因为cookie jar是从浏览器(UserAgent)的角度设计的,而不是单个请求。 这意味着在这种情况下并非所有参数都如此重要。

你需要得到的是$ key,$ val,$ path,$ domain,$ port。

关于:

500无法连接到www.google.com:80(错误的主机名'www.google.com')

这意味着LWP无法查找Google的地址。 你是一个Web代理的背后? 如果是这样,您将需要使用以下内容在UA中设置代理:

$ ua-> proxy(['http','https'],' http://proxyhost.my.domain.com:8080 / ');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM