Pregunta

Tengo un script en Perl que utiliza WWW :: Mecanizar para leer desde un archivo y realizar algunas tareas automatizadas en un sitio web. Sin embargo, el sitio utiliza una redirección 302 después de cada vez que solicito una determinada página. No quiero ser redirigidos (la página que redirige a toma demasiado tiempo para responder); Sólo quiero recorrer el archivo y llamo el primer eslabón de una y otra. No puedo encontrar la manera de hacer WWW :: Mecanizar no sigue las redirecciones. ¿Alguna sugerencia?

¿Fue útil?

Solución

WWW::Mechanize es una subclase de LWP::UserAgent . Por lo tanto se puede utilizar cualquier LWP::UserAgent métodos.

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

Otros consejos

WWW :: Mecanizar es una subclase de LWP :: agente de usuario; puede configurar las opciones max_redirect o requests_redirectable en el constructor como lo haría con LWP :: agente de usuario.

Puede utilizar $ agent-> max_redirect (0) ;, como en este ejemplo:

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

Cuando se ejecuta imprime:

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

Así que, con max_redirect (0) -. Claramente no sigue las redirecciones

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top