设备指纹识别之User Agent 解析
设备指纹识别之User Agent 解析User Agent 解析
zoerywzhou@163.com
http://www.cnblogs.com/swje/
作者:Zhouwan
2017-4-6
最近由于设备指纹识别项目需要,想要解析UserAgent(用户代理)以此来分析PC端的browserInfo。在网上找了些参考资料,以及在github上参考的代码,总结整理如下。
有一个深深的感触:网上供参考的东西,不一定是全都对的啊,哎,血的教训,折腾了好几个小时,终于弄清楚了问题所在。总结如下:
参考博客:
- 浏览器UA信息实时解析页面(可获取用户目前所登录的浏览器信息):http://www.useragentstring.com/index.php
- 基于不同浏览器的上述解析页面的信息展示:用户代理
- Github上用来解析UA的几个开源库:
- Java实现:HaraldWalker/user-agent-utils,其评价及存在问题:网站日志中的UserAgent分析
各种语言的总库:ua-parser
Python implementation of ua-parser:ua-parser/uap-python
- Python implementation of ua-parser:lorien/user_agent
Python implementation of ua-parser:selwin/python-user-agents
- 一个用于解析UA来得到用户终端信息的JS库:
我的实践之环境配置:
不知道是不是我命途多舛,明明是很顺利的事情,我按照网上的步骤做的时候,总会遇到这样那样的问题。。。下面记录一下:
我选择了ua-parser的python实现,也就是 ua-parser/uap-python。
首先根据Github上的Readme文档说明,开始配置环境(血的教训由此开始):
Readme文档说明如下:
其实这上面说的倒是很清楚,如果我按照第一个安装方式(pip install ua_parser),倒也不会出现后续的问题。
由于之前在pip上吃过苦头(自动安装的模块版本和其他模块版本不一致,导致不能正常使用),所以在能自己手动安装的情况下,我就想尽量避免出现以往的问题。于是乎,本宝宝就想自己动手丰衣足食,采取了第二种安装方式,即先把该github 文档下载下来,再用以下命令安装:python setup.py install 。把github上的ua-parser/uap-python 下载到本地,目录如下:
当我配置好环境之后,开始测试:
from ua_parser import user_agent_parser
然后就报错:ImportError: no module named _regexes
于是乎我就在没有卸载的前提下试了一下第一种配置方案(pip install ua_parser),但是很显然,之前setup.py已经配置过主要的部分(user_agent_parser.py)了,就没能成功配置“次主要”的部分(regexes.py)。
网上也找了其他的解决方案,也尝试了selwin/python-user-agents(也确实是从这个项目中得到了一些启发,并最终解决了问题):
对user_agents的简要介绍:user_agents
is a Python library that provides an easy way to identify/detect devices like mobile phones, tablets and their capabilities by parsing (browser/HTTP) user agent strings.
看到这句话:user-agents
is hosted on PyPI ,我就去原始的官方文档PyPI 里面去看了看,心想原始发布的应该没什么问题的吧。
看到官方文档的installation里面只提到了pip的方法,我 就决定把之前装的乱八七糟的全都卸载了,就按照这一句话安装试试看。
结果怎么着,就成功了。。。哎,宝宝好生气哦。。不过还是要静下心来分析一下问题到底出在哪里。对比了一下我安装失败和安装成功ua_parser 前后的配置文件,发现了问题所在:可以发现,由Github上提供的项目中,没有文件_regexes.py,也就是我的文档报错的主要原因。。。。而直接通过pip安装时,是从官网上下载的whl文件,是包含文件_regexes.py的。所以最终执行成功。
一言以蔽之:
- 针对这个项目中所提供的安装方案:安装时用pip命令安装,而不要用setup.py安装,原因很简单:Github上提供的文档缺少_regexes.py文件,若直接用setup.py安装会因为缺少文件而导致安装文件不全,进而导致导入文件失败。
- 针对平时安装过程中出现的错误:如果提供了多种方案,其中一种方案失败的话,就彻底删除,然后再尝试第二种方案。几种方案都不行的话,再去网上寻找解决方案。
总会成功的!!!
我的实践之解析UserAgent
代码展示:
# 解析 UserAgent
def userAgent_parser():
pp = pprint.PrettyPrinter(indent=4)
sql = 'select distinct browserInfo from selected_pc order by uname'
cursor.execute(sql)
db.commit()
browserInfo = cursor.fetchall()
ua_string = str(browserInfo[0][0])
#ua_string = ua_string
print ua_string
parsed_string = user_agent_parser.Parse(ua_string)
pp.pprint(parsed_string) # 连接数据库,测试并查看解析结果
# connect to databases
db = MySQLdb.connect("10.60.150.192","zhouwan","","thinkdevice")
cursor = db.cursor()
userAgent_parser()
运行结果:
就是酱紫~
好啦,大功告成,可以根据这个解析结果来分析browserInfo啦,继续搬砖~
设备指纹识别之User Agent 解析的更多相关文章
- Swift下调用Touch ID实现指纹识别
iOS开发交流群:484884085 欢迎大家增加. 例如以下代码是实现调用5S以上设备指纹识别的代码,依照官网给出的代码,会出现识别成功后非常久才运行成功后调用的代码,逛了非常久的.才知道要将其放入 ...
- ios8指纹识别
简介 苹果从iPhone5S开始,具有指纹识别技术,从iOS8.0之后苹果允许第三方 App 使用 Touch ID进行身份验证.指纹识别Touch ID提供3+2共5次指纹识别机会(3次识别失败后, ...
- Android指纹识别API讲解,让你有更好的用户体验
我发现了一个比较怪的现象.在iPhone上使用十分普遍的指纹认证功能,在Android手机上却鲜有APP使用,我简单观察了一下,发现Android手机上基本上只有支付宝.微信和极少APP支持指纹认证功 ...
- Android指纹识别深入浅出分析到实战(6.0以下系统适配方案)
指纹识别这个名词听起来并不陌生,但是实际开发过程中用得并不多.Google从Android6.0(api23)开始才提供标准指纹识别支持,并对外提供指纹识别相关的接口.本文除了能适配6.0及以上系统, ...
- 网站指纹识别工具——WhatWeb v0.4.7发布
WhatWeb是一款网站指纹识别工具,主要针对的问题是:“这个网站使用的什么技术?”WhatWeb可以告诉你网站搭建使用的程序,包括何种CMS系统.什么博客系统.Javascript库.web服务 ...
- WAF指纹识别和XSS过滤器绕过技巧
[译文] -- “Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters” 0x1 前言 之前在乌云drop ...
- iOS 钥匙串 指纹识别 get和Post请求的区别
01-钥匙串 1. 通过系统提供的钥匙串功能可以在本地保存密码,系统使用AES的方式对密码加密 a. 查看Safari中保存的密码 2. 使用第三方框架SSKeychain把密码保存到钥匙串和获取钥匙 ...
- iOS - TouchID 指纹识别
前言 NS_CLASS_AVAILABLE(10_10, 8_0) @interface LAContext : NSObject 指纹识别功能是 iPhone 5s 推出的,SDK 是 iOS 8. ...
- iOS指纹识别
#import "ViewController.h" #import <LocalAuthentication/LocalAuthentication.h> @inte ...
随机推荐
- 记录一次Session偶尔获取不到的解决过程
导读 平台下某子系统有密码登录需求,初步考虑用Session,登录后设置Session[key]=value;Session中若某key对应的Session,即Session[key]为null则限制 ...
- Cordic算法——verilog实现
上两篇博文Cordic算法--圆周系统之旋转模式.Cordic算法--圆周系统之向量模式做了理论分析和实现,但是所用到的变量依然是浮点型,而cordic真正的用处是基于FPGA等只能处理定点的平台.只 ...
- IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”
Q:IIS发布网站浏览之后看到的是文件目录 A:它出现了一个说到.NET4.0 更高框架什么的错误,所以我将 .NTE CRL版本由4.0改为2.0了,改为2.0后就出现了只能浏览文件目录了.改为4. ...
- PHP操作MySQL数据库之天龙八部 -- 七贱下天山 -- 六脉神剑
天龙八部 八步操作数据库 七贱下天山 七步操作数据库 (将判断错误省略) 六脉神剑 六步操作数据库(将判断错误省略,将选择数据库添加到第一步 ...
- 【深圳】大湾区第三次.NET技术交流会(网络直播)
活动简介 云.devops.微服务.容器是现在这个发展阶段的软件形态, 本次活动我们围绕这些话题介绍.NET生态下的发展.SQL Server 2017可根据需要运行本地部署的SQL Server,当 ...
- IPv6 VS IPv4,谈谈升级 IPv6 的必要性
11月26日,中办.国办印发了<推进互联网协议第六版(IPv6)规模部署行动计划>,提出国内要在 5~10 年的时间形成下一代互联网自主技术体系和产业生态,建成全球最大规模的 IPv6 商 ...
- Cannot load browser "PhantomJS": it is not registered! Perhaps you are missing some plugin? 测试安装遇到的BUG
安装了半天phantomjs就是安装不好,后面想了个死办法,http://phantomjs.org/download.html这个网址下先去下载好 phantomjs-2.1.1-windows.z ...
- OpenStack搭建遇到的问题
前言:对于像我这种新手来说,搭建OpenStack真的很费劲,因为我总是每配置一个服务,我就想弄懂,后来搭建过程很累人,因此我想了个办法,等我搭建出来再学.我这里将记录我从开始之初到我学习,再到我毕业 ...
- Unity3d的模型自动导入帧数表
开发中经常需要,对美术模型进行一些处理.(以fbx为例) 例如,需要把动作的名字.start和end加入animations的clips. 如果手动操作,就是在模型的Inspector窗口,一个动作点 ...
- 基于DevExpress的BandedGridView动态生成多行(复合)表头
最近cs项目中有个看板的功能需求,整个系统是基于DevExpress组件开发的,由于对这个组件的布局不是很熟,也借鉴了网上一些其他人的做法,普遍都是通过GridControl的BandedGridVi ...