Opera のユーザエージェント情報
さっき Opera で実験していて気付いたのだけれども、Opera バージョン 9 ではブラウザの識別の設定で完全に Mozilla として認識させる
というのと完全に Internet Explorer として認識させる
というオプションがある。これを選ぶと、User-Agent 文字列に Opera
という文字列が一切含まれなくなるため、本物の Mozilla や Internet Explorer と全く区別がつかなくなってしまう。
これまでは、たとえ Opera が Internet Exploere などに成りすましていたとしても容易に見破ることができた。User-agent 情報に Opera
という単語が必ず含まれていたからだ。しかし、新バージョンの Opera は違う。バージョン 9 では User-agent に Opera
という単語は含まれていない。よって、User-agent に Opera
が含まれているかどうかを調べるという従来のブラウザ判定法はもはや完全ではない。
では、この新しいバージョンの Opera も正しく判別するにはどうすれば良いのか。ブラウザ上で動作する JavaScript では、グローバルオブジェクトに opera というオブジェクトが存在するかどうかを調べることで、辛うじて Opera であることを見抜くことができる。しかし、HTTP ヘッダでユーザエージェントの情報を受け取ったウェブサーバでは、クライアントのブラウザが本物の Internet Explorer なのかあるいはそれに成りすました Opera なのか見分けることはもはや不可能だと思われる。ブラウザの種類に応じて異なる内容のウェブページを返すようなサイトは、うまく利用できなくなるかもしれない。
もっとも、新しい Opera で多くのサイトが利用できなくなるという混乱はおそらく生じないと思われる (というか、実際にそういう混乱は起こっていない)。というのも、従来の Opera ではユーザは User-agent 文字列を容易に変更することができたが、新しい Opera ではウェブサイトごとに一々ダイアログを開いて設定を変更する必要があるからだ。つまり、閲覧者がわざわざ設定しなければ Opera は自分が Internet Explorer であるとは名乗らない。ゆえに、ウェブサイト製作者がブラウザ判別法に手を加えなくとも、ユーザが設定を変えない限りは、Opera は Opera として正しく判別される。
……さて、自作のユーザエージェント判別も騙されるようになってしまったので、何とかしなければ。
| 固定リンク
« ユーザーがいること | トップページ | 目覚め »

コメント