User-Agent(略称UA)はHTTPリクエストヘッダーのフィールドの1つで、ブラウザ(またはクローラー、その他のHTTPクライアント)がリクエストを送信するたびにこの文字列を付加し、サーバーに「私は誰か」を伝えます——ブラウザ名とバージョン、OSとバージョン、レンダリングエンジン、デバイスタイプ、CPUアーキテクチャなどの情報が含まれます。サーバーはUAに基づいてデバイスに適したコンテンツを返すことができ、開発者はUAを使って互換性処理、トラフィック統計、クローラー識別を行うことがよくあります。
UA文字列が長く乱雑に見えるのには歴史的な理由があります:ブラウザ戦争の時代、新しいブラウザは古いブラウザのスニッフィングに基づいたウェブサイトでも正常に動作するよう、UAの中で自分が古いブラウザであると主張していました(例えばChromeはSafariのマーカーを付け、SafariはGeckoのマーカーを付けていました)。何層にも重なることで、現代のUA文字列には多数の歴史的な互換性識別子が含まれるようになり、人間が直接読むのが困難になっています。UAパーサーの役割は、これらの複雑な文字列を分解し、本当に有用な情報を抽出することです。
主要ブラウザにはそれぞれ固定のフォーマットと識別子があります:ChromeはChrome/バージョン番号を含み、FirefoxはFirefox/バージョン番号を含み、SafariはVersion/バージョン番号とSafari/マーカーを含み、新しいEdgeはEdg/で識別され、WeChat内蔵ブラウザはMicroMessenger/で識別されます。OSにも対応するマーカーがあります:WindowsはWindows NT+バージョン、macOSはMac OS X+バージョン、iOSはCPU iPhone OS+バージョン、AndroidはAndroid+バージョンを使用します。正規表現でこれらのキーワードをマッチングすることで正確に識別できます。
レンダリングエンジンはブラウザがHTML/CSSを解析しページをレンダリングするためのコアです:Chromium系ブラウザ(Chrome、Edge、Operaなど)はBlinkエンジンを使用し、SafariはWebKitを使用し、FirefoxはGeckoを使用し、古いIEはTridentを使用しています。レンダリングエンジンを知ることは、CSS/JS互換性の問題を判断するのに役立ちます——同じBlinkエンジンであればChromeとEdgeのレンダリング動作は高度に一致します。
クローラー検出はUA解析の重要な用途の1つです。検索エンジンクローラー(Googlebot、Bingbot、Baiduspider)、SEOツールクローラー、悪意あるクローリングプログラム、コマンドラインツール(curl、wget)、スクリプトライブラリ(Python requests)はいずれもUAに自身の識別子を付けるか、非常にシンプルなUA文字列を使用します。bot、crawler、spider、curlなどのキーワードをマッチングすることで、人間以外のアクセストラフィックをすばやく識別できます。
デバイスタイプ識別は主にモバイル識別子に依存します:Mobile、iPhone、Androidなどのキーワードを含むものはスマホ;iPad、Tablet、Kindleなどを含むものはタブレット;その他はデスクトップPCです。ただし、UAは偽装可能(User-Agent Spoofing)であることに注意が必要です。悪意あるクローラーは正常なブラウザになりすますことができるため、厳格なクローラー対策には他の特徴も組み合わせる必要があり、UA解析はあくまで初步的な判断として使用してください。
CPUアーキテクチャ情報は今日ますます重要になっています:Apple MシリーズMacはARM64アーキテクチャを使用し、従来のIntel Macはx64を使用しています;Windows PCにはx64とARM64の両方が存在します(Snapdragon搭載PCなど);スマートフォンはすべてARM64です。ソフトウェアをダウンロードする際にUAからユーザーのアーキテクチャを判断できれば、対応するインストーラー(例えば.dmgでIntel/Mac版を区別、.exeでx64/ARM64版を区別)を直接提供でき、ユーザー体験が大幅に向上します。
UA解析には限界があることに注意が必要です:UAはユーザーやプラグインによって改変・偽装される可能性があり、新しいバージョンのブラウザがUAフォーマットを変更すると正規表現が無効になることがあります。Windows 11はNT 10.0バージョン番号を踏襲しているためUAからWin10/Win11を区別できず、iOS上のすべてのサードパーティブラウザ(Chrome、Firefox for iOS)はWebKitエンジンの使用が強制されているためUAにSafariマーカーが付きます。本ツールの解析は開発デバッグ、ログ解析などのほとんどのシナリオに適していますが、セキュリティ要件が極めて高いシナリオではIP、TLSフィンガープリントなどの多角的な判断と組み合わせてください。