js获取pc唯一标识_Fingerprintjs2 实现浏览器指纹采集器 获取用户唯一标识码

班泽语
2023-12-01

需求

最主要的需求就是判断本次请求的用户到底是新用户还是老用户还是机器人。通过request去分析ip、ua、mac地址都有各种缺点导致不准确。

Fingerprintjs2 是通过纯前端原生js实现的浏览器指纹采集器,通过获取浏览器中所有能获取到的信息(部分通过base64转成String),最后生成出md5,用于该用户在该设备上的唯一标识码,官方宣称准确度高达99.5%

测试代码

Fingerprint2TEST

body{

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

 类似资料: