「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Chrome、Safari、Firefox でのユーザー エージェントの削減

Chrome、Safari、Firefox でのユーザー エージェントの削減

2024 年 8 月 6 日に公開
ブラウズ:432

User Agent Reduction in Chrome, Safari & Firefox

はじめに: ユーザーエージェント削減とクライアントヒントとは何ですか?

近年、プライバシーへの懸念により、ブラウザーがユーザー エージェント文字列を処理する方法が大きく変わりました。従来、ブラウザーとデバイスの情報を識別するために使用されてきたユーザー エージェント文字列は、共有される情報の量を制限するために削減され、それによってユーザーのプライバシーが保護されています。ユーザー エージェント削減の制限に対処するために、必要な情報を共有するためのより制御されたプライバシーを尊重した方法を提供するクライアント ヒントがソリューションとして登場しました。

ブログ投稿全文はこちら

ユーザーエージェント文字列の簡単な歴史

User-Agent 文字列の歴史は、Tim Berners-Lee の WorldwideWeb から始まる、Web ブラウザの初期にまで遡ります。当初は、基本的なブラウザーとバージョン情報を提供する単純なものでした。時間が経つにつれて、オペレーティング システム、デバイスの種類などに関する詳細なデータが含まれるように進化し、Web 分析やユーザー エクスペリエンスの最適化に役立つことが判明しました。ただし、この詳細によりデバイスのフィンガープリンティングも可能になり、プライバシーの懸念が生じました。

ユーザーエージェント削減とは何ですか?

ユーザー エージェントの削減は、ユーザー エージェント文字列内の情報を最小限に抑えてユーザーのプライバシーを保護することを目的としています。特定の OS バージョンやハードウェア モデルなどのエントロピーの高い情報が削減されます。たとえば、Google の Chrome は、あまり詳細ではないユーザー エージェント文字列を報告するようになりました:

  • 以前: Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/95.2.1.0 Mobile Safari/537.36
  • 変更後: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/95.0.0.0 Mobile Safari/537.36

同様に、Firefox と Safari も独自のバージョンの User-Agent 削減を実装していますが、独自のポリシーに基づいて若干の違いがあります。

クライアントヒントはどのように機能しますか?

クライアント ヒントは、プライバシーを意識した方法で、ユーザーのデバイスとブラウザに関する特定の高エントロピー情報を要求する方法を提供します。クライアント ヒントにアクセスするには、主に 2 つの方法があります:

  1. HTTP リクエスト ヘッダー: Web サイトは、HTTP リクエスト ヘッダーを使用して、ユーザーのブラウザとデバイスに関する特定の情報をリクエストできます。これは通常、ファーストパーティのコンテキストで使用され、詳細なユーザー情報にはサードパーティのリソースではなくプライマリ Web サイトのみにアクセスできるようにします。
  2. JavaScript API: クライアント ヒントには、JavaScript 内の navigator.userAgentData オブジェクト経由でもアクセスできます。これにより、追加のヘッダーを設定せずに、アーキテクチャ、モデル、プラットフォームのバージョンなどの特定の情報に対する動的なクエリが可能になります。

クライアントヒントの実装

HTTPリクエストヘッダーの使用

HTTP ヘッダーを介してクライアント ヒントを実装するには、サーバーは HTTP 応答に適切なヘッダーを設定し、今後のリクエストにこれらのヒントを含めるようブラウザーに通知する必要があります。例えば:

Accept-CH: Sec-CH-UA-Platform-Version

ブラウザからの後続のリクエストにはプラットフォームのバージョンが含まれます:

Sec-CH-UA-Platform-Version: "14.5.0"

JavaScript APIの使用

動的アプリケーションの場合、JavaScript API は柔軟性を提供します。たとえば、getHighEntropyValues メソッドを使用する場合:

if (navigator.userAgentData) {
    navigator.userAgentData.getHighEntropyValues(['architecture', 'model', 'platformVersion'])
        .then(ua => {
            console.log(ua);
        });
}

開発者向けの推奨事項

特定のニーズに応じて、ユーザー環境データを収集するためのさまざまな方法を選択できます:

  • 機能検出: 可能な限り既存のブラウザ JavaScript API を使用します。これは、ユーザー エージェント文字列に依存するよりも信頼性が高く、将来性もあります。
  • 低エントロピー情報: デバイス タイプなどの基本的な詳細については、ユーザー エージェント文字列で十分な場合があります。
  • 高エントロピー情報: 詳細情報が必要で、ドメインを制御できる場合は、クライアント ヒントを使用します。

結論

ユーザー エージェントの削減とクライアント ヒントは、Web サイトが最適な機能に必要な情報を収集できるようにしながら、ユーザーのプライバシーを強化するための重要なステップとなります。これらのテクノロジーを理解して実装することで、開発者は詳細なユーザー データの必要性とプライバシーとパフォーマンスの考慮事項のバランスを取ることができます。

詳細については、詳細なブログ投稿をご覧ください。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/corbado/user-agent-reduction-in-chrome-safari-firefox-3g6g?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3