ヘッダ情報を取得するスクリプト

以下のように、telnet や nc でWebサーバに接続して、HEADメソッドを発行してヘッダ情報を取得できる。

$ telnet chibilog.name 80
Trying 122.21.243.156...
Connected to chibilog.name.
Escape character is '^]'.
HEAD / HTTP/1.0    ←入力

HTTP/1.1 200 OK
Date: Wed, 05 Mar 2008 02:29:39 GMT
Server: Apache
Vary: Accept-Encoding,User-Agent
Connection: close
Content-Type: text/html; charset=EUC-JP

Connection closed by foreign host.

※ chibilog.name は自分で管理しているサイトです。

このヘッダ情報を取得する場面が多いと、意外と面倒臭くなってくるのでスクリプト化する。
以下は、Pythonで上記のようにヘッダ情報を取得するスクリプト

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys, urllib2

try:
  host = "http://" + sys.argv[1] + "/"
except IndexError, e:
  print "Error: %s\n" % e
  print "e.g. python " + __file__ + " chibilog.name"
  sys.exit(1)

try:
  fd = urllib2.urlopen(host)
except urllib2.URLError, e:
  print e
  sys.exit(2)

print "\nRequest: %s\n" % fd.geturl()
print "-" * 10 + "Header" + "-" * 10
for key, value in fd.info().items():
  print "%s = %s" % (key, value)

例えば、上記を httpHEAD.py なんて名前で作成した場合は、以下のように引数にホスト名を指定して実行すればOK。

$ python httpHEAD.py chibilog.name

Request: http://chibilog.name/

----------Header----------
transfer-encoding = chunked
vary = Accept-Encoding,User-Agent
server = Apache
connection = close
date = Wed, 05 Mar 2008 02:45:30 GMT
content-type = text/html; charset=EUC-JP