2009-05-21 5 views
11

나는 파일에서 읽고 웹 사이트에서 자동화 된 작업을 수행하기 위해 WWW::Mechanize을 사용하는 Perl 스크립트를 가지고있다. 그러나 웹 사이트는 특정 페이지를 요청할 때마다 302 리디렉션을 사용합니다. 나는 리디렉션되고 싶지 않습니다 (리다이렉트하는 페이지가 너무 오랜 시간이 걸리므로 반응합니다). 난 그냥 파일을 반복하고 첫 번째 링크를 반복해서 호출하고 싶습니다. WWW :: Mechanize를 리디렉션을 따르지 않는 방법을 알아낼 수 없습니다. 어떤 제안?어떻게 WWW :: Mechanize를 리디렉션을 따르지 않게 할 수 있습니까?

답변

5

WWW :: Mechanize는 LWP :: UserAgent의 하위 클래스입니다. LWP :: UserAgent에서와 같이 생성자에서 max_redirect 또는 requests_redirectable 옵션을 설정할 수 있습니다.

+0

max_redirect를 0으로 설정하려고 시도했지만 효과가 없습니다. – rfusca

+1

실제로 max_redirect가 LWP와 Mech가 리디렉션을 따르지 않는지 여부에 영향을 미치지 않으면보고해야하는 버그입니다. –

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) -을 분명히 리디렉션을 따르지 않습니다.

+0

이상하게도, max_redirect를 0으로 변경해도 나에게 도움이되지 않았습니다. (간접적 인 효과가있는 코드에서 다른 곳의 버그로 의심됩니다.)하지만 requests_redirectable을 변경하면 작동했습니다. – rfusca

+1

다른주의 사항 ... 나는 항상 귀하의 depesz.com 웹 사이트를 사용합니다. 포스트그레스를위한 훌륭한 자료. – rfusca