リダイレクト先URLの取得方法いろいろ
t.coなどから本当のURLを取り出す方法という記事で、短縮 URL などでのリダイレクト先 URL をチェックする方法を扱っていました。
僕もよくリダレクト先を調べようとして、そのたびにやり方を調べなおしたりしていたので、これに乗じてメモしておこうと思います。(ここでは goo.gl を使用して、http://google.com/ にリダイレクトしています。)
まずは記事にあった telnet を使うやりかた。
$ telnet goo.gl 80
GET /EbHzJ HTTP/1.0
Host: goo.gl
※ goo.gl や tinyurl.com では、GET だけでなく Host も必要なようです。
telnet はあまり環境を選ばないのですが、コマンド1行で書ける(なのでヒストリーも使える)ほうが好みです。
netcat (nc) は便利です。
$ (echo "GET /EbHzJ HTTP/1.0"; echo "Host: goo.gl"; echo) | nc goo.gl 80
あるいは、テキストブラウザやファイル取得ツールを使うことも多いです。その場合には自動リダイレクトを無効にし、また応答ヘッダを出力するように指定して使用します。Host 指定などが不要で、便利ですね。
wget の場合
$ wget -q --max-redirect=0 -S -O - http://goo.gl/EbHzJ
w3m の場合
$ w3m -o follow_redirection=0 -dump_head http://goo.gl/EbHzJ
curl の場合
$ curl -D - http://goo.gl/EbHzJ
curl はデフォルト動作でリダイレクトを辿らないのですが、以下のように書いても同じです。
$ curl -L --max-redirs 0 -D - http://goo.gl/EbHzJ
これらは最大リダイレクト回数を指定できるので、多段のリダイレクト時のチェックにも便利です。
lynx の場合は、リダイレクト回数の指定はできないようです。
(なぜ "mime_header" なの?)
$ lynx -dump -mime_header -noredir http://goo.gl/EbHzJ