プロが教えるわが家の防犯対策術!

下記のように、任意のホームページを取得してそれを出力するプログラムがあるのですが、リダイレクトで引越しされたホームページにアクセスしても、特に問題なく表示されます。
できれば、リダイレクトされた場合であれば、次から本当のURLにアクセスしたいためそのホームページを記録したいのですが何か良い方法は無いでしょうか?
ご存知の方、教えていただけ無いでしょうか?
宜しくお願い致します。


-CGI----------------------------------------------------
#!/usr/bin/perl
print "Content-Type: text/plain\n\n";
$url = 'http://URLを入れる';
use LWP;
use HTTP::Cookies;
$file = "cookies.txt";
$browser = LWP::UserAgent->new;
$browser->cookie_jar({file =>$file, autosave=>1 });
$response = $browser->get($url);
print $response->{_content};
__END__
if(リダイレクトされたならば){
open (OUT,">>RedirectLog.txt");
print OUT $url."\n";
close(OUT);
}
-CGI----------------------------------------------------

A 回答 (2件)

リダイレクトされていたらリダイレクト禁止にして改めてurlを取り出すとか


if($response->previous()){ #リダイレクトされたならば
$browser->requests_redirectable([]);
$browser->get($url)->content()=~/<a href=[\"\']?([^\"\']+)[\"\']?>/i;
open (OUT,">>RedirectLog.txt");
print OUT $1."\n";
close(OUT);
}
#ちょっと処理的にアレな感じですがとりあえず動きました
    • good
    • 0
この回答へのお礼

とりあえず、動くものがあり、とても、助かりました!!
ありがとうございます!

お礼日時:2006/09/13 19:29

http://digit.que.ne.jp/work/index.cgi?Perl%E3%83 …
が参考になるかも

実際に試してないのでわかりませんが、
LWPそのままだと透過的にリダイレクトするとあるので
LWP::UserAgent の simple_requestでリクエストを出して
レスポンス(HTTP::Response)から is_redirect でリダイレクトされたかどうかとheader('Location')でURLが取り出せるのではないかと思います。
    • good
    • 0
この回答へのお礼

とてもよくまとめられているページで様々な変更に役立ちました。ありがとうございました。

お礼日時:2006/09/13 19:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!