自動リダイレクト抑止


 GETメソッドやHEADメソッドでアクセスした時に、デフォルトだと自動でリダイレクト処理をしてリダイレクト先のページにアクセスしますが、それを抑止する方法の紹介です。
 LWP::UserAgentのrequests_redirectableでリダイレクト対象のメソッドを指定できるので、対象メソッドなしに指定します。
 結果がリダイレクトかどうかはHTTP::Responseのis_redirectで分かります。
use strict;
use warnings;
use LWP::UserAgent;

my $uri = 'http://www.example.com';

my $ua = LWP::UserAgent->new;
$ua->requests_redirectable([]); # リダイレクト対象メソッドを空にする

my $res = $ua->get($uri);
if ($res->is_success) {
    print $res->content, "\n";
} elsif ($res->is_redirect) {
    print "REDIRECT.\n";
    print $res->as_string, "\n";
} else {
    print "ERROR.\n";
    print $res->status_line, "\n";
}

関連項目

Webページの取得