需要重写这个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);