需求
最主要的需求就是判断本次请求的用户到底是新用户还是老用户还是机器人。通过request去分析ip、ua、mac地址都有各种缺点导致不准确。
Fingerprintjs2 是通过纯前端原生js实现的浏览器指纹采集器,通过获取浏览器中所有能获取到的信息(部分通过base64转成String),最后生成出md5,用于该用户在该设备上的唯一标识码,官方宣称准确度高达99.5%
测试代码
Fingerprint2TESTbody{
color:#555;
}
#info{
font-size:12px;
}
#control span{
color:#333;
margin-left:10px;
}
Fingerprint2Github:https://github.com/Valve/fingerprintjs2
纯前端实现的浏览器指纹采集器,通过获取浏览器中所有能获取到的信息(部分通过base64转成String),最后生成出md5,用于该用户在该设备上的唯一标识码,官方宣称准确度高达99.5%
开始
userAgent:
fonts:
fontsFlash:
canvas:
webgl:
audio:
enumerateDevices:
functionstart(){
conststart=newDate().getTime();
let view=document.querySelector('#view');
view.innerHTML='';
let excludes={};
if(!document.querySelector('#userAgent').checked){
excludes.userAgent=true;
}
if(!document.querySelector('#audio').checked){
excludes.audio=true;
}
if(!document.querySelector('#enumerateDevices').checked){
excludes.enumerateDevices=true;
}
if(!document.querySelector('#fonts').checked){
excludes.fonts=true;
}
if(!document.querySelector('#fontsFlash').checked){
excludes.fontsFlash=true;
}
if(!document.querySelector('#webgl').checked){
excludes.webgl=true;
}
if(!document.querySelector('#canvas').checked){
excludes.canvas=true;
}
let options={excludes:excludes}
Fingerprint2.get(options,function(components){
// 参数
constvalues=components.map(function(component){
returncomponent.value
});
// 指纹
constmurmur=Fingerprint2.x64hash128(values.join(''),31);
view.innerHTML+='
指纹 : '+murmur+'
';view.innerHTML+='
消耗 : '+(newDate().getTime()-start)+' 毫秒
';view.innerHTML+='
使用的参数 :
';for(constc of components){
view.innerHTML+='
'+c.key+' : '+c.value+'
';}
});
}
效果演示指纹 : 959c35da0972771684b62c210fee5438
消耗 : 351 毫秒
使用的参数 :
userAgent : Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36
webdriver : not available
language : zh-CN
colorDepth : 24
deviceMemory : 4
pixelRatio : 1
hardwareConcurrency : 4
screenResolution : 900,1600
availableScreenResolution : 900,1600
timezoneOffset : -480
timezone : Asia/Shanghai
sessionStorage : true
localStorage : true
indexedDb : true
addBehavior : false
openDatabase : true
cpuClass : not available
platform : Linux x86_64
doNotTrack : 1
plugins : Chrome PDF Plugin,Portable Document Format,application/x-google-chrome-pdf,pdf,Chrome PDF Viewer,,application/pdf,pdf,Native Client,,application/x-nacl,,application/x-pnacl
(后面太长省略)…
END