pythonでモバイル・タブレット・PCを判定する

pythonのライブラリuser-agentsを使って、ユーザがモバイル・タブレット・PCのどれでアクセスしたかを判別する方法を紹介します。

user-agentsの基本的な使い方

まずはpipでインストールします。

$ pip install user-agents 

そしてモジュールをインポートし、parse関数にユーザエージェントを与えるだけで、ユーザエージェントに関する情報を取得できます。

from user_agents import parse as parse_ua
uastring_iphone = 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H143 Safari/600.1.4'

# ユーザエージェントの情報を取得します。
ua = parse_ua(uastring_iphone)

あとは、ユーザエージェントに関する情報の属性にアクセスすると、OSなどの情報を引っ張ってこれます。

print('device: {0}'.format(ua.device))  # device: Device(family='iPhone')
print('device.family: {0}'.format(ua.device.family))  # device.family: iPhone
print('os: {0}'.format(ua.os))  # os: OperatingSystem(family='iOS', version=(8, 4), version_string='8.4')
print('os.family: {0}'.format(ua.os.family))  # os.family: iOS

user-agentsでモバイルなどを判別

parse関数で取得したユーザエージェントの情報には、is_mobileis_tabletis_pcといったプロパティが用意されています。これらを使って、Boolean型の結果を取得することができます。

from user_agents import parse as parse_ua
uastring_mobile = 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H143 Safari/600.1.4'
uastring_tablet = 'Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19'
uastring_pc = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0'

# モバイル
ua = parse_ua(uastring_mobile)
print('is_mobile: {0}'.format(ua.is_mobile))  # is_mobile: True
print('is_tablet: {0}'.format(ua.is_tablet))  # is_tablet: False
print('is_pc: {0}'.format(ua.is_pc))  # is_pc: False

# タブレット
ua = parse_ua(uastring_tablet)
print('is_mobile: {0}'.format(ua.is_mobile))  # is_mobile: False
print('is_tablet: {0}'.format(ua.is_tablet))  # is_tablet: True
print('is_pc: {0}'.format(ua.is_pc))  # is_pc: False

# PC
ua = parse_ua(uastring_pc)
print('is_mobile: {0}'.format(ua.is_mobile))  # is_mobile: False
print('is_tablet: {0}'.format(ua.is_tablet))  # is_tablet: False
print('is_pc: {0}'.format(ua.is_pc))  # is_pc: True

ユーザエージェントが不明の場合

parse関数に与えたユーザエージェントが不明な場合、OS・デバイスは「Other」となります。

# coding: utf-8
from user_agents import parse as parse_ua
uastring_unknown = 'foo'
ua = parse_ua(uastring_unknown)
print('device: {0}'.format(ua.device))  # device: Device(family='Other')
print('os: {0}'.format(ua.os))  # os: OperatingSystem(family='Other', version=(), version_string='')

また、is_mobileis_tabletis_pcは全てFalseになります。

from user_agents import parse as parse_ua
uastring_unknown = 'foo'
ua = parse_ua(uastring_unknown)
print('is_mobile: {0}'.format(ua.is_mobile))  # is_mobile: False
print('is_tablet: {0}'.format(ua.is_tablet))  # is_tablet: False
print('is_pc: {0}'.format(ua.is_pc))  # is_pc: False

この記事が役に立った場合、シェアしていただけると励みになります!!