
您好,浏览器端暂时无法进行指纹识别的操作,因为浏览器的特性,为了防止恶意网站访问用户数据,所以浏览器端能做到的操作极其有限,例如人脸识别,在PC端、iOS端、Android端有,但是移动端没有,就是因为很多信息属于用户私密信息,尽量不让浏览器可以访问到。但是在iOS和安卓上,可以通过H5跟原生交互的方式,在App中调用原生的指纹识别,如果是纯浏览器端,暂时没有这个操作。第一次通过平台进入A应用时,我会把A应用的标识存放在sessionStorage里,key为appInfo,然后A未关闭,我又进入了B应用,此时,我也要把B应用的标识存放在sessionStorage里,key也为appInfo,再进入A应用时,此时appInfo已被覆盖为B的标识,拿不到A的标识了。```JavaScript <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Fingerprint2 TEST</title> <style> body { color: #555 } #info { font-size: 12px } #control span { color: #333 margin-left: 10px } </style> </head> <body> <div id="info"> </p> <p>纯前端实现的浏览器指纹采集器,通过获取浏览器中所有能获取到的信息(部分通过base64转成String),最后生成出md5,用于该用户在该设备上的唯一标识码,官方宣称准确度高达99.5%</p> </div> <div id="control"> <button onclick="start()">开始</button> <span>userAgent:</span><input type="checkbox" id="userAgent" checked="checked"> <span>fonts:</span><input type="checkbox" id="fonts" checked="checked"> <span>fontsFlash:</span><input type="checkbox" id="fontsFlash" checked="checked"> <span>canvas:</span><input type="checkbox" id="canvas" checked="checked"> <span>webgl:</span><input type="checkbox" id="webgl" checked="checked"> <span>audio:</span><input type="checkbox" id="audio" checked="checked"> <span>enumerateDevices:</span><input type="checkbox" id="enumerateDevices" checked="checked"> </div> <div id="view"> </div> <script src="https://cdn.staticfile.org/fingerprintjs2/2.1.0/fingerprint2.min.js"></script> <script> function start() { const start = new Date().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) { // 参数 const values = components.map(function (component) { return component.value }) // 指纹 const murmur = Fingerprint2.x64hash128(values.join(''), 31) view.innerHTML += '<p>指纹 : ' + murmur + '</p>' view.innerHTML += '<p>消耗 : ' + (new Date().getTime() - start) + ' 毫秒</p>' view.innerHTML += '<p>使用的参数 : </p>' for (const c of components) { view.innerHTML += '<p>' + c.key + ' : ' + c.value + '</p>' } }) } </script> </body> </html> ```