Web サイトからの Microsoft Edge の検出
Microsoft Edge を使用すると、Web サイトでユーザー エージェント情報を取得できます。 ユーザー エージェント情報を使用して、各ユーザーのブラウザーの Web ページを正しく表示します。 ブラウザーは、Web サイトがブランド、バージョン番号、ホスト オペレーティング システムなどのブラウザー情報を検出するためのメカニズムを提供します。
ユーザー エージェント クライアント ヒント は、ブラウザー情報を取得するための最良の方法です。 以下 の「ユーザー エージェント クライアント ヒント」を参照してください。
ユーザー エージェント文字列 は、ブラウザー情報を取得するための従来の方法です。 これらは古く、Web サイトの互換性の問題を引き起こした歴史があります。 以下 の「ユーザー エージェント文字列」を参照してください。
ブラウザーに基づいてユーザーにさまざまなエクスペリエンスを提供したい場合があります。 たとえば、サイトで使用するように Microsoft Edge または別のブラウザーを構成する方法に関する手順を含める場合は、ブラウザーを検出して適切なコンテンツを表示できます。
ブラウザー検出のメカニズム:
メカニズム | サーバー側 | クライアント側 |
---|---|---|
ユーザー エージェント クライアント ヒント (推奨) |
Sec-CH-UA HTTPS ヘッダー |
navigator.userAgentData JavaScript メソッド |
ユーザー エージェント文字列 (レガシ) |
User-Agent HTTPS ヘッダー |
navigator.userAgent JavaScript メソッド |
機能の検出
Microsoft では、ブラウザーを検出するのではなく、可能な限りブラウザーで 機能がサポートされているかどうかを 検出することをお勧めします。
ブラウザーを検出する必要がある場合は、次のように、User-Agent クライアント ヒント と機能検出を使用することをお勧めします。
クライアント ヒントの User-Agent
Microsoft Edge では、User-Agent クライアント ヒントがサポートされています。
User-Agent クライアント ヒントは、Web ページがブラウザー名、バージョン番号、プラットフォームなどのブラウザー情報を検出できるようにしながら、プライバシーに関する問題に対処する方法です。 間もなく、User-Agent 文字列は固定され、さまざまなブラウザーによって非推奨になります。 たとえば、Chrome プラットフォームの状態サイトでは、「 機能: ユーザー エージェントの文字列情報を減らす」の変更について説明します。
次の場合 User-Agent クライアント ヒントを使用します。
- 新しいブラウザー アクティビティが想定されるユーザーからのかどうかを判断します。
- ユーザーがこのサイトを初めて使用する場合は、ヒントまたは手順をカスタマイズします。
User-Agent クライアント ヒントを使用して次の手順を実行しないでください。
- サポートされていないブラウザーをブロックします。
- サイト上の機能へのアクセスを制限します。
詳細については、「 W3C コミュニティ グループ ドラフト レポート: User-Agent クライアント ヒント」の仕様を参照してください。
User-Agent クライアント ヒント HTTPS ヘッダー
Microsoft Edge は、HTTPS 要求をサーバーに送信すると、クライアント ヒント ヘッダー User-Agent 低エントロピのセットを送信します。 詳細については、「 低エントロピ ヒント テーブル」を参照してください。 サーバーでブラウザーに関するより詳細な情報が必要な場合、その応答にはヘッダーが Accept-CH
含まれます。 その応答ヘッダーの値は、サーバーがブラウザーから必要とするすべてのクライアント ヒント要求ヘッダー (など Accept-CH: Sec-CH-UA-Full-Version,Sec-CH-UA-Platform-Version
) のコンマ区切りのリストです。 サーバーに対する次の Microsoft Edge HTTPS 要求には、指定された User-Agent クライアント ヒント ヘッダーが含まれます。
既定では、Microsoft Edge は、、、および Sec-CH-UA-Platform
要求ヘッダーを次の形式で送信Sec-CH-UA
Sec-CH-UA-Mobile
します。
Sec-CH-UA: "Chromium";v="92", "Microsoft Edge";v="92", "Placeholder;Browser Brand";v="99"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows"
次の表は、使用可能なすべてのヒント要求ヘッダーとサンプル値を示しています。
User-Agent 要求ヘッダー | 応答値 User-Agent 例 |
---|---|
Sec-CH-UA |
"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120" |
Sec-CH-UA-Mobile |
?0 |
Sec-CH-UA-Full-Version |
120.0.2210.91 |
Sec-CH-UA-Platform |
Windows |
Sec-CH-UA-Platform-Version |
15.0.0 |
Sec-CH-UA-Arch |
x86 |
Sec-CH-UA-Bitness |
64 |
Sec-CH-UA-Model |
Surface Pro |
User-Agent クライアント ヒントは、 を使用して HTTPS
セキュリティで保護された接続経由でのみ送信されます。
User-Agent クライアント ヒント JavaScript API
クライアント 側 User-Agent JavaScript を使用して、クライアント ヒントにアクセスできます。 既定 navigator.userAgentData
を呼び出すと、次の応答が返されます。
{
"brands": [
{
"brand": "Not_A Brand",
"version":"8"
},
{
"brand": "Chromium",
"version":"120"
},
{
"brand": "Microsoft Edge",
"version":"120"
}
],
"mobile": false,
"platform": "Windows"
}
など platform
、より詳細な情報を要求を送信するには、次のコードを使用します。
navigator.userAgentData.getHighEntropyValues([
"architecture",
"platform",
"platformVersion",
"uaFullVersion"
]).then(ua => {
console.log(ua)
});
応答の形式は次のとおりです。
{
"architecture": "x86",
"brands": [
{
"brand": "Not_A Brand",
"version": "8"
},
{
"brand": "Chromium",
"version": "120"
},
{
"brand": "Microsoft Edge",
"version": "120"
}
],
"mobile": false,
"platform": "Windows",
"platformVersion": "15.0.0",
"uaFullVersion": "120.0.2210.91"
}
詳細については、MDN の NavigatorUAData: getHighEntropyValues() メソッド に関するページを参照してください。
platformVersion ヒント
ヘッダーのUser-Agent
オペレーティング システムバージョントークンは、Windows 11用に更新されておらず、引き続き を報告しますWindows NT 10.0
。
Windows 10とWindows 11を区別するには、Microsoft Edge でクライアント ヒントをplatformVersion
要求します。 と を含む1.0.0
値は12.0.0
Windows 10のリリースを表し、以降の14.0.0
値はWindows 11のリリースを表します。
User-Agent クライアント ヒントと機能検出の組み合わせ
User-Agent クライアント ヒントと 機能検出 を組み合わせることは、互換性のある Web コンテンツを配信するための効果的な方法です。 Microsoft では、次のパターンを使用することをお勧めします。
- コードの保守性を向上させます。
- コードの脆弱性を軽減します。
- User-Agent 文字列への変更によるコードの破損を減らします。
Chrome に似たブラウザーをチェックする必要がある場合は、Microsoft Edge を強化するChromium
エンジンである 、 を検出することをお勧めします。
ブランドを確認し、影響をChromium
受けるすべてのChromium ベースのブラウザーに検出を適用するには、次の方法を使用します。
function isChromium() {
for (brand_version_pair of navigator.userAgentData.brands) {
if (brand_version_pair.brand == "Chromium"){
return true;
}
}
return false;
}
上記の方法を使用して、特定のインデックスでのブランドのハード コーディング チェックを回避します。 ブランド名の表示順序は、時間の経過と同時に変更される可能性があります。
機能検出を使用できない場合は、検証に既知のChromium ベースのブラウザーのハードコーディングされた一覧を使用しないでください。 ハードコーディングされたブラウザー名の例には Microsoft Edge
、 と があります Google Chrome
。 以降のバージョンのChromiumバグの修正は避ける必要があり、影響を受けるブラウザーの検出が困難であるため、機能検出を利用できない場合があります。
User-Agent 文字列
User-Agent 文字列は古く、Web サイトの互換性の問題を引き起こした長い歴史があります。
可能な限り、Microsoft では、User-Agent 文字列に基づく Microsoft Edge ブラウザー検出ロジックの使用を最小限に抑えることが推奨されます。 ブラウザーを検出する理由が十分にある場合、Microsoft Edge チームは、 ユーザー エージェント クライアント ヒント をプライマリ検出ロジックとして使用することをお勧めします。 また、ユーザー エージェント クライアント ヒント を使用すると、ブラウザー検出コードの複雑さが軽減されます。
レガシ参照の場合は、次の情報が User-Agent 文字列に含まれていました。
Windows では、HTTP 要求ヘッダーには次のものが User-Agent
含まれます。
Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/120.0.0.0
Safari/537.36
Edg/120.0.0.0
Android では、HTTP 要求ヘッダーには次のものが User-Agent
含まれます。
Mozilla/5.0 (Linux; Android 10; K)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/120.0.0.0
Mobile Safari/537.36
EdgA/120.0.0.0
メソッドからの navigator.userAgent
応答値は、次の形式を使用します。
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0"
プラットフォーム識別子はオペレーティング システムに基づいて変更され、バージョン番号は時間の経過と同時に増加します。 形式は、Chromium ユーザー エージェントと同じであり、最後に新Edg
しいトークンが追加されます。 Microsoft は、以前に Edg
EdgeHTML に基づく従来の Microsoft Edge ブラウザーで使用されていた文字列による Edge
互換性の問題を回避するために、トークンを選択しました。 トークンは Edg
、iOS と Android に使用される 既存のトークン とも一致します。
さまざまなプラットフォームでの Microsoft Edge の識別子
デスクトップ オペレーティング システムでは、Microsoft Edge は通常、User-Agent 文字列内のトークンによって Edg
識別されます。 ただし、一部のデバイス プラットフォームでは、次のように、Microsoft Edge 用の別のトークンが使用されます。
プラットフォーム | 識別子トークン |
---|---|
デスクトップ (Windows/Mac/Linux) | Edg |
iPhone/iPad | EdgiOS |
Android (モバイル/タブレット) | EdgA |
Microsoft Edge 従来版はサポートされなくなりました。 詳細については、「Microsoft Edge 従来版」セクションを参照してください。
User-Agent 文字列を展開されたブラウザー名にマップする
User-Agent 文字列トークンを、コードで使用する人間が判読できるブラウザー名にマップします。 この方法は、Web 全体で一般的です。 トークンをEdg
ブラウザー名にマップする場合、Microsoft では、従来の Microsoft EdgeHTML ブラウザーで使用される名前とは異なる名前を使用して、Chromium ベースのブラウザーに適用されない従来の回避策を誤って適用しないようにすることをお勧めします。
User-Agent オーバーライド
Web サイトで Microsoft Edge ユーザー エージェントが認識されない場合があります。 その結果、Web サイトの一連の機能が正しく動作しない可能性があります。 問題の種類について Microsoft に通知されると、Microsoft はユーザー (Web サイトの所有者) に連絡し、更新されたユーザー エージェントについて通知します。
Microsoft によって報告された問題に対処するために、Web サイトのユーザー エージェント検出ロジックを更新してテストするために、さらに時間がかかる場合があります。 ユーザーの互換性を最大化するために、Microsoft Edge Betaチャネルと安定チャネルでは、ユーザー エージェントのオーバーライドの一覧が使用されます。 Web サイトを更新するときに、ユーザー エージェントのオーバーライドを使用します。 ユーザー エージェントのオーバーライドの一覧は、Microsoft によって提供されます。
オーバーライドでは、特定の Web サイトの既定のユーザー エージェントではなく、Microsoft Edge が送信する新しいユーザー エージェントの値を指定します。 現在適用されているユーザー エージェントのオーバーライドの一覧を表示するには:
Microsoft Edge Betaまたは安定したチャネルを開きます。
edge://compat/useragent
に移動します。
Microsoft Edge Canary チャネルと Dev チャネルは、現在、ユーザー エージェントのオーバーライドを受け取りません。 Microsoft Edge Canary および Dev チャネルには、既定の Microsoft Edge ユーザー エージェントを使用する環境が用意されています。 Microsoft Edge Canary チャネルと Dev チャネルを使用して、既定の Microsoft Edge ユーザー エージェントによる Web サイトの問題を再現します。
Microsoft Edge Betaまたは安定チャネルでユーザー エージェントのオーバーライドをオフにするには:
コマンド プロンプトを開きます。 たとえば、Windows 検索テキスト ボックスに 「cmd 」と入力し、 コマンド プロンプト アプリを選択します。
次のコードをコピーします。
--disable-domain-action-user-agent-override
コピーしたコードを使用して、次のように Microsoft Edge アプリを実行します。
{path/to/microsoft/edge.ext} --disable-domain-action-user-agent-override
Microsoft Edge レガシ
従来のブラウザーに関する考慮事項:
Microsoft Edge 従来版 ブラウザーはサポートされなくなりました。 Microsoft Edge 従来版を置き換えるには、ブログ記事「新しい Microsoft Edge」を参照してください。
Microsoft Edge 従来版はWindows 10でのみ使用できます。
この記事で説明するすべての User-Agent メカニズムのうち、Microsoft Edge 従来版でサポートされている唯一のブラウザー固有のメカニズムは、User-Agent 文字列です。
Microsoft Edge 従来版の User-Agent 文字列には、トークンが
Edge
含まれています。Microsoft Edge 従来版 User-Agent文字列の完全な形式の例:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582