Как я могу запретить WWW::Mechanize следовать за перенаправлениями?

StackOverflow https://stackoverflow.com/questions/894672

  •  23-08-2019
  •  | 
  •  

Вопрос

У меня есть сценарий 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) явно не следует за перенаправлениями.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top