Python で書かれた google-app-engine のアプリケーションがあります。アプリケーションからプロキシ経由で URL をフェッチしたい。appengine からリモート URL を取得する 2 つの方法を見つけました。
- urlfetch の使用
- Python 組み込みの urllib2 を使用する
urlfetch のドキュメントを調べたところ、プロキシを設定する方法が見つかりませんでした。だから私はurllib2で遊び始めました。私はこれを試しました:
class MainHandler(webapp.RequestHandler):
def get(self):
proxy_handler = urllib2.ProxyHandler({'http': "210.246.88.46:8080",})
opener = urllib2.build_opener(proxy_handler)
resp = opener.open("http://whatsmyuseragent.com/", timeout=20)
self.response.out.write(resp.read())
しかし、appengine はプロキシを無視し、独自の IP で URL を取得しているようです。結果ページには、プロキシの ip ではなく、アプリケーションの ip が表示されます。ドキュメントでは、IP は変更できないと言われています。HTTPヘッダーのIPを手動で変更できないことを意味すると思いましたが、それでもプロキシを使用できます。
ただし、正確に知りたいのですが、appengine のプロキシ経由で URL をフェッチすることは可能かどうか、そして私の頭を壊すのをやめることは可能ですか :)。