短縮URLを展開する

ネットを見ていたら、古い記事だけどこんなのを見つけた。

 cf. 短縮URLを1行で展開する@Python – shibuya blog

スクリプトにするんなら1行にすることないだろ、とも思ったけどそれはそれとして、わざわざ短縮元の URL にアクセスしなくても、短縮 URL に HEAD メソッドでアクセスしてヘッダーだけ取ってきて Location を見ればいい、というのをどこかで読んだ覚えがある。
というわけで、Python で書いてみた。

import httplib
import urlparse
import sys

url = sys.argv[1]
o = urlparse.urlparse(url)
conn = httplib.HTTPConnection(o.netloc)
conn.request("HEAD", url)
res = conn.getresponse()
print res.getheader("Location")

今回調べたわかったけど、urllib じゃ HEAD メソッド使えないらしい。で、より低レベルの httplib を使ってる。

実行結果:

takatoh@nightschool $ python expandurl.py http://bit.ly/1axxIi4
https://blog.panicblanket.com/