Home > Google App Engine(GAE) | Python > Google App EngineのUser-Agent

Google App EngineのUser-Agent

  • 2010-02-16 (火) 10:55
  • Google App Engine(GAE) | Python
  • このエントリーをはてなブックマークに追加
この記事の所要時間: 354

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を見れば可能です。

CODE:
  1. "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を変更することができるので、変更してアクセスしてみました。

PYTHON:
  1. # -*- coding: utf-8 -*-
  2. url = "http://www.exaple.com/"
  3.  
  4. # urllib2
  5. import urllib2
  6. opener = urllib2.build_opener()
  7. opener.addheaders = [('User-agent', 'PHP5.3.2')]
  8. try: opener.open(url)
  9. except: pass
  10.  
  11. # urlfetch
  12. from google.appengine.api import urlfetch
  13. urlfetch.fetch(url, headers={'User-Agent': 'CakePHP1.2.6'})

結果はどちらも変更したUset-Agentにはなっているのですが、AppEngine-Google以降の文字列が付加されています。もちろんappid:も付いているので、User-Agentを変更していてもアプリケーションIDによるアクセス制御は可能です。

urllib2

CODE:
  1. "PHP5.3.2 AppEngine-Google; (+http://code.google.com/appengine; appid: XXXXX),gzip(gfe)"

urlfetch

CODE:
  1. "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
http://www.1x1.jp/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 [...]

Home > Google App Engine(GAE) | Python > Google App EngineのUser-Agent

検索
フィード
メタ情報

Return to page top