User_agent 的解析

User_agent 的解析

user_agents是一个Python库,通过解析(浏览器/ HTTP)用户代理字符串,提供了一种识别/检测手机,平板电脑等其他设备的简便方法。

用户代理是基于移动设备,平板电脑或PC的设备

用户代理具有触摸功能(具有触摸屏)

user_agents依靠优秀的ua-parser来实际解析原始用户代理字符串。

github:

https://github.com/selwin/python-user-agents

安装:

pip install pyyaml ua-parser user-agents
使用:

from user_agents import parse

苹果手机的user agent字符串

ua_string = ‘Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3’
user_agent = parse(ua_string)

访问用户代理的浏览器属性

user_agent.browser # returns Browser(family=u’Mobile Safari’, version=(5, 1), version_string=‘5.1’)
user_agent.browser.family # returns ‘Mobile Safari’
user_agent.browser.version # returns (5, 1)
user_agent.browser.version_string # returns ‘5.1’

访问用户代理的操作系统属性

user_agent.os # returns OperatingSystem(family=u’iOS’, version=(5, 1), version_string=‘5.1’)
user_agent.os.family # returns ‘iOS’
user_agent.os.version # returns (5, 1)
user_agent.os.version_string # returns ‘5.1’

访问用户代理的设备属性

user_agent.device # returns Device(family=u’iPhone’, brand=u’Apple’, model=u’iPhone’)
user_agent.device.family # returns ‘iPhone’
user_agent.device.brand # returns ‘Apple’
user_agent.device.model # returns ‘iPhone’

输出更好阅读的字符串版本

str(user_agent) # returns “iPhone / iOS 5.1 / Mobile Safari 5.1”
user_agents还公开了一些其他更复杂的属性,这些属性派生自上面定义的一个或多个基本属性。 到目前为止,这些属性应该可以正确识别流行的平台/设备。

目前支持这些属性:

is_mobile:用户代理是否被识别为手机(iPhone,Android手机,Blackberry,Windows Phone设备等)

is_tablet:用户代理是否被识别为平板电脑设备(iPad,Kindle Fire,Nexus 7等)

is_pc:用户代理是否被识别为运行传统的“桌面”操作系统(Windows,OS X,Linux)

is_touch_capable:用户代理是否具有触摸功能

is_bot:用户代理是否是搜索引擎爬虫/蜘蛛

如下图:

from user_agents import parse

让我们从一个旧的,非触摸的Blackberry设备开始

ua_string = ‘BlackBerry9700/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331 UNTRUSTED/1.0 3gpp-gba’
user_agent = parse(ua_string)
user_agent.is_mobile # returns True
user_agent.is_tablet # returns False
user_agent.is_touch_capable # returns False
user_agent.is_pc # returns False
user_agent.is_bot # returns False
str(user_agent) # returns “BlackBerry 9700 / BlackBerry OS 5 / BlackBerry 9700”

三星Galaxy S3

ua_string = ‘Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30’
user_agent = parse(ua_string)
user_agent.is_mobile # returns True
user_agent.is_tablet # returns False
user_agent.is_touch_capable # returns True
user_agent.is_pc # returns False
user_agent.is_bot # returns False
str(user_agent) # returns “Samsung GT-I9300 / Android 4.0.4 / Android 4.0.4”

iPad的用户代理字符串

ua_string = ‘Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10’
user_agent = parse(ua_string)
user_agent.is_mobile # returns False
user_agent.is_tablet # returns True
user_agent.is_touch_capable # returns True
user_agent.is_pc # returns False
user_agent.is_bot # returns False
str(user_agent) # returns “iPad / iOS 3.2 / Mobile Safari 4.0.4”

Kindle Fire的用户代理字符串

ua_string = ‘Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true’
user_agent = parse(ua_string)
user_agent.is_mobile # returns False
user_agent.is_tablet # returns True
user_agent.is_touch_capable # returns True
user_agent.is_pc # returns False
user_agent.is_bot # returns False
str(user_agent) # returns “Kindle / Android / Amazon Silk 1.1.0-80”

触摸功能的Windows 8设备

ua_string = ‘Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)’
user_agent = parse(ua_string)
user_agent.is_mobile # returns False
user_agent.is_tablet # returns False
user_agent.is_touch_capable # returns True
user_agent.is_pc # returns True
user_agent.is_bot # returns False
str(user_agent) # returns “PC / Windows 8 / IE 10”

原文地址:http://www.chenxm.cc/article/895.html

你可能感兴趣的:(User_agent 的解析)