NavigatorUAData: getHighEntropyValues() メソッド
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
メモ: この機能はウェブワーカー内で利用可能です。
getHighEntropyValues()
は NavigatorUAData
インターフェイスのメソッドで、ユーザーエージェントが返す 高エントロピー 値を格納した辞書オブジェクトで解決される Promise
を返し案す。
メモ: 「高エントロピー」「低エントロピー」という用語は、これらの値がブラウザーについて明らかにする情報の量を示します。
プロパティとして返される値は、低エントロピーであり、ユーザーを特定する可能性は低いと判断されます。
getHighEntropyValues()
が返す値は、より多くの情報を明らかにする可能性があります。
そのため、これらの値は Promise
によって取得され、ブラウザーがユーザーの許可を求めたり、他のチェックを行ったりする時間を確保することができます。
構文
getHighEntropyValues(hints)
引数
hints
-
返すべきヒントを格納した配列で、 1 つまたは複数を指定します。
"architecture"
"bitness"
"formFactor"
"fullVersionList"
"model"
"platformVersion"
"uaFullVersion"
非推奨"wow64"
返値
以下の値の一部またはすべてを含むオブジェクトに解決する Promise
です(リクエストされたヒントに基づく)。
brands
-
ブラウザーのブランドとそのバージョン (
NavigatorUAData.brands
が提供する情報と同じもの) を指定したbrand
とversion
を格納したオブジェクトの配列を返します。 なお、この情報はSec-CH-UA
ヘッダーでサーバーへ送ることができます(低エントロピークライアントヒント)。 mobile
-
ユーザーエージェントがモバイル端末で動作している場合、
true
を返します(NavigatorUAData.mobile
が提供するのと同じ情報です)。 なお、この情報はSec-CH-UA-Mobile
ヘッダーでサーバーへ送ることができます(低エントロピークライアントヒント)。 platform
-
"Windows"
のようにユーザーエージェントが動作しているプラットフォームを記述した文字列を返します(NavigatorUAData.platform
が提供する情報と同じものです)。 なお、この情報はSec-CH-UA-Platform
ヘッダーでサーバーに送信できることができます(低エントロピークライアントヒント)。 architecture
-
プラットフォームアーキテクチャを格納した文字列。例えば
"x86"
です。 なお、この情報は、Sec-CH-UA-Arch
ヘッダーでサーバーが明示的にリクエストされた後に、Accept-CH
へ送ることができることができます。 bitness
-
アーキテクチャのビット数を格納した文字列。例えば
"32"
または"64"
です。 なお、この情報は、Accept-CH
ヘッダーでサーバーが明示的にリクエストした場合、Sec-CH-UA-Bitness
ヘッダーでサーバーに送ることができます。 formFactor
-
端末のフォームファクターを格納する文字列。例えば、
"Tablet"
または「VR」など。 サーバーがAccept-CH
ヘッダーで明示的にリクエストした場合、この情報はSec-CH-UA-Form-Factor
ヘッダーでサーバーに送信される可能性があることに注意してください。 fullVersionList
-
"brand"
と"version"
というプロパティを持つオブジェクトの配列で、それぞれブラウザー名とフルバージョンを表します。 例えば、{"brand": "Google Chrome", "version": "103.0.5060.134"}, {"brand": "Chromium", "version": "103.0.5060.134"}
です。 サイトが修正されたブラウザーのリストに依存しないように、オブジェクトには意図的に不正な情報が含まれている場合があることにご注意ください。サーバーがAccept-CH
ヘッダーで明示的にリクエストした場合、この情報はSec-CH-UA-Full-Version-List
ヘッダーでサーバーに送信される場合があります。 model
-
モバイル端末のモデルを格納した文字列。例えば
"Pixel 2XL"
です。機器がモバイル端末でない場合、または機器のモデルが不明な場合はmodel
は""
になります。 なお、この情報は、Accept-CH
ヘッダーでサーバーが明示的にリクエストすれば、Sec-CH-UA-Model
でサーバーに送信することができます。 platformVersion
-
プラットフォームのバージョンを格納した文字列。プラットフォーム名自体は、常に低エントロピーのヒント
platform
として利用することができます。例えば"10.0"
です。 なお、この情報は、Accept-CH
ヘッダーでサーバーが明示的にリクエストすれば、Sec-CH-UA-Platform-Version
ヘッダーでサーバーに送ることができます。 uaFullVersion
非推奨-
完全なブラウザーバージョンを格納した文字列。例えば
"103.0.5060.134"
です。fullVersionList
に取って代わられ、非推奨です。 なお、この情報は、Accept-CH
ヘッダーでサーバーが明示的にリクエストした場合、Sec-CH-UA-Full-Version
ヘッダーでサーバーに送ることができます。 wow64
-
64 ビット版の Windows 上でユーザーエージェントのバイナリーが 32 ビットモードで実行されているかどうかを示す論理値。 この情報は、サーバーが
Sec-CH-UA-WoW64
ヘッダーで明示的にリクエストした場合、Accept-CH
ヘッダーでサーバーに送信される可能性があります。
例外
NotAllowedError
DOMException
-
ユーザーエージェントが、リクエストされた
hints
の一つまたはそれ以上を返してはいけないと判断した場合に発生します。
例
以下の例では、getHighEntropyValues()
メソッドを使用して多くのヒントがリクエストされます。
プロミスが解決すると、この情報がコンソールに表示されます。
navigator.userAgentData
.getHighEntropyValues([
"architecture",
"model",
"platformVersion",
"fullVersionList",
])
.then((values) => console.log(values));
仕様書
Specification |
---|
User-Agent Client Hints # dom-navigatoruadata-gethighentropyvalues |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- これらの値は、 HTTP リクエストヘッダー経由でも利用できます。
- 低エントロピーのクライアントヒントは自動的に送信されます。
- サーバーは
Accept-CH
ヘッダーを使用して、以降のリクエストで高エントロピーのクライアントヒントを受け取るようにリクエストすることができます。