通过canvas获取浏览器指纹信息

由于不同的系统显卡绘制 canvas 时渲染参数、抗锯齿等算法不同,因此绘制成图片数据的 CRC 校验也不一样。

function getCanvasFp () {

const canvas = document.getElementById('canvas')

const ctx = canvas.getContext('2d')

ctx.font = '14px Arial'

ctx.fillStyle = '#ccc'

ctx.fillText('hello, shanyue', 2, 2)

return canvas.toDataURL('image/jpeg')

}

因此根据 canvas 可以获取浏览器指纹信息。

  1. 绘制 canvas,获取 base64 的 dataurl
  2. 对 dataurl 这个字符串进行 md5 摘要计算,得到指纹信息

但是对于常见的需求就有成熟的解决方案,若在生产环境使用,可以使用以下库

  • fingerprintjs2

它依据以下信息,获取到浏览器指纹信息

  1. canvas
  2. webgl
  3. UserAgent
  4. AudioContext
  5. 对新式 API 的支持程度等

requestIdleCallback(function () {

Fingerprint2.get((components) => {

const values = components.map((component) => component.value)

const fp = Fingerprint2.x64hash128(values.join(''), 31)

})

})

简答

根据 canvas 可以获取浏览器指纹信息

  1. 绘制 canvas,获取 base64 的 dataurl
  2. 对 dataurl 这个字符串进行 md5 摘要计算,得到指纹信息

若在生产环境使用,可以使用 fingerprintjs2

以上是 通过canvas获取浏览器指纹信息 的全部内容, 来源链接: utcz.com/a/32643.html

回到顶部