Как я могу сохранить WWW :: Mechanize от следующих перенаправлений? - PullRequest
11 голосов
/ 21 мая 2009

У меня есть скрипт Perl, который использует WWW :: Mechanize для чтения из файла и выполнения некоторых автоматизированных задач на веб-сайте. Тем не менее, веб-сайт использует редирект 302 после каждого запроса определенной страницы. Я не хочу, чтобы меня перенаправляли (страница, на которую он перенаправляет, занимает слишком много времени, чтобы ответить); Я просто хочу просмотреть файл и снова и снова вызывать первую ссылку. Я не могу понять, как заставить WWW :: Mechanize НЕ следовать перенаправлениям. Есть предложения?

Ответы [ 3 ]

10 голосов
/ 21 мая 2009

WWW::Mechanize является подклассом LWP::UserAgent. Таким образом, вы можете использовать любые LWP::UserAgent методы.

my $mech = WWW::Mechanize->new();
$mech->requests_redirectable([]);
5 голосов
/ 21 мая 2009

WWW :: Mechanize является подклассом LWP :: UserAgent; Вы можете установить параметры max_redirect или reports_redirectable в конструкторе, как это было бы с LWP :: UserAgent.

4 голосов
/ 22 мая 2009

Вы можете использовать $ 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) - он явно не следует за перенаправлениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...