速報

imgproxyのICO処理にコード実行のおそれ|4.0.16だけでは残る問題を確認

CATEGORY

【JavaScript】ユーザーエージェントからブラウザの種類を取得する

※本ページのリンクにはプロモーションが含まれています。

【JavaScript】ユーザーエージェントからブラウザの種類を取得する

目次

本記事では、JavaAScriptでユーザーエージェントからブラウザの種類を取得する方法をご紹介しています。

Javascriptでブラウザの種類を取得して処理をしたいんだけど、どうすればいいのかな?

上記の疑問にお答えします。

では、解説していきます。

スポンサーリンク

ブラウザの種類はユーザーエージェントから取得できる

ブラウザの種類はユーザーエージェントという識別子から取得することができます。ユーザーエージェントとは、Webページを閲覧する際にブラウザからサーバーに送られるユーザー情報を持った識別子です。ユーザーエージェントは様々な情報を持っており、識別子の中にはブラウザの種類やバージョンも含まれています。そのため、ユーザーエージェントを取得することで、ブラウザの種類を知ることができます。

ユーザーエージェントは、Navigatorオブジェクトが保持しています。下記の方法でNavigatorオブジェクトからユーザーエージェントを取得することができます。

window.navigator.userAgent;

主要ブラウザのユーザーエージェントを見てみる

下記は日本における主要ブラウザのユーザーエージェントです。IE、Edge、Chrome、FirefoxはWindows環境で取得、SafariはMac環境で取得したものになります。

IE Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; Zoom 3.6.0; rv:11.0) like Gecko
Edge 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.19041
Chrome Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.41 Safari/537.36
Firefox Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0
Safari Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15

お気づきの方もいらっしゃると思いますが、ユーザーエージェントはそれぞれのブラウザ名だけを持っているだけではありません。Edgeを見ていただくと、ユーザーエージェントの中にChromeやSafariの情報も含まれています。ユーザーエージェントからブラウザ名を取得する場合、文字列を検索することになります。ですので実際に取得することができるユーザーエージェントの中身を知っておくことが大切です。

スポンサーリンク

ブラウザの種類を取得する

上記ユーザーエージェントの値を考えながら、処理を作っていきます。

例えば、アクセス元のブラウザがChromeであるかを判定する場合、下記の文字列がユーザーエージェントに含まれていればChromeだと判定できます。

  • Chrome
  • Safari

ただ、Edgeのユーザーエージェントも同じ値を持っているため、Edgeは除外するようにしなければなりません。

文字列の中に特定の値が含まれているか検索するにはindexOfを使います。indexOfはある文字列の中に指定した値が含まれていれば、値があるインデックスを返します。含まれていなければ「-1」を返すので、それを使って処理を作成します。

IE

let agent = window.navigator.userAgent.toLowerCase();

if(agent.indexOf('trident') !== -1){ alert('IEからのアクセスです'); }

Edge

let agent = window.navigator.userAgent.toLowerCase();

if((agent.indexOf('edge') !== -1) && (agent.indexOf('chrome') !== -1) && (agent.indexOf('safari') !== -1)){ alert('Edgeからのアクセスです'); }

Chrome

let agent = window.navigator.userAgent.toLowerCase();

if((agent.indexOf('chrome') !== -1) && (agent.indexOf('safari') !== -1) && (agent.indexOf('edge') === -1)){ alert('Chromeからのアクセスです'); }

Safari

let agent = window.navigator.userAgent.toLowerCase();

if((agent.indexOf('safari') !== -1) && (agent.indexOf('chrome') === -1) && (agent.indexOf('edge') === -1)){ alert('Chromeからのアクセスです'); }

Firefox

let agent = window.navigator.userAgent.toLowerCase();

if(agent.indexOf('firefox') !== -1){ alert('Firefoxからのアクセスです'); }

以上でユーザーエージェントから主要ブラウザの種類を取得することができます。

最後に

普段はコピペで済ませることが多いブラウザ種類の取得処理ですが、別々に取得する方法を知っておくとより詳細なブラウザの判定ができるようになるのでおすすめです!

以上、JavaScriptでユーザーエージェントからブラウザの種類を取得する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、ヒアリングや進行管理から、コーディング、CMSの構築、システム開発、サーバーの構築・保守・運用まで、Webサイト制作の工程を幅広く担当しています。Webサイトは、これまでに100以上の構築・保守を手がけてきました。

個人でもWebサイトの制作・改修やWebアプリの開発・運用を行い、AIを活用した開発にも取り組んでいます。近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
Webサイト構築・保守・運用 / HTML/CSS / JavaScript / PHP / WordPress / サーバー構築・保守・運用 / アプリ開発 / セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

関連する記事

おすすめの書籍

キーワードから探す

スポンサーリンク