加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 22:03:19 所属栏目:大数据 来源:网络整理
导读:我是Perl的新手,我想写一个Perl程序: 创建HTTP请求 发送到任何URL(例如http://www.google.com) 在请求中包含一个cookie 将http响应代码记录在文件中 我试过这个: #!/usr/bin/perlrequire HTTP::Request;require LWP::UserAgent;$request = HTTP::Request-n
我是Perl的新手,我想写一个Perl程序:

>创建HTTP请求
>发送到任何URL(例如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 "sucessn";
print $response->code;
}
else {
print "failn";
die $response->code;
}

请告诉如何在“请求”中设置cookie

当我们发送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 :: Cookie中:

>你需要创建一个cookie jar
>设置要放在jar中的cookie的值
>然后将该jar与您的用户代理相关联

例如:

my $ua = LWP::UserAgent->new;
my $cookies = HTTP::Cookies->new();
$cookies->set_cookie(0,'cookiename','value','/','google.com',80,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,$port.

关于:

500 Can’t connect to www.google.com:80
(Bad hostname ‘www.google.com’)

这意味着LWP无法查找Google的地址.你在网页代理后面吗?如果是这样,您需要在UA中设置您的代理,方法如下:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读