どのように私は、次のリダイレクトからWWW :: Mechanizeのを保つことができますか?

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

  •  23-08-2019
  •  | 
  •  

質問

私は WWWを使用してPerlスクリプトを持っている:: Mechanizeのは、ファイルからの読み込みにをウェブサイト上のいくつかの自動化されたタスクを実行します。しかし、ウェブサイトは、私は、特定のページを要求するたびに、後に302リダイレクトを使用しています。私は(に対応するために時間がかかりすぎることがリダイレクトページ)をリダイレクトする必要はありません。私は、ファイルをループしたいと何度も最初のリンクを呼びます。私はWWW ::リダイレクトに従わない機械化を行う方法を見つけ出すことはできません。任意の提案ですか?

役に立ちましたか?

解決

//検索:

WWW::Mechanize には、<のhref = "HTTPのサブクラスであります.cpan.org / perldocの?LWP :: UserAgentの」のrel = "noreferrer"> LWP::UserAgent の。だから、どんな LWP::UserAgent のメソッドを使用することができます。

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

他のヒント

WWW :: Mechanizeのは、LWP :: UserAgentののサブクラスです。あなたはLWP :: UserAgentのと同じように、あなたは、コンストラクタでmax_redirectまたはrequests_redirectableオプションを設定できます。

あなたは$を使用することができ剤 - > 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