ユーザーエージェントでユーザーを判別していたけどできなくなった。どうするの?
ユーザーエージェントは基本的に使えなくなってしまいました。
プライバシー保護の強化、ユーザーエージェント偽装などの影響で、Google Chromeなどをはじめとしたブラウザでユーザーエージェントの利用ができなくなってしまいました。
ユーザーエージェントを利用して、ユーザーのブラウザの種類などを判別していた人も多かったのではないでしょうか。
不正利用などのチェックに利用していた場合、あそれに代わる代替策がなく、大変苦労することになりました。
では実際、利用できなくなったとはどうなったのかというと、ユーザーエージェントを取得するコード自体はエラーとはならず、今まで通り取得できるのですが、端末名が取得できなくなっています。
ではどうしたらいいのか?
ユーザーエージェントに代わって
「User-Agent Client Hints」
というものが新しく提供されています。これによりウェブサイトが必要な情報を段階的に要求し、ユーザーの特定を困難にし、デバイスに関する過剰な情報の収集を防ぐ目的があるそうです。
それではUser-Agent Client Hintsを使用するサンプルです。
User-Agent Client Hintsの使用はJavaScriptのNavigator APIを利用します。
以下、サンプルです。
if (navigator.userAgentData) {
navigator.userAgentData.getHighEntropyValues(['model']).then(ua => {
console.log(ua.model);
}).catch(error => {
console.error("Failed to get device model: ", error);
});
} else {
console.log("User-Agent Client Hints are not supported in this browser.");
}
navigator.userAgentDataオブジェクトを利用してユーザーエージェントを取得します。
navigator.userAgentDataが使えるかどうかを最初にチェックし使える場合は、modelで端末名を取得することができます。
User-Agent Client Hintsは、Google Chromeや一部の他の最新のブラウザでサポートされていますが、古いブラウザでは非対応の場合が多いので、取得できない場合にどうするかの検討が必要ですが、取得できない場合はどうしようもないといったのが現状ではないでしょうか。