如何让WWW :: Mechanize不再遵循重定向?

时间:2009-05-21 19:27:40

标签: perl redirect mechanize

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

3 个答案:

答案 0 :(得分:10)

WWW::MechanizeLWP::UserAgent的子类。因此,您可以使用任何LWP::UserAgent方法。

my $mech = WWW::Mechanize->new();
$mech->requests_redirectable([]);

答案 1 :(得分:5)

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

答案 2 :(得分: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) - 它显然不会遵循重定向。