web-dev-qa-db-ja.com

Googleの奇妙なユーザーエージェントChrome

私はいくつかのJavaScriptを使用していて、GoogleChromeで奇妙なユーザーエージェントを見つけました。

私はGoogle Chrome 7.0.517.41ベータ版をUbuntuラップトップにインストールしています。これで、ユーザーエージェントはChrome /7.0.517.41に近いはずです。

しかし、それは私に示しています:

Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.41 Safari/534.7

なぜこれが起こっているのですか..インストールされているすべての拡張機能を無効にしましたが、それでも同じです。

33
Shiv Deepak

UA文字列は、(非)互換性の試みの長く悲劇的な歴史を物語っています。 Aの簡単な履歴については、たとえばこれを参照してください 。また、最近のすべてのブラウザは他の多くのブラウザのふりをしているため、UAスニッフィングは役に立たないことも明確にする必要があります。これは、ここに表示されるケースでもあります。

  • Mozilla-1990年代初頭にさかのぼる最も古い遺物
  • X11-使用されるグラフィカルインターフェイス
  • Linuxi686-OSとプロセッサの種類
  • en_US-ロケール(英語、米国)
  • AppleWebKit /534.7-実際のレンダリングエンジン
  • (GeckoのようなKHTML)-ブラウザスニッフィングの別のアーティファクト:「Gecko」はFFレンダリングエンジンであり、KHTMLは別のブラウザです
  • Chrome /7.0.517.41-実際のブラウザバージョン
  • Safari/537-「Safari」(同じエンジンを使用)をスニッフィングするスクリプトに対するさらに別のアーティファクト

要するに、いくつかの壊れたサイトは、「Mozilla/Firefox/Webkit /何でも許可する」ことが賢明なポリシーであると想定していました。次に、ブラウザはこれらの人工的な障壁を回避するためにその起源について嘘をつき始めました。 UA文字列はその結果です:無駄なゴミでいっぱいのブロートウェア。

50
Piskvor

基本的に、Mozillaは「Mozilla互換」の略で、「KHTML、Geckoのような」はレンダリングエンジンを表します。

基本的に、Chromeのユーザーエージェント文字列は、開発者に自分自身を説明する方法として、「私はMozillaと互換性があり、私のレンダリングエンジンはGeckoのようなものです」と言っています。

ほとんどの(すべてではないにしても)ブラウザは、Mozilla Foundationとの提携に関係なく、一種のレガシーなものとしてMozilla互換であると認識します。はい、InternetExplorerですら。

文字列全般の詳細については、次のURLをご覧ください。 Mozillaの開発者センター

また、ユーザーエージェント文字列に基づいて開発している場合は、そうしないでください。あなたは傷ついた世界にいるだけです:ブラウザは機能を実装するためにアップグレードされ、ユーザーエージェントのスニフはまだそれらを除外するかもしれません、ユーザーエージェントの文字列は偽装される可能性があります、そして古き良きOpera古いバージョンではInternetExplorerとして自分自身を報告します。

代わりに、 機能検出 を使用して、使用しようとしている機能が特定のブラウザーに存在するかどうかを判断し、それを使用するかどうかを決定します。

8
ajm

ブラウザが自分自身について「嘘をついている」という歴史的な理由があります。これの主な理由は、ユーザーエージェントのスニッフィングでした。 OperaはOperaとして識別される唯一のブラウザであり、他のすべてのブラウザはMozilla /5.0または古いブラウザのMozilla/4.0を使用しています。

これについて知っておくべき唯一のことは次のとおりです。ユーザーエージェント文字列は信頼できません。代わりに機能検出をお勧めします。

3
gblazex

前述のように、ユーザーエージェント文字列はそのようなものです。

あなたはそれを明確に言っていませんが、useragent文字列を使用してユーザーのブラウザを検出することを計画している場合は、それを行うためにいくつかの良いコードを使用してください(つまり、急いで自分でコーディングしないでください、あなたはそれを正しく理解しません)。

これは私が以前に数回使用した素敵なものです: ブラウザ検出

1
mdrg