blogPHPでWEB+DBシステムの開発をやっています。Engine(GAE)からHTTPアクセスするときのUser-Agentについて。GAE上のアプリケーションがHTTPアクセスする際にどのようなUser-Agentになるかを調べてみました。GAE+PythonからHTTPアクセスするには幾つかの方法があるのですが、urllib2を使う方法とGAEのモジュールであるurlfetchモジュールを使う方法について見ています。urllib2urllib2でアクセスした場合のUser-Agentです。XXXX」が付加されていることですね。アプリケーションIDはGAE上の各アプリケーションに割り振るIDで一意となります。GAE上のあるアプリケーションからのアクセスを制御(許可、拒否等)したい場合は、このアプリケーションIDを見れば可能です。XXXX),gzip(gfe)"urlfetchurlfetchでアクセスした場合です。urllib2と比較すると「Python-urllib/2.5」が無い他は同じですね。XXXXX),gzip(gfe)"User-Agentを変更した場合urllib2でもurlfetchでもUser-Agentを変更することができるので、変更してアクセスしてみました。'CakePHP1.2.6'})結果はどちらも変更したUset-Agentにはなっているのですが、AppEngine-Google以降の文字列が付加されています。appid:も付いているので、User-Agentを変更していてもアプリケーションIDによるアクセス制御は可能です。XXXXX),gzip(gfe)"urllib2でUser-Agentを変更しない場合に「Python-urllib/2.5」が付くのは内部的にUser-Agentを設定しているだけの話です。アクセス制御はアプリケーションIDでGAEではサーバ環境を全ユーザで共有するので、IPアドレスでの制限はできません。(GAE全体からのアクセスを制限することはできるかもしれませんが。)ただアプリケーションIDであればアプリケーション固有に付いている値なので、これを使えば特定のアプリケーションに対してだけ制御が可能です。User-AgentへのアプリケーションID付与(appid:)はGAE自体が行うので今のところ信頼して問題無いと思います。時間が経つ毎に進化していくGAEですが、こういったところも気が利いていますね。