官网下载地址:下载
一、什么是指纹识别
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
|
var
fingerprint =
new
Fingerprint().get();
|
如果你想使用 Canvas FingerPrinting,则如下调用:
1
|
var
fingerprint =
new
Fingerprint({canvas:
true
}).get();
|
如果你想使用屏幕分辨率计算指纹,则需如下调用:
1
|
var
fingerprint =
new
Fingerprint({screen_resolution:
true
}).get();
|
使用自定义的哈希函数
1
2
|
var
my_hasher =
new
function
(value, seed){
return
value.length % seed; };
var
fingerprint =
new
Fingerprint({hasher: my_hasher}).get();
|
或者直接传递方法:
1
2
|
var
my_hasher =
new
function
(value, seed){
return
value.length % seed; };
var
fingerprint =
new
Fingerprint(my_hasher).get();
|
举例、获取页面PV、UV,IP内容:
<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才是真实ip
int 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);
}
}
想了解更多,加微信公众号(jblPaul)