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

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

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

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

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

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

整个过程是这样的:

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)。

最新文章

  1. 浅析JS中的模块规范(CommonJS,AMD,CMD)
  2. Java -- File
  3. magento-connect-manage出现404或者500内部错误的解决办法
  4. 用Python作GIS之五:从示例入手—example函数
  5. JVM -XX: 参数介绍(转)
  6. Matlab中tic和toc用法
  7. headfirst设计模式(3)—装饰者模式
  8. Visual Studio 2017 : client version 1.22 is too old
  9. Spring Security入门(3-2)Spring Security对接用户的权限系统
  10. BZOJ2724 [Violet]蒲公英(分块)
  11. Python self,init,对象属性
  12. 计算机网络协议包头赏析-IP
  13. php安装扩展模块后,重启不生效的原因及解决办法
  14. Android之Activity系列总结(三)--Activity的四种启动模式
  15. 获取 graphql schema 信息
  16. python性能测试脚本-乾颐堂
  17. spring的事务传播行为
  18. sql server or Oracle: table MS_Description
  19. BZOJ2822:[AHOI2012]树屋阶梯(卡特兰数,高精度)
  20. Eclipse 添加书签

热门文章

  1. codeforces 38G - Queue splay伸展树
  2. LabVIEW将字符串转化为十进制
  3. java泛型类型变量能调用的方法
  4. 一切皆Socket
  5. iPhone内存溢出——黑白苹果
  6. 【MySql】like用法
  7. windows 系统纯净版官网下载地址
  8. JS 实现的浏览器系统通知 iNotify.js
  9. Confluence 6 管理协同编辑 - 审计的考虑
  10. Confluence 6 MySQL 数据库设置准备