0

この質問は以前ここで答えられたに違いない気がしますが、どこにも見つかりません。

Web サイトは、ユーザーが閲覧しているデバイスを検出できますか? たとえば、ユーザーがアプリの Web サイトを閲覧している場合、使用しているデバイスに応じて、Google PlayまたはApple App Storeへのリンクを表示することを認識できますか?

iPad ユーザーはChromeを使用している可能性があり、Android ユーザーはFirefoxなどを使用している可能性$HTTP_USER_AGENTがあるため、十分ではないと思います。

もちろん、JavascriptだけでなくPHPも自由に使用できます。

4

2 に答える 2

1

ユーザー エージェント文字列でデバイスまたは Web ブラウザーを検出する唯一の方法は、すべての Web ブラウザーが HTTP 1.1 プロトコルに従ってユーザー エージェントを提供する必要があることです。ユーザー エージェント文字列には、複数の製品トークンを含めることができます。慣例により、製品トークンは、アプリケーションを識別する上で重要な順にリストされています。

Mozilla ベースのブラウザーの場合、ユーザー エージェント文字列は次の形式に従います。

 MozillaProductToken (MozillaComment) GeckoProductToken *
    (VendorProductToken|VendorComment)

Gecko レイアウト エンジンを組み込んだアプリケーションには、次の形式に従うユーザー エージェント文字列が必要です。

 ApplicationProductToken (ApplicationComment) GeckoProductToken *
    (VendorProductToken|VendorComment)

どこ:

 ProductToken     :      Mozilla/ MozillaVersion
 Version          :      Major . Minor
 Comment          :      ( Platform; Security; OS-or-CPU;
                                 Localization information; 
                                 GeckoVersion)*[; Optional Other Comments] )
 Platform         :      Windows, Linux, Mac etc.
 Security         :      N for no security; 
                         U for strong security; 
                         I for weak security
 OS-or-CPU        :      Windows Version/MacOS 
 GeckoVersion     :      String starting with "rv:" followed 
                         by the Gecko version
 GeckoProductToken:      Gecko/GeckoDate
 GeckoDate        :      Date in the format YYYYMMDD

Mozilla リリース

     Mozilla/5.001 (windows; U; NT4.0; en-US; rv:1.0) Gecko/25250101

上記のブラウザと同じコードベースに基づくブランド リリース

     Mozilla/5.001 (Macintosh; N; PPC; ja; rv:1.0) Gecko/25250101 
       MegaCorpBrowser/1.0 (MegaCorp, Inc.)

ブランド変更されたリリース

      Mozilla/9.876 (X11; U; Linux 2.2.12-20 i686, en; rv:2.0) Gecko/
        25250101 Netscape/5.432b1 (C-MindSpring)

Gecko ベースのブラウザ

      TinyBrowser/2.0 (TinyBrowser Comment; rv:1.9.1a2pre) Gecko/20201231

オペラ

ユーザー文字列の仕様:

  Opera/Version (OS-or-CPU; Encryption; Language)

クロム

レンダリング エンジンとして WebKit を使用していますが、別の JavaScript エンジンを使用しています。Chrome の最初のベータ リリースであるバージョン 0.2 では、ユーザー エージェント文字列は、WebKit からのすべての情報と、Chrome バージョンの追加セクションを保持します。形式は次のとおりです。

  Mozilla/5.0 (Platform; Encryption; OS-or-CPU; Language) 
  AppleWebKit/AppleWebKitVersion (KHTML, like Gecko) Chrome/
  ChromeVersion Safari/SafariVersion

  Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, 
  like Gecko) Chrome/0.2.149.29 Safari/525.13

コンカラー

KDE Linux デスクトップ環境にバンドルされているブラウザである Konqueror は、KHTML オープンソース レンダリング エンジンに基づいています。Linux でのみ利用可能ですが、Konqueror にはアクティブなユーザー ベースがあります。最適な互換性のために、Konqueror は次のように IE の後にユーザー エージェント文字列をフォーマットすることを選択しました。

 Mozilla/5.0 (compatible; Konqueror/3.5; SunOS) KHTML/3.5.0 (like Gecko)

WebKit

2003 年、Apple は、Safari と呼ばれる独自の Web ブラウザーをリリースすると発表しました。WebKit と呼ばれる Safari レンダリング エンジンは、Linux ベースの Konqueror Web ブラウザで使用される KHTML レンダリング エンジンのフォークとして始まりました。しかし、ブラウザーが人気のあるサイトからロックアウトされないようにするにはどうすればよいでしょうか? 答えは、ブラウザが別の一般的なブラウザと互換性があることを Web サイトに納得させるのに十分な情報をユーザー エージェント文字列に入れることです。これにより、次の形式のユーザー エージェント文字列が生成されます。

 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/
 124 (KHTML, like Gecko) Safari/125.1

モバイルおよびタブレットの指標

UA 文字列のプラットフォーム部分は、Firefox が携帯電話サイズまたはタブレット デバイスで実行されているかどうかを示します。Firefox が phone フォーム ファクタを持つデバイスで実行される場合、Mobile があります。UA 文字列のプラットフォーム部分のトークン。例えば:

 Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0

 Mozilla/5.0 (Android; Tablet; rv:13.0) Gecko/13.0 Firefox/13.0

ただし、UA スニッフィングを使用してコンテンツをデバイス フォーム ファクタに向ける場合は、携帯電話のフォーム ファクタとして Mobi (「Mobi」を使用する Opera Mobile を含む) を探し、「Android」とデバイスの間の相関関係を想定しないでください。フォームファクタ。

アンドロイド

 Phone    :     Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0
 Tablet   :     Mozilla/5.0 (Android; Tablet; rv:13.0) Gecko/13.0 Firefox/13.0

Firefox OS

 Phone    :     Mozilla/5.0 (Mobile; rv:15.0) Gecko/15.0 Firefox/15.0
于 2013-03-08T17:27:10.440 に答える