浏览器获取设备唯一标识_【腾讯】在前端开发中,如何获取浏览器的唯一标识...

本文介绍了在前端开发中如何通过绘制canvas并利用其dataurl进行摘要计算来获取浏览器的指纹信息,以实现设备唯一标识的获取。推荐在生产环境中使用fingerprintjs2库,该库基于多种信息生成浏览器指纹。此外,文章还提及作者的GitHub资源和相关面试题。
摘要由CSDN通过智能技术生成
00e985cd5b2b8fb660b67bf18fe808d8.png
巴黎的先贤祠,法国
(© manjik/Shutterstock)

本题摘自于我 github 上的面试每日一题:https://github.com/shfshanyue/Daily-Question,并有大厂面经及内推信息,可「在左下角打开本题原文链接」

由于不同的系统显卡绘制 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

更多面试

b0344538798f9d21371af8035e34ddad.png
【字节-视频架构组-前端】头条架构组招人了内含自测题
4cc2ada5c3e6b6e0a2bc93b9e6880341.png
【美团】什么是防抖和节流,他们的应用场景有哪些
291f49f44b222de17833450f4c7f4ecb.png
【美团】如何获取一个进程的内存并监控

关注我

我是山月,正致力于「每天用五分钟能够看完的简短答案回答一个大厂高频面试题」。扫码添加我的微信,备注进群,加入高级前端进阶群.

61ee94a19eb59a530d38ba961de54e0a.png
加我微信拉你进入面试交流群

欢迎关注公众号【互联网大厂招聘】,定时推送大厂内推信息及面试题简答,每天学习五分钟,半年进入大厂中

5356563512f5d8ec23264923d7e450d8.png
每天五分钟,半年大厂中
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值