問題
とあるURLの存在チェックする処理にて、agentを設定すると403
が返ってきて、agentを設定しないと200
が返ってる。
(逆ならわかるのですが・・)
バージョン
$ perl -version This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi (with 29 registered patches, see perl -V for more detail)
$ rpm -qa | grep libwww-perl perl-libwww-perl-6.05-2.17.amzn1.noarch
スクリプト
perl
1#!/usr/bin/perl 2 3use strict; 4use warnings; 5use LWP::UserAgent; 6 7my $ua = LWP::UserAgent->new; 8$ua->agent('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)'); ←ここをコメントアウトするorしない 9$ua->timeout(5); 10 11my $url = '<チェックしたいURL>'; 12 13my $req = HTTP::Request->new(GET => $url); 14my $res = $ua->request($req); 15 16print $res->status_line . "\n"; 17print $res->code . "\n";
実行結果
$ua->agent
あり
$ perl http_status.pl 403 Forbidden 403
$ua->agent
なし(コメントアウト)
$ perl http_status.pl 200 OK 200
補足
- perlv5.8.5(perl-libwww-perl-5.79-5)の環境ではagentを設定した状態でも
200
が返ってくる&agentを無効化しても200
が返って来る。 - 対象のURLはchromeのブラウザからはアクセス可能。ただし、301でリダイレクトしている。
質問
- この差の原因はなんなのか?
- agentを設定した状態でも
200
を変えさせるためにはどうすればいいか?
あなたの回答
tips
プレビュー