需要重写这个perl函数。由于libperl用户代理被阻止
我遇到的一个主机阻止我从他们的网站下载图像。我已经和他们谈过了,他们要求我将用户代理需要重写这个perl函数。由于libperl用户代理被阻止,perl,lwp,Perl,Lwp,我遇到的一个主机阻止我从他们的网站下载图像。我已经和他们谈过了,他们要求我将用户代理libwww perl/更改为Mozilla/5.0。图像链接是http和https 我尝试过各种选择,比如 my $ua = LWP::UserAgent->new(); $ua->ssl_opts( verify_hostnames => 0 ); 但是我无法让它与getstore一起使用。非常感谢您的帮助 sub storeimage { my $image = shift;
libwww perl/
更改为Mozilla/5.0
。图像链接是http和https
我尝试过各种选择,比如
my $ua = LWP::UserAgent->new();
$ua->ssl_opts( verify_hostnames => 0 );
但是我无法让它与getstore
一起使用。非常感谢您的帮助
sub storeimage {
my $image = shift;
if ($image =~ m#^https?://.+\/(.+\.)([a-z]+)$#i) {
my $ext = $2;
my $filename = "$1$2";
if (exists $wantedfiles{$ext}) {
my $savepath = $localwantedpath.$wantedfiles{$ext};
if (!-f $savepath.$filename) {
unless (is_success(getstore($image, $savepath.$filename))) {
_warn("Couldn't download file $image to $savepath.");
return '';
}
if ( $ext =~ /jpg|jpeg/oi ) {
system("mogrify -resize '800>' -quality 70 $savepath$filename");
#mogrify -resize 800x800 -quality 70 -format jpg $imageloc
}
}
return $wantedfiles{$ext}.$filename;
}
}
return '';
}
我不知道你为什么要摆弄SSL选项。主机名验证与HTTP头无关 你需要的是
my $ua = LWP::UserAgent->new(agent => 'Mozilla/5.0');
设置属性
要使用$ua
对象复制函数(从),需要执行以下操作:
unless ($ua->request(HTTP::Request->new('GET' => $image), $savepath.$filename)->is_success) {
...
}
参见方法
或可考虑使用:
不过,它的行为有点不同。使用用户代理 您可以使用它来更改代理字符串,并且仍然使用getstore
use LWP::Simple;
$LWP::Simple::ua->agent("Mozilla...");
getstore($url, $file);
我已经试过了,我的$ua=LWP::UserAgent->new(ssl\u opts=>{verify\u hostname=>1})$ua->agent('Mozilla/5.0');我不明白的是如何将图像保存到指定的文件夹中,如getstore。从我所读到的内容来看,我无法将getstore与LWP::UserAgent一起使用。我已经尝试了我的$ua=LWP::UserAgent->new(ssl\u opts=>{verify\u hostname=>1})$ua->agent('Mozilla/5.0');我不明白的是如何将图像保存到指定的文件夹中,如getstore。据我所知,我不能将getstore与LWP::UserAgent一起使用。
$ua->mirror($your_url, $your_filename)
use LWP::Simple;
$LWP::Simple::ua->agent("Mozilla...");
getstore($url, $file);