使用LWP :: Simple时的状态403

时间:2018-06-19 04:43:48

标签: perl

以下是我使用的简单代码:

FooTest()

链接正常,因为我在浏览器中尝试它但不知何故它只返回use strict; use warnings; use LWP::Simple; my $url = "http://automanga.com/uploads/manga/bleach/chapters/12/09.jpg"; my $file = "09.jpg"; my $rc = getstore($url, $file); if (is_error($rc)) { print "getstore failed with $rc\n"; } 状态。

感谢您对此的建议。

1 个答案:

答案 0 :(得分:2)

本书 LWP和Perl available legally for free online)是对LWP工具包的精彩介绍。特别是,Adding Extra Request Header Lines部分对您在这里遇到的问题进行了有用的讨论。

不幸的是,LWP :: Simple并不适合这项工作。您需要切换到LWP::UserAgentHTTP::Request。然后,您可以在LWP :: UserAgent对象上使用agent()方法,在HTTP :: Request对象上使用header()来精确制作所需的请求。

更新:我在午休期间玩了一下这个。看起来他们在UserAgent字符串上阻塞了。只需将其更改为任何内容即可使其正常工作。

#!/usr/bin/perl

use strict;
use warnings;

use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
$ua->agent('Foo');

my $url = 'http://automanga.com/uploads/manga/bleach/chapters/12/09.jpg';
my $file = '09.jpg';

my $resp = $ua->get($url);

if ($resp->is_error) {
  die $resp->status_line, "\n";
}

open my $fh, '>', $file or die $!;
binmode $fh;
print $fh $resp->decoded_content;