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

Google App EngineのUser-Agent

この記事の所要時間: 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を見れば可能です。

"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 サーバ

Pocket

follow us in feedly

トラックバック: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 […]

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

検索
フィード
メタ情報

Return to page top