ホームページ >ウェブフロントエンド >jsチュートリアル >ユーザー エージェント文字列を使用せずにユーザー ブラウザを確実に検出するにはどうすればよいですか?

ユーザー エージェント文字列を使用せずにユーザー ブラウザを確実に検出するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-25 01:16:15863ブラウズ

How Can I Reliably Detect User Browsers Without Using User Agent Strings?

ユーザー エージェント文字列を使用しないユーザー ブラウザの検出

ブラウザの種類の認識

複数のブラウザ用の拡張機能を開発する場合、次のことが重要です。ユーザーのブラウザを正確に識別して、対応するダウンロード ページにリダイレクトします。ただし、ブラウザ検出にユーザー エージェント文字列に依存することは、なりすましに対する脆弱性のため信頼性が低くなります。

正確なブラウザ検出のためのダック タイピング

これに対処するには、ダックタイピングアプローチが採用されています。ダックタイピングは、特定の署名や識別文字列に依存するのではなく、ブラウザーの動作とプロパティに焦点を当てます。この方法はより堅牢で、なりすましの影響を受けにくいです。

デモと実装

提供された JavaScript コードでは、Firefox を含む一般的なブラウザを識別するためにさまざまなチェックが実行されます。 、Chrome、Safari、Opera、IE、Edge、および Edge Chromium。各チェックではブラウザの固有の特性を検査し、正確な検出を保証します。

ブラウザ検出よりも機能検出

ブラウザ検出が必要な場合もありますが、一般的には、次の場合は機能検出を優先することをお勧めします。可能。機能検出には、特定のブラウザー機能の有無のチェックが含まれ、堅牢性と将来のブラウザー バージョンとの互換性が確保されます。

コード サンプル

次のコード スニペットは、アヒルタイピングベースのブラウザ検出方法:

// Duck-typing browser detection

var isFirefox = typeof InstallTrigger !== 'undefined';
var isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && window['safari'].pushNotification));
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
var isIE = /*@cc_on!@*/false || !!document.documentMode;
var isEdge = !isIE && !!window.StyleMedia;
var isEdgeChromium = isChrome && (navigator.userAgent.indexOf("Edg") != -1);
var isBlink = (isChrome || isOpera) && !!window.CSS;

以上がユーザー エージェント文字列を使用せずにユーザー ブラウザを確実に検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。