У меня есть Perl script, который использует WWW:: Mechanize для чтения из файла и выполнения некоторых автоматизированных задач на веб-сайте. Тем не менее, веб-сайт использует перенаправление 302 после каждого запроса на определенную страницу. Я не хочу, чтобы меня перенаправляли (страница, на которую он перенаправляет, занимает слишком много времени, чтобы ответить); Я просто хочу прокрутить файл и вызвать первое звено снова и снова. Я не могу понять, как сделать WWW:: Mechanize NOT следовать перенаправлениям. Любые предложения?
Как я могу сохранить WWW:: Mechanize из следующих редиректов?
Ответ 1
WWW::Mechanize
является подклассом LWP::UserAgent
. Таким образом, вы можете использовать любые методы LWP::UserAgent
.
my $mech = WWW::Mechanize->new();
$mech->requests_redirectable([]);
Ответ 2
WWW:: Mechanize - это подкласс LWP:: UserAgent; вы можете установить параметры max_redirect или request_redirectable в конструкторе, как в LWP:: UserAgent.
Ответ 3
Вы можете использовать $agent- > 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) - это явно не соответствует перенаправлениям.