- 2010-02-16 (火) 10:55
- Google App Engine(GAE) | Python
Google App Engine(GAE)からHTTPアクセスするときのUser-Agentについて。
GAE上のアプリケーションがHTTPアクセスする際にどのようなUser-Agentになるかを調べてみました。環境は、Python2.5.4 + Google App Engine SDK 1.3.1 です。
GAE+PythonからHTTPアクセスするには幾つかの方法があるのですが、urllib2を使う方法とGAEのモジュールであるurlfetchモジュールを使う方法について見ています。
urllib2
urllib2でアクセスした場合のUser-Agentです。
特徴的なのは「AppEngine-Google」が付いているのとアプリケーションIDである「appid: XXXX」が付加されていることですね。アプリケーションIDはGAE上の各アプリケーションに割り振るIDで一意となります。
もしGAE上のあるアプリケーションからのアクセスを制御(許可、拒否等)したい場合は、このアプリケーションIDを見れば可能です。
"Python-urllib/2.5 AppEngine-Google; (+http://code.google.com/appengine; appid: XXXX),gzip(gfe)"
urlfetch
urlfetchでアクセスした場合です。
urllib2と比較すると「Python-urllib/2.5」が無い他は同じですね。
"AppEngine-Google; (+http://code.google.com/appengine; appid: XXXXX),gzip(gfe)"
User-Agentを変更した場合
urllib2でもurlfetchでもUser-Agentを変更することができるので、変更してアクセスしてみました。
# -*- coding: utf-8 -*- url = "http://www.exaple.com/" # urllib2 import urllib2 opener = urllib2.build_opener() opener.addheaders = [('User-agent', 'PHP5.3.2')] try: opener.open(url) except: pass # urlfetch from google.appengine.api import urlfetch urlfetch.fetch(url, headers={'User-Agent': 'CakePHP1.2.6'})
結果はどちらも変更したUset-Agentにはなっているのですが、AppEngine-Google以降の文字列が付加されています。もちろんappid:も付いているので、User-Agentを変更していてもアプリケーションIDによるアクセス制御は可能です。
urllib2
"PHP5.3.2 AppEngine-Google; (+http://code.google.com/appengine; appid: XXXXX),gzip(gfe)"
urlfetch
"CakePHP1.2.6 AppEngine-Google; (+http://code.google.com/appengine; appid: XXXXX),gzip(gfe)"
urllib2でUser-Agentを変更しない場合に「Python-urllib/2.5」が付くのは内部的にUser-Agentを設定しているだけの話です。
アクセス制御はアプリケーションIDで
GAEではサーバ環境を全ユーザで共有するので、IPアドレスでの制限はできません。(GAE全体からのアクセスを制限することはできるかもしれませんが。)
ただアプリケーションIDであればアプリケーション固有に付いている値なので、これを使えば特定のアプリケーションに対してだけ制御が可能です。User-AgentへのアプリケーションID付与(appid:)はGAE自体が行うので今のところ信頼して問題無いと思います。
時間が経つ毎に進化していくGAEですが、こういったところも気が利いていますね。
[参考] Apacheでアクセス制限 mod_access – Apache HTTP サーバ
トラックバック:2
- このエントリーのトラックバックURL
- /blog/2010/02/gae_user_agent.html/trackback
- Listed below are links to weblogs that reference
- Google App EngineのUser-Agent from Shin x blog
- pingback from 2月16日 今日のTop「「twitterでも参加できるネット審議会」という報道について」 | P2P today ダブルスラッシュ 10-02-18 (木) 21:30
-
[…] [Google App]Google App EngineのUser-Agent | Shin x blog […]
- pingback from Falling Stars * » Blog Archive » Lodestone をスクレイピング 11-05-03 (火) 19:40
-
[…] 参考文献:Google App EngineのUser-Agent […]