求教,我用perl 的LWP下载文件,为什么没有保存Cookies

ace_fei 2011-08-16 03:55:33

#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Cookies;

my $ua = LWP::UserAgent->new();
my $cookie_jar=HTTP::Cookies->new(file =>"cookie",autosave => 1, ignore_discard => 1);
$ua->cookie_jar($cookie_jar);
my $req = HTTP::Request->new(GET => 'https://wcdma-ll.app.alcatel-lucent.com/livelink/livelink.exe');
$req->authorization_basic($username, $passwd);

my $res = $ua->request($req);
if ($res->is_success)
{
print "Login success.\n";
print $res->as_string;
}
else
{
die "Login failed.\n";
}

print "################## Get File #################\n";
$req = HTTP::Request->new(GET => 'https://wcdma-ll.app.alcatel-lucent.com/livelink/livelink.exe?func=ll&objId=62081897&objAction=download');
$req->authorization_basic($username, $passwd);
$res = $ua->request($req);
print $res->as_string;


我之前发帖子问过,这个脚本在两台不同的机器上跑,其中一个会下载失败,被重定向别的网页。
两台机器有个地方不同,下载失败的机器用的是libwww-perl-6.02,下载成功的机器用的是 libwww-perl-5.805

下载失败的机器上cookie文件里面就一行#LWP-Cookies-1.0,成功的机器上则会保存Set-Cookie的内容。
...全文
193 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2011-08-16
  • 打赏
  • 举报
回复
在新版本里加上这句试试:
$ua->ssl_opts(verify_hostname => 0);
iambic 2011-08-16
  • 打赏
  • 举报
回复
抓包看下你自己发送的HTTP请求内容吧。包括http协议版本,header什么的。看看有区别没有。
ace_fei 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 iambic 的回复:]

什么叫“没有保存Cookies”?现象是什么?
[/Quote]

在失败的机器上,打印出来的$res->as_string中也找不到set-cookie的内容。

HTTP/1.1 200 OK
Connection: close
Date: Tue, 16 Aug 2011 08:01:45 GMT
Server: Apache/2.2.11 (Win32) mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.8 mod_perl/2.0.3 Perl/v5.8.7
Content-Type: text/html
Expires: -1
Client-Date: Tue, 16 Aug 2011 08:03:41 GMT
Client-Peer: 135.120.57.87:443
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /DC=com/DC=alcatel/DC=ad/DC=ad2/O=Alcatel Lucent/CN=Alcatel Lucent AD Internal SSL Sub CA
Client-SSL-Cert-Subject: /C=FR/ST=FR/O=Alcatel-Lucent/OU=Alcatel-Lucent/CN=wcdma-ll.app.alcatel-lucent.com
Client-SSL-Cipher: DHE-RSA-AES256-SHA
Client-SSL-Warning: Peer certificate not verified
Client-Transfer-Encoding: chunked

<HTML>
<!-- File: llgettz.html -->
<SCRIPT Language="Javascript1.2">
……
ace_fei 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 iambic 的回复:]

什么叫“没有保存Cookies”?现象是什么?
[/Quote]

my $cookie_jar=HTTP::Cookies->new(file =>"cookie",autosave => 1, ignore_discard => 1);这里我把cookie的内容放到了cookie文件里。
下载失败的机器上cookie文件里面就一行#LWP-Cookies-1.0,成功的机器上则会保存Set-Cookie的内容。
iambic 2011-08-16
  • 打赏
  • 举报
回复
什么叫“没有保存Cookies”?现象是什么?

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧