fingerprintjs 的使用与说明

来源:互联网 发布:农夫抢购软件怎么样 编辑:程序博客网 时间:2024/06/05 05:45


    官网下载地址:下载

一、什么是指纹识别

                 FingerPrint 即我们常说的指纹识别,使用手指和拇指前端的纹理按下的纹印来鉴定身份。指纹是鉴别身份的一种可靠的方法,因为每个人的每个指头上的纹理排列各不相同而且不因发育或年龄而改变。


二、什么是浏览器指纹? 

  其实这是 Electronic Frontier Foundation 研究出来的技术,可以匿名识别Web 浏览器,准确率高达94%。通过查询浏览器的代理字符串,屏幕色深,语言,插件安装与支持的 MIME 类型,时区偏移量和其他功能,如本地存储和会话存储等等,然后这些值通过散列函数传递产生指纹,不需要通过 Cookie 存储就可以识别浏览器。


三、IE浏览器的识别

        通过检测浏览器安装的插件来识别是浏览器指纹重要的特征,然后在 IE 浏览器中,不可能只去检测浏览器列表和它们的 MIME 类型,因此需要设置 ie_activex: true 选项,这样 FingerprintJS 将会检测一下插件:
  • Adobe Reader
  • Adobe Flash Player
  • Apple QuickTime
  • Real player (all versions)
  • Shockwave player
  • Windows Media Player
  • Microsoft Silverlight
  • Skype ClickToCall


四、使用方法

调用方法

1
varfingerprint = newFingerprint().get();

如果你想使用 Canvas FingerPrinting,则如下调用:

1
varfingerprint = newFingerprint({canvas: true}).get();

如果你想使用屏幕分辨率计算指纹,则需如下调用:

1
varfingerprint = newFingerprint({screen_resolution: true}).get();

使用自定义的哈希函数

1
2
varmy_hasher = newfunction(value, seed){return value.length % seed; };
varfingerprint = newFingerprint({hasher: my_hasher}).get();

或者直接传递方法:

1
2
varmy_hasher = newfunction(value, seed){return value.length % seed; };
varfingerprint = newFingerprint(my_hasher).get();



举例、获取页面PV、UV,IP内容:


1、页面引入:fingerprint.js
<script type="text/javascript" src="${base}/js/fingerprint.js"></script> 

2、配合jQuery使用

<script>    $(document).ready(function(){     //页面访问统计      var fingerprint = new Fingerprint().get();    $.ajax({        type: "GET",        url: base+"/statistics",        data: { finger:fingerprint,type:1},        dataType: "json",        success: function(data){ }      });     });</script>

3、调用后台代码,保存指纹信息

/** * 写入统计详情 */@RequestMapping("/statistics")public void writeStatistics(StatisticsDetails statisticsDetails, HttpServletRequest request){String realIp = null;String ip = request.getHeader("X-Forwarded-For");if (ip == null) { realIp = request.getRemoteAddr(); }else{if(!StringUtils.isEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)){//多次反向代理后会有多个ip值,第一个ip才是真实ipint index = ip.indexOf(",");if(index != -1){realIp = ip.substring(0,index);}else{realIp = ip;}}} try{ statisticsDetails.setIp(realIp); statisticsDetails.setTime_stamp(new Date());statisticsDetailsService.statistics(statisticsDetails); }catch(Exception e){Logger.write(e);}}


0 0
原创粉丝点击