近期写作业需要解析浏览器 User_Agent,查了一下,发现已经有人做好了包,在这儿记录学习的内容。
安装
pip install pyyaml ua-parser user-agents
包地址:https://pypi.org/project/user-agents/
介绍:“user_agents”是一个Python库,它通过解析(浏览器/HTTP) user agent 字符串,提供了一种简单的方法,来识别/检测手机、平板等设备及其功能。目标是可靠地检测:设备是手机,平板还是电脑;是否有触摸屏。
``ua-parser
用法
各种基本信息可以帮忙识别访问者,比如设备,操作系统,浏览器等属性
from user_agents import parse
# iPhone's user agent string
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
# Accessing user agent's browser attributes
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'
# Accessing user agent's operating system properties
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'
# Accessing user agent's device properties
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'
# Viewing a pretty string version
str(user_agent) # returns "iPhone / iOS 5.1 / Mobile Safari 5.1"
# 最后这个最好用
目前还支持这些属性:
from user_agents import parse
# Let's start from an old, non touch Blackberry device
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"
常见机型映射字典
map_phone = {'Apple': 'Apple', 'KIW-AL10': 'Huawei', 'PRA-TL10': 'Huawei', 'BND-AL00': 'Huawei', 'XiaoMi': 'XiaoMi', 'MIX 2': 'XiaoMi', 'Oppo': 'Oppo', ' Oppo': 'Oppo', 'Gionee': 'Gionee', 'Samsung': 'Samsung', 'PRA-AL00X': 'Huawei', 'PACM00': 'Oppo', 'PBET00': 'Oppo', 'R7Plusm': 'Oppo', 'PAAT00': 'Oppo', 'PBAM00': 'Oppo', 'PADM00': 'Oppo', 'PAFM00': 'Oppo', 'PBEM00': 'Oppo', 'PAAM00': 'Oppo', 'PBBM00': 'Oppo', 'PACT00': 'Oppo', 'V1809A': 'vivo', 'PBAT00': 'Oppo', 'PADT00': 'Oppo', 'BND-TL10': 'Huawei', 'PBBT00': ' Oppo', 'PBCM10': 'Oppo', 'Mi Note 3': 'XiaoMi', 'V1816A': 'vivo', 'V1732T': 'vivo', 'V1813A': 'vivo', 'V1732A': 'vivo', 'V1818A':'vivo','CAM-TL00':'Huawei','Le X620':'leshi','M6 Note':'meizu','m3 note':'meizu','M5':'meizu','M1 E ':'meizu','BLN-AL10':'Huawei','M5 Note':'meizu','PRA-AL00':'honour','LND-AL30':'honour','NEM-AL10':'honour','BND-AL10':'honour','CAM-AL00':'honour','SCL-TL00':'honour','LLD-AL30':'honour','BLN-AL20':'honour','AUM-AL20':'honour','JSN-AL00':'honour','LLD-AL10':'honour','BLN-TL10':'honour','LLD-AL20':'honour','BLN-AL40':'honour','MYA-AL10':'honour','LLD-AL00':'honour','JSN-AL00a':'honour','JMM-AL10':'honour','DLI-AL10':'honour','JMM-AL00':'honour','V1809T':'vivo','LND-AL40':'honour','PLK-AL10':'honour','MX6':'meizu','PLK-TL01H':'honour','S9':'Samsung','KIW-TL00':'honour','V1813T':'vivo'}
1. 常见的User_Agent各字段的解释
2. 请求中为什么既含有Chrome/33.0.1750.29又含有Safari/537.36字段?
因为AppleWebKit渲染引擎是苹果公司开发的,而Google公司要采用它,为了获得服务器端的正确响应,仅在Safari浏览器UA字段中增加了Chrome字段。
例如:
3. 为什么UA中包含多个浏览器的标识,如:Mozilla/5.0、Chrome/33.0.1750.29、Safari/537.36,以及渲染引擎标识?
多增加一些字段都是为了让服务器检测到它支持的浏览器标识,以便获得服务器的响应,从而提升用户体验。
附:Windows NT 版本对应关系
NT 版本 | 市场名称 | 版本 | 发行日期 | RTM Build |
---|---|---|---|---|
NT 3.1 | Windows NT 3.1 | Workstation(仅被命名为“Windows NT”), Advanced Server | 1993年7月27日 | 528 |
NT 3.5 | Windows NT 3.5 | Workstation, Advanced Server | 1994年9月5日 | 807 |
NT 3.51 | Windows NT 3.51 | Workstation, Server | 1995年5月30日 | 1057 |
NT 4.0 | Windows NT 4.0 | Workstation, Server, Server Enterprise Edition, Terminal Server, Embedded |
1996年7月29日 | 1381 |
NT 5.0 | Windows 2000 | Professional, Server, Advanced Server, DataCenter Server | 2000年2月17日 | 2195 |
NT 5.1 | Windows XP | Home, Professional, Media Center, Tablet PC, Starter, Embedded, N | 2001年10月15日 | 2600 |
NT5.2 | Windows XP | 64-bit Edition Version 2003 (此专为AMD64而开发), Professional x64 Edition |
|
3790 |
Windows Server 2003 | Standard, Enterprise, DataCenter, Web, Small Business Server | 2003年4月24日 | ||
Windows Server 2003 R2 | Standard, Enterprise, DataCenter, Web, Small Business Server | 2005年12月6日 | ||
NT6.0 | Windows Vista | Starter, Home Basic, Home Premium, Professional, Enterprise, Ultimate | 2007年1月30日 |
|
Windows Server 2008 | Foundation, Standard, Enterprise, Datacenter, Web Server, HPC Server, Itanium-Based Systems | 2008年8月27日 |
|
|
NT6.1 | Windows 7 | Starter, Home Basic, Home Premium, Professional, Enterprise, Ultimate | 2009年10月22日 |
|
Windows Server 2008 R2 | Foundation, Standard, Enterprise, Datacenter, Web Server, HPC Server, Itanium-Based Systems | 2009年10月22日 |
|
|
NT6.2 | Windows 8 | Windows 8, Windows 8 Pro, Windows 8 Enterprise, Windows RT | 2012年10月26日 | 9200 |
Windows Phone 8 | 不适用 | 2012年10月30日 | 9900 | |
Windows Server 2012 | Foundation, Essentials, Standard, Datacenter | 2012年9月4日 | 9200 | |
NT6.3 | Windows 8.1 | Windows 8.1, Windows 8.1 Pro, Windows 8.1 Enterprise, Windows RT 8.1 | 2013年10月18日 | 9600 |
Windows Phone 8.1 | 不适用 | 2014年4月2日 | 不适用 | |
Windows Server 2012 R2 | Essentials, Standard, Datacenter | 2013年10月18日 | 9600 | |
NT6.4 | Windows 10 | Technical Preview (v.6.4.9841) | 2014年10月1日 | 9841 |
Technical Preview (v.6.4.9860) | 2014年10月21日 | 9860 | ||
Technical Preview (v.6.4.9879) | 2014年11月13日 | 9879 | ||
NT 10.0 | Windows 10 | Technical Preview (v.10.0.9888) |
2014年12月14日 | 9888 |
Technical Preview (v.10.0.9926) |
2015年1月24日 | 9926 | ||
Technical Preview (v.10.0.10041) | 2015年3月19日 | 10041 | ||
Insider Preview (v.10.0.10074) | 2015年4月30日 | 10074 | ||
Insider Preview (v.10.0.10158) | 2015年6月30日 | 10158 | ||
Insider Preview (v.10.0.10159) | 2015年7月1日 | 10159 | ||
Insider Preview (v.10.0.10162) | 2015年7月3日 | 10162 | ||
Windows10家庭版,Windows10专业版,Windows10企业版,和Windows10教育版 | 2015年7月29日 | 10240 | ||
Insider Preview (v.10.0.10586) | 2015年10月13日 | 10586 |