2017-11-30 26 views
2

내가 처리하는 호스트 중 하나는 사이트에서 이미지를 다운로드하지 못하게하는 것입니다. 나는 그들에게 말했고 그들은 사용자 에이전트 libwww-perl/Mozilla/5.0으로 바꾸라고 요청했다. 이미지 링크는 http와 https입니다.이 perl 함수를 다시 작성해야합니다. libperl UserAgent가 차단되어 있기 때문에

나는

my $ua = LWP::UserAgent->new(); 
$ua->ssl_opts(verify_hostnames => 0); 

같은 다양한 옵션을 시도하지만 그것이 getstore 작업을 얻을 수 없습니다. 어떤 도움을 주시면 감사하겠습니다. 당신은 SSL 옵션 장난하는 이유

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 ''; 
} 
+0

나는이 $ ua = LWP :: UserAgent-> new (ssl_opts => {verify_hostname => 1})를 시도했습니다. $ ua-> agent ('Mozilla/5.0'); 알아낼 수없는 것은 getstore와 같은 지정된 폴더에 이미지를 저장하는 방법입니다. 내가 읽은 것에서는 LWP :: UserAgent와 함께 getstore를 사용할 수 없다. – naf

답변

2
my $ua = LWP::UserAgent->new(agent => 'Mozilla/5.0'); 
+0

나는이 $ ua = LWP :: UserAgent-> new를 시도했다. (ssl_opts => {verify_hostname => 1}); $ ua-> agent ('Mozilla/5.0'); 알아낼 수없는 것은 getstore와 같은 지정된 폴더에 이미지를 저장하는 방법입니다. 내가 읽은 것에서는 LWP :: UserAgent와 함께 getstore를 사용할 수 없다. – naf

4

는 잘 모르겠어요. 호스트 이름 확인은 HTTP 헤더와 아무 관련이 없습니다.

는 당신이 필요로하는 것은 agent 속성을 설정하는

my $ua = LWP::UserAgent->new(agent => 'Mozilla/5.0'); 

같은 것입니다.

$ua 개체 ( LWP::Simple에서)을 getstore 기능을 복제하려면, 당신은 같은 것을 할 필요가 :

unless ($ua->request(HTTP::Request->new('GET' => $image), $savepath.$filename)->is_success) { 
    ... 
} 

request 방법을 참조하십시오.

아니면 mirror을 사용하는 것이 좋습니다 :

$ua->mirror($your_url, $your_filename) 

그것은하지만, 약간 다르게 동작합니다.

4

LWP::Simple has a package variable 사용자 에이전트가 있어야합니다.

상담원 문자열을 변경하는데도 getstore을 사용할 수 있습니다.

use LWP::Simple; 

$LWP::Simple::ua->agent("Mozilla..."); 
getstore($url, $file);