PythonでBASIC認証
30分プログラム、その572。PythonでBASIC認証をやってみる。
PythonでBASIC認証をやる流れは、
- パスワードをマネージャ(Mgr)に登録する
- マネージャからhandlerを作る
- handlerからopenerを作る(build_opener)
- openerをインストールする(install_opener)
- urlopenでURLを開く
となる。
なんかややこしい気がする。たぶん、最初にopenerをインストールしてしまえば、後は認証については気にしなくてもいいのが利点なんだろう。
使い方
$ python basic.py Username: mzp Password: **** <?xml version="1.0" encoding="UTF-8"?> <statuses type="array"> <status> <created_at>Wed Apr 29 10:38:49 +0000 2009</created_at> <id>1647799957</id> <text>あ、オブジェクト使えばいいんだ</text> <source><a href="http://coderepos.org/share/browser/lang/ruby/misc/tig.rb">tig.rb</a></source> <truncated>false</truncated> <in_reply_to_status_id></in_reply_to_status_id>
ソースコード
#! /usr/bin/python # -*- mode:python; coding:utf-8 -*- # # basic.py - # # Copyright(C) 2009 by mzp # Author: MIZUNO Hiroki / mzpppp at gmail dot com # http://howdyworld.org # # Timestamp: 2009/04/29 20:51:29 # # This program is free software; you can redistribute it and/or # modify it under MIT Lincence. # from getpass import getpass from urllib2 import * import sys mgr = HTTPPasswordMgrWithDefaultRealm() print "Username: ", user = sys.stdin.readline().strip() mgr.add_password(None,'twitter.com',user,getpass()) handler = HTTPBasicAuthHandler(mgr) install_opener(build_opener(handler)) print urlopen('http://twitter.com/statuses/user_timeline.xml').read()