PythonでBasic認証ヘッダ付きのHTTPを送るメモ。
urllib2を使うのだが、マニュアルに従うとHTTPPasswordMgrWithDefaultRealmやらHTTPBasicAuthHandlerやら死ぬほどめんどい。
そんな場合は、自分でヘッダを書いてしまえば良い。
話は簡単でauthorization
というヘッダーキーに、 Basic (「ユーザ名:パスワード」のbase64ハッシュ値)
という値を入れてあげるだけで良い。
コードで書くと
headers["authorization"] = "Basic " + (user + ":" + pass).encode("base64")[:-1]
でOK。最後の[:-1]は改行コードを削っている。
コード全体は以下のよなう感じ
import urllib2
url = "http://sample.com/index.html"
user = "XXXX"
password = "XXXX"
headers ={}
headers["authorization"] = "Basic " + (user + ":" + password).encode("base64")[:-1]
req = urllib2.Request(url=url, headers=headers)
res = urllib2.urlopen(req)
print(res.read())
めっちゃ簡単だった。