Pergunta

Eu tenho um script Perl que usa WWW :: mechanize para ler um arquivo e executar algumas tarefas automatizadas em um site. No entanto, o site usa um redirecionamento 302 após cada vez que solicitar uma determinada página. Eu não quero ser redirecionado (a página que redireciona para leva muito tempo para responder); Eu só quero percorrer o arquivo e chamar o primeiro elo mais e mais. Eu não consigo descobrir como fazer WWW :: mechanize não seguir redirecionamentos. Alguma sugestão?

Foi útil?

Solução

WWW::Mechanize é uma subclasse de LWP::UserAgent . Assim você pode usar quaisquer métodos LWP::UserAgent .

my $mech = WWW::Mechanize->new();
$mech->requests_redirectable([]);

Outras dicas

WWW :: mechanize é uma subclasse de LWP :: UserAgent; você pode definir as opções max_redirect ou requests_redirectable no construtor como você faria com LWP :: UserAgent.

Você pode usar $ agente-> max_redirect (0) ;, como neste exemplo:

#!/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);

Ao executar imprime:

Got HTTP/302 from http://www.depesz.com/test/redirect.
Got HTTP/200 from http://www.depesz.com/.

Assim, com max_redirect (0) -. Claramente não segue redirecionamentos

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top