1. ホーム
  2. python

[解決済み] Flaskでユーザーエージェントを取得するには?

2022-08-31 16:18:47

質問

Flaskでユーザーエージェントにアクセスしようとしているのですが、それに関するドキュメントが見つからないか、教えてくれないのです。

どのように解決するのですか?

from flask import request
request.headers.get('User-Agent')

また request.user_agent オブジェクトを使用することもできます。このオブジェクトには、useragent 文字列に基づいて作成された次の属性が含まれます。

  • プラットフォーム (windows、linux、macos など)
  • ブラウザ (クローム、ファイアフォックス、ミッシーなど)
  • バージョン
  • 言語
  • 文字列 ( == request.headers.get('User-Agent') )

注意:werkzeug 2.0 では、パースされたデータである request.user_agent のパースデータは非推奨です。もし詳細を取得し続けたいなら、カスタム UserAgent を実装し、それを user_agent_class として、カスタム Request サブクラスとして設定されます。 request_class に設定されています。 Flask のインスタンス(またはサブクラス)に追加します。

を使った実装の例です。 ua-parser :

from ua_parser import user_agent_parser
from werkzeug.user_agent import UserAgent
from werkzeug.utils import cached_property


class ParsedUserAgent(UserAgent):
    @cached_property
    def _details(self):
        return user_agent_parser.Parse(self.string)

    @property
    def platform(self):
        return self._details['os']['family']

    @property
    def browser(self):
        return self._details['user_agent']['family']

    @property
    def version(self):
        return '.'.join(
            part
            for key in ('major', 'minor', 'patch')
            if (part := self._details['user_agent'][key]) is not None
        )