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