Pythonでプロキシを越える
お世話になっております。
会社のネットワークは、プロキシサーバーを経由しないと外部サイトを参照できないようになっています。セキュリティ対策としては有効ですが、クラウドの恩恵を受けるには一工夫が必要です。今日は、python-twitter*1でプロキシサーバー突破に成功しました。
単純にプロキシサーバーを突破するには、こちらを御覧下さい。
しかし、残念ながらこの方法はpython-twitterには使えません。python-twitterは自分でurllib2.OpenerDirectorを構成しているからです。twitter.Api._GetOpener()が返すOpenerDirectorへ、ProxyHandlerとProxyBasicAuthHandlerを追加しなければいけません。対応したプログラムを以下に記載します。
# -*- coding: shift_jis -*- import twitter PROXY_SERVER = '' USER = '' PASS = '' class MyApi(twitter.Api): def _GetOpener(self, url, username=None, password=None): opener = twitter.Api._GetOpener(self, url, username, password) urllib2 = twitter.urllib2 p_h = urllib2.ProxyHandler({'http': PROXY_SERVER}) opener.add_handler(p_h) passmgr = urllib2.HTTPPasswordMgrWithDefaultRealm() passmgr.add_password(None, PROXY_SERVER, USER, PASS) a_h = urllib2.ProxyBasicAuthHandler(passmgr) opener.add_handler(a_h) return opener
オブジェクト指向をうまく使えたと思います。
これで、会社からもコンソール経由でTwitterを使えるようになりました。こっそりとつぶやけるようになったというわけです。
以上