11

我有一个 Perl 脚本,它使用WWW::Mechanize从文件中读取并在网站上执行一些自动化任务。但是,每次我请求某个页面后,该网站都会使用 302 重定向。我不想被重定向(它重定向到的页面需要很长时间才能响应);我只想遍历文件并一遍又一遍地调用第一个链接。我不知道如何使 WWW::Mechanize 不遵循重定向。有什么建议么?

4

3 回答 3

10

WWW::Mechanize是 的子类LWP::UserAgent。所以你可以使用任何LWP::UserAgent方法。

my $mech = WWW::Mechanize->new();
$mech->requests_redirectable([]);
于 2009-05-21T19:49:38.633 回答
5

WWW::Mechanize 是 LWP::UserAgent 的子类;您可以像使用 LWP::UserAgent 一样在构造函数中设置 max_redirect 或 requests_redirectable 选项。

于 2009-05-21T19:52:30.217 回答
4

您可以使用 $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) - 它显然不遵循重定向。

于 2009-05-22T05:18:52.563 回答