近期写作业需要解析浏览器 User_Agent,查了一下,发现已经有人做好了包,在这儿记录学习的内容。


安装

pip install pyyaml ua-parser user-agents

包地址:https://pypi.org/project/user-agents/

介绍:“user_agents”是一个Python库,它通过解析(浏览器/HTTP) user agent 字符串,提供了一种简单的方法,来识别/检测手机、平板等设备及其功能。目标是可靠地检测:设备是手机,平板还是电脑;是否有触摸屏。

``ua-parser <https://github.com/tobie/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"
# 最后这个最好用

目前还支持这些属性:

  • is_mobile:判断是不是手机
  • is_tablet:判断是不是平板
  • is_pc:判断是不是电脑
  • is_touch_capable:有没有触屏功能
  • is_bot:是不是搜索引擎的爬虫
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各字段的解释

  • Mozilla/5.0: 网景公司浏览器的标识,由于互联网初期浏览器市场主要被网景公司占领,很多服务器被设置成仅响应含有标志为Mozilla的浏览器的请求,因此,新款的浏览器为了打入市场,不得不加上这个字段。
  • Windows NT 6.3 : Windows 8.1的标识符
  • WOW64: 32位的Windows系统运行在64位的处理器上
  • AppleWebKit/537.36:苹果公司开发的呈现引擎
  • KHTML:是Linux平台中Konqueror浏览器的呈现引擎KHTML
  • Geckeo:呈现引擎
  • like Gecko:表示其行为与Gecko浏览器引擎类似

2. 请求中为什么既含有Chrome/33.0.1750.29又含有Safari/537.36字段?

因为AppleWebKit渲染引擎是苹果公司开发的,而Google公司要采用它,为了获得服务器端的正确响应,仅在Safari浏览器UA字段中增加了Chrome字段。 
    例如:

  • Safari浏览器的UA:Mozilla/5.0 (平台;加密类型;操作系统或CPU;语言)AppleWebKit/AppleWebKit版本号(KHTML, like Gecko) Safari/Safari 版本号
  • Chrome浏览器的UA:Mozilla/5.0 (平台;加密类型;操作系统或CPU;语言)AppleWebKit/AppleWebKit版本号 (KHTML, like Gecko) Chrome/ Chrome 版本号 Safari/Safari 版本号

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
  • IA64: 2003年3月28日

  • x64: 2005年4月25日

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日
  • 6000 (RTM)

  • 6001 (SP1)

  • 6002 (SP2)

Windows Server 2008 Foundation, Standard, Enterprise, Datacenter, Web Server, HPC Server, Itanium-Based Systems 2008年8月27日
  • 6001 (RTM)

  • 6002 (SP2)

NT6.1 Windows 7 Starter, Home Basic, Home Premium, Professional, Enterprise, Ultimate 2009年10月22日
  • 7600 (RTM)

  • 7601 (SP1)

Windows Server 2008 R2 Foundation, Standard, Enterprise, Datacenter, Web Server, HPC Server, Itanium-Based Systems 2009年10月22日
  • 7600 (RTM)

  • 7601 (SP1)

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

利用 Python-user-agents 解析 User_Agent相关推荐

  1. python分析pcap文件_利用Python库Scapy解析pcap文件的方法

    每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢? pip安装scapy,然后解析pcap: import scapy fro ...

  2. 给知网没有书签的pdf文件添加书签(利用python解析txt文件内容并为pdf添加目录)

    今天利用tampermonkey的知网下载助手脚本下载pdf格式论文时,发现论文缺少书签,而脚本可以下载一个txt格式的书签(目录),因此打算利用python将txt格式的目录添加到pdf中. txt ...

  3. 请利用SAX编写程序解析Yahoo的XML格式的天气预报,获取天气预报——python学习笔记

    1. 题目: 请利用SAX编写程序解析Yahoo的XML格式的天气预报,获取天气预报: 题目是廖雪峰老师的python教程中XML的练习. 本篇博文只是针对这一题目,没有做详细的介绍,如果看不懂可以在 ...

  4. 24位ADC数据转换,保存为hex文件,并利用python解析hex文件画图

     目前有许多ADC芯片都是24位精度的,这个位数稍显尴尬,因为在常用的变量类型中,有8bit.16bit.32bit,唯独没有24bit,这就导致我们在很多情况下,需要自己敲代码去处理这个24bit的 ...

  5. 利用python解析手机通讯录

    2019独角兽企业重金招聘Python工程师标准>>> 最新在处理手机通信录的时候,导出的手机通信录的文件VCF文件的内容如下: BEGIN:VCARD VERSION:3.0 N: ...

  6. CDays–5 习题二(利用Python科学计算特性,使用常用计算符)及相关内容解析。...

    利用python作为科学计算器.熟悉Python中的常用运算符,并分别求出表达式12*34+78-132/6.(12*(34+78)-132)/6.(86/40)**5的值.并利用math模块进行数学 ...

  7. python爬去百度文库_利用Python语言轻松爬取数据[精品文档]

    利用 Python 语言轻松爬取数据 对于小白来说,爬虫可能是一件非常复杂. 技术门槛很高的事情. 比如有人认为学爬虫必须精通 Python ,然后哼哧哼哧系统学习 Python 的每个知识点,很久之 ...

  8. python每隔一段时间保存网页内容_利用Python轻松爬取网页题库答案!教孩子不怕尴尬了!...

    大家有没有遇到这种令人尴尬的情况:"好不容易在网上找到需要的资源数据,可是不容易下载下来!"如果是通过一页一页的粘贴复制来下载,真的让人难以忍受,特别是像我这种急性子,真得会让人窒 ...

  9. python爬虫案例-python爬虫详细解析附案例

    什么是爬虫框架 说这个之前,得先说说什么是框架: 是实现业界标准的组件规范:比如众所周知的MVC开发规范 提供规范所要求之基础功能的软件产品:比如Django框架就是MVC的开发框架,但它还提供了其他 ...

  10. python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...

最新文章

  1. hiveserver2 kerberos 认证失败
  2. pythonselenium设置_selenium 怎样设置请求头?
  3. 数据库设计与开发概述
  4. 队列读取器代理 遇到错误 Row handle is invalid
  5. 引入用于 Azure IoT Edge 的 Visual Studio 工具
  6. 可持久化线段树学习笔记
  7. python安装百度aip_Python3.6安装aip
  8. codeforces 297 E. Anya and Cubes
  9. java map 元素个数_Java 小模块之--统计字符串中元素个数
  10. 洛谷P2568 GCD(莫比乌斯反演)
  11. POI导出Excel2003
  12. linux系统组成以及运行模式
  13. python历史时间轴可视化_TimeLine一个基于Python的时间轴创建者 | MOS86
  14. crontab每隔1小时运行一次
  15. 手机桌面上的计算机怎么删除,怎样删除桌面图标?删除桌面图标方法教学
  16. matlab求条件概率密度_数值优化方法—迭代法amp;终止条件
  17. Vue+Element UI弹窗实现表格编辑
  18. saas php7框架开源,HRM SAAS v2.5.7 – PHP人力资源管理系统SaaS平台版
  19. CF1578F Framing Pictures 旋转卡壳+积分
  20. [go学习笔记.第一章] go可以做什么

热门文章

  1. css在线编辑器html,html5+css3编辑器
  2. 解读:企微面向服务商进行平台收费模式调整的说明
  3. MicroService
  4. librosa.effects.split
  5. HTB-baby BoneChewerCon
  6. 图片转素描的工具汇总
  7. 2010最新会计科目表
  8. ElasticSearch—冷热(hotwarm)架构部署
  9. 【RMAN】数据库备份之冷备份
  10. ssh免密登陆远程linux服务器