나는 파일에서 읽고 웹 사이트에서 자동화 된 작업을 수행하기 위해 WWW::Mechanize을 사용하는 Perl 스크립트를 가지고있다. 그러나 웹 사이트는 특정 페이지를 요청할 때마다 302 리디렉션을 사용합니다. 나는 리디렉션되고 싶지 않습니다 (리다이렉트하는 페이지가 너무 오랜 시간이 걸리므로 반응합니다). 난 그냥 파일을 반복하고 첫 번째 링크를 반복해서 호출하고 싶습니다. WWW :: Mechanize를 리디렉션을 따르지 않는 방법을 알아낼 수 없습니다. 어떤 제안?어떻게 WWW :: Mechanize를 리디렉션을 따르지 않게 할 수 있습니까?
11
A
답변
10
WWW::Mechanize
은 LWP::UserAgent
의 하위 클래스입니다. 따라서 LWP::UserAgent
메쏘드를 사용할 수 있습니다.
my $mech = WWW::Mechanize->new();
$mech->requests_redirectable([]);
5
WWW :: Mechanize는 LWP :: UserAgent의 하위 클래스입니다. LWP :: UserAgent에서와 같이 생성자에서 max_redirect 또는 requests_redirectable 옵션을 설정할 수 있습니다.
4
당신이 사용할 수있는 $ 나타나 에이전트> max_redirect (0);이 예에서와 같이 :
#!/usr/bin/perl -w
use strict;
use WWW::Mechanize;
my $agent = WWW::Mechanize->new('autocheck' => 1, 'onerror' => undef,);
$agent->max_redirect(0);
$agent->get('http://www.depesz.com/test/redirect');
printf("Got HTTP/%s from %s.\n", $agent->response->code, $agent->uri);
$agent->max_redirect(1);
$agent->get('http://www.depesz.com/test/redirect');
printf("Got HTTP/%s from %s.\n", $agent->response->code, $agent->uri);
가 실행하는 경우가 인쇄 :
Got HTTP/302 from http://www.depesz.com/test/redirect.
Got HTTP/200 from http://www.depesz.com/.
그래서, max_redirect (0) -을 분명히 리디렉션을 따르지 않습니다.
max_redirect를 0으로 설정하려고 시도했지만 효과가 없습니다. – rfusca
실제로 max_redirect가 LWP와 Mech가 리디렉션을 따르지 않는지 여부에 영향을 미치지 않으면보고해야하는 버그입니다. –