[转] web前端js构造没法销毁的类UUID识别码,识别浏览器设备惟一性

用户行为统计在现在的前端生态中已经是稀松寻常,如各类站长统计工具。识别用户访问客户端惟一性是必要的实现,对于web前端获取的设备信息,通常容易想到的是经过navigator.userAgent,但相同设备及浏览器ua就相同了,故ua的辨识度很低,那么web前端识别浏览器设备惟一性是否有其余好办法?html

 

先来讲说FingerPrint ,也就是咱们常说的指纹识别,FingerprintJS框架能够去github看看介绍,web指纹识别技术经过提取设备的各类特征,听说能达到94%的匿名浏览器区分度。由于这不是本文重点,因此这里再也不展开。那就是还有其余办法?没错,并且足够的简单,不过毕竟适合场景的才是最好的,未必更好但的确值得一试。前端

 

你可能早就听过一个被人诟病的h5 api:app cache,没错,接下来咱们就用它来实现浏览器设备的惟一性识别。咱们结合实例来看看,总共用到3个不到1k的小文件:python

1.index.html 业务页面,经过iframe标签引入uuid.html页面git

2.uuid.appcache app cache 所需的一个配置文件github

3.uuid.html 被index.html中的iframe引入,维持uuid的被cache页面web

 

整个过程是这样的:api

1.服务器端生成一个惟一识别码,写在做为维持uuid的uuid.html中,并标注<html manifest="uuid.appcache">浏览器

2.用户访问index.html,引入uuid.html后,执行的js能够读取到uuid缓存

3.尝试修改uuid.html中的uuid,在微信浏览器中访问N次,读取到的uuid都是第一次被缓存的uuid。服务器

也就是说,经过给用户打上一个没法销毁的识别码,达到了识别浏览器设备惟一性的目的。

 

测试时能够用python -m SimpleHTTPServer 8080起一个简单的测试服务器,使用微信内置浏览器测试。撰写者曾测试过的大多数设备均可行,尤为是在微信内置浏览器中的表现:即便是关闭微信或是重启手机,uuid也不会清除。请当心使用,若必要时需修改uuid,除了修改访问的uri之外,还能够修改uuid.appcache中的任意内容或是修改uuid.html的命名。

 

以上就是本文的所有内容了,但愿能对你如今正在考虑的业务起到一点点的帮助。按照惯例提供了代码附件,有须要可自行下载查看,最后感谢关注焦糖心得(JOTTOWN)。

相关文章
相关标签/搜索