设备指纹识别之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

    • 基于不同浏览器的上述解析页面的信息展示:用户代理

我的实践之环境配置:


不知道是不是我命途多舛,明明是很顺利的事情,我按照网上的步骤做的时候,总会遇到这样那样的问题。。。下面记录一下:

我选择了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 解析的更多相关文章

  1. Swift下调用Touch ID实现指纹识别

    iOS开发交流群:484884085 欢迎大家增加. 例如以下代码是实现调用5S以上设备指纹识别的代码,依照官网给出的代码,会出现识别成功后非常久才运行成功后调用的代码,逛了非常久的.才知道要将其放入 ...

  2. ios8指纹识别

    简介 苹果从iPhone5S开始,具有指纹识别技术,从iOS8.0之后苹果允许第三方 App 使用 Touch ID进行身份验证.指纹识别Touch ID提供3+2共5次指纹识别机会(3次识别失败后, ...

  3. Android指纹识别API讲解,让你有更好的用户体验

    我发现了一个比较怪的现象.在iPhone上使用十分普遍的指纹认证功能,在Android手机上却鲜有APP使用,我简单观察了一下,发现Android手机上基本上只有支付宝.微信和极少APP支持指纹认证功 ...

  4. Android指纹识别深入浅出分析到实战(6.0以下系统适配方案)

    指纹识别这个名词听起来并不陌生,但是实际开发过程中用得并不多.Google从Android6.0(api23)开始才提供标准指纹识别支持,并对外提供指纹识别相关的接口.本文除了能适配6.0及以上系统, ...

  5. 网站指纹识别工具——WhatWeb v0.4.7发布

      WhatWeb是一款网站指纹识别工具,主要针对的问题是:“这个网站使用的什么技术?”WhatWeb可以告诉你网站搭建使用的程序,包括何种CMS系统.什么博客系统.Javascript库.web服务 ...

  6. WAF指纹识别和XSS过滤器绕过技巧

    [译文] -- “Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters” 0x1 前言 之前在乌云drop ...

  7. iOS 钥匙串 指纹识别 get和Post请求的区别

    01-钥匙串 1. 通过系统提供的钥匙串功能可以在本地保存密码,系统使用AES的方式对密码加密 a. 查看Safari中保存的密码 2. 使用第三方框架SSKeychain把密码保存到钥匙串和获取钥匙 ...

  8. iOS - TouchID 指纹识别

    前言 NS_CLASS_AVAILABLE(10_10, 8_0) @interface LAContext : NSObject 指纹识别功能是 iPhone 5s 推出的,SDK 是 iOS 8. ...

  9. iOS指纹识别

    #import "ViewController.h" #import <LocalAuthentication/LocalAuthentication.h> @inte ...

随机推荐

  1. C#中静态和非静态的区别

    今天下午面试,HR问道:C#中静态类或静态方法和非静态类静态方法有什么区别?我回答是静态的可以直接调用而非静态的需要实例化.HR说这谁都知道,我问的是本质区别.我当时就郁闷了,我只有8个月的编程经验, ...

  2. [转载] gitbook安装与使用

    转载自http://blog.csdn.net/xiaocainiaoshangxiao/article/details/46882921 废话不说,直接主题: gitbook安装 ========= ...

  3. [转载] zookeeper 分布式锁服务

    转载自http://www.cnblogs.com/shanyou/archive/2012/09/22/2697818.html 分布式锁服务在大家的项目中或许用的不多,因为大家都把排他放在数据库那 ...

  4. Git文件状态描述

    检查当前文件状态 [root@typhoeus79 ice_test_m git_test]# git status # On branch master nothing to commit (wor ...

  5. 在windows上搭建镜像yum站的方法(附bat脚本)

    方法一:支持rsync的网站 对于常用的centos.Ubuntu.等使用官方yum源在 http://mirrors.ustc.edu.cn 都存在镜像. 同时 http://mirrors.ust ...

  6. 《 iPhone X ARKit Face Tracking 》

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本文来自于腾讯Bugly公众号(weixinBugly), 作者:jennysluo,未经作者同意,请勿转载,原文地址:http://mp.w ...

  7. Python 日志处理(一) 按Nginx log_format 分割日志记录

    要求:不使用正则 根据nginx 默认的日志记录格式,分割日志记录. log_format main '$remote_addr - $remote_user [$time_local] " ...

  8. TFboy养成记 CNN

    1/先解释下CNN的过程: 首先对一张图片进行卷积,可以有多个卷积核,卷积过后,对每一卷积核对应一个chanel,也就是一张新的图片,图片尺寸可能会变小也可能会不变,然后对这个chanel进行一些po ...

  9. 实验:企业级分布式存储应用与实战-mogilefs实现

    实验:企业级分布式存储应用与实战-mogilefs实现 (1)安装mogilefs 1.创建一个存放安装mogilefs所需的软件包的目录 cd /app/ mkdir mogilefs cd mog ...

  10. spring bean的创建过程

    spring的核心容器包括:core.beans.context.express language四个模块.所以对于一个简单的spring工程,最基本的就是依赖以下三个jar包即可: <depe ...