WWW::Mechanizeでリダイレクト先URL取得
スポンサードリンク
WWW::Mechanizeしている途中で、リダイレクト先のURLを得たいと思って、
use strict;
use warnings;
use WWW::Mechanize;
 
my $mech = WWW::Mechanize->new();
$mech->agent_alias( 'Windows IE 6');
my $url = 'http://example.com/hoge/';
my $redirected = _get_redirect_url( $url );
print "Location: $redirected\n" if $redirected;
 
exit;
 
sub _get_redirect_url {
  my $url = shift;
  $mech->get($url);
  my $newurl = $mech->uri();
  $mech->back();
  return $newurl;
}
 
__END__
上記のようなコードを書いたのだけれども、リダイレクト先が404を返すとエラーになる。よって、mechに入っているLWP::UserAgentを使用して、
use strict;
use warnings;
use WWW::Mechanize;
 
my $mech = WWW::Mechanize->new();
$mech->agent_alias( 'Windows IE 6');
my $url = 'http://example.com/hoge/';
my $redirected = _get_redirect_url( $url );
print "Location: $redirected\n" if $redirected;
 
exit;
 
sub _get_redirect_url {
  my $url = shift;
  my $r = new HTTP::Request( HEAD => $url );
  my $h = $mech->simple_request( $r );
  my $s = $h->code();
  if ( $s == 301 || $s == 302 ) {
    print "$s\n";
    return $h->header('Location');
  }
  return;
}
 
__END__
こんな感じにしてみた。
いつ使うんだこれ。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3550






![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)


 
                  
コメントする