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
コメントする