リダイレクト先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