基于HTML Canvas实现“指纹识别”技术,canvas指纹

作者:zhanhailiang 日期:2015-01-31

说明

所谓指纹识别是指为每个设备标识唯一标识符(以下简称UUID)。诸如移动原生的APP都可以通过调用相关设备API来获取相应的UUID。但是浏览器内WebAPP受限于运行环境无法直接防部设备API,此时需要通过其它方法来设置UUID。

基于持久化Cookie生成UUID

原理

当用户访问一个网站时,网站可以在用户当前的浏览器Cookie中种入含有UUID的Cookie,并通过这个信息将用户所有行为(浏览了哪些页面?搜索了哪些关键字?对什么感兴趣?点了哪些按钮?用了哪些功能?看了哪些商品?把哪些放入了购物车等等)关联起来。

实现

function rand(len) {

var hex = "0123456789abcdef",

str ,

index = 0;

for (len = len || 32; len > index; index++) {

str .random()) % hex.length);

}

return str;

}

_" + rand();

// 写持久化cookie,两年后过期

// setcookie('uuid', uuid, 732 * 24 * 60 * 60);

弊端

之后就可以使用UUID来实现用户追踪技术,方便后续的数据分析工作。

但是随着互联网对个人隐私的重视,Cookie越来越不受待见。不少安全工具甚至是浏览器都开始允许或引导用户关闭Cookie功能,比如很多主流浏览器都有一个“隐私模式”功能。这样,网站就很难通过Cookie追踪用户行为。但仍然有一些方法可以让网站去追踪每一个访问者的行为,比如通过flash cookie的方式也可以达到唯一标识和追踪的目的。

基于HTML Canvas实现“指纹识别”技术

原理

基于Canvas绘制特定内容的图片,使用canvas.toDataURL()方法返回该图片内容的base64编码字符串。对于PNG文件格式,以块(chunk)划分,最后一块是一段32位的CRC校验,提取这段CRC校验码便可以用于用户的唯一标识。

测试结果表明,同一浏览器访问该域时生成的CRC校验码总是不变。可以简单理解为同样的HTML Canvas元素绘制操作,在不同的操作系统不同的浏览器上,产生的图片内容其实是不完全相同的。出现这种情况可能是有几个原因:

实现

function bin2hex(s) {

i, l, o ,

n;

s ;

for (i = 0, l = s.length; i < l; i++) {

n = s.charCodeAt(i)

.toString(16);

o 0' + n : n;

}

return o;

}

function getUUID(domain) {

var canvas = document.createElement('canvas');

var ctx = canvas.getContext("2d");

var txt = domain;

ctx.textBaseline = "top";

ctx.font = "14px 'Arial'";

ctx.textBaseline = "tencent";

ctx.fillStyle = "#f60";

ctx.fillRect(125,1,62,20);

ctx.fillStyle = "#069";

ctx.fillText(txt, 2, 15);

ctx.fillStyle = "rgba(102, 204, 0, 0.7)";

ctx.fillText(txt, 4, 17);

var b64 = canvas.toDataURL().replace("data:image/png;base64,","");

var bin = atob(b64);

));

return crc;

}

console.log(getUUID(""));

优点

基于HTML Canvas生成的UUID可以有效的用于用户追踪技术,目前并没有有效的对抗方案。

更多阅读

h5调用指纹识别_基于HTML Canvas实现“指纹识别”技术,canvas指纹相关推荐

  1. delphi 数字识别_基于STM32单片机的车牌识别

    系统介绍    使用STM32F103RCT6作为主控,摄像头使用OV7670(带FIFO).STM32进行了16倍频.识别过程分别为:图像采集,二值化,识别车牌区域,字符分割,字符匹配. 识别过程分 ...

  2. stm32车牌识别_基于STM32单片机的车牌识别

    系统介绍    使用STM32F103RCT6作为主控,摄像头使用OV7670(带FIFO).STM32进行了16倍频.识别过程分别为:图像采集,二值化,识别车牌区域,字符分割,字符匹配. 识别过程分 ...

  3. 电容屏物体识别_基于电容屏的物体识别技术简介

    原标题:基于电容屏的物体识别技术简介 物体识别技术概述 物体识别是基于触控屏的标签识别交互系统,由触控屏和实物标签Marker,软件底层识别程序和软件上层效果程序,支持多个Marker同时显示,将Ma ...

  4. java kinect 人体识别_基于kinect的人体动作识别系统

    [实例简介] 基于kinect v2的人体动作识别,配套博客(http://blog.csdn.net/baolinq/article/),基于mfc,可以识别左移右移.上蹦下跳等,也可以自己自定义其 ...

  5. 安卓dtmf识别_基于Python的DTMF信号识别

    前言 我这标题起得怎么这么像课程论文呢-- 啊,放心啦,这不是课程论文,这只是一个有趣(且值钱)的程序. 起因是这样的.我加了几个软件兼职群,前几天我发现其中有一个项目,是利用FFT识别信号啥的,报价 ...

  6. python读取视频流做人脸识别_基于 Python + OpenCV 进行人脸识别,视频追踪代码全注释...

    1 #-*- coding: utf-8 -*- 2 from __future__ importunicode_literals3 #操作文件 4 importos5 #科学计算 6 importn ...

  7. 安卓dtmf识别_安卓dtmf识别_基于Python的DTMF信号识别

    前言 我这标题起得怎么这么像课程论文呢-- 啊,放心啦,这不是课程论文,这只是一个有趣(且值钱)的程序. 起因是这样的.我加了几个软件兼职群,前几天我发现其中有一个项目,是利用FFT识别信号啥的,报价 ...

  8. Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38%

    Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38% 仅用 Python 和命令行就可以实现人脸识别的库开源了.该库使用 dlib 顶尖的深度学习人脸识别技术构建 ...

  9. 【表盘识别】基于matlab霍夫变换钟表表盘识别【含Matlab源码 1943期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[表盘识别]基于matlab霍夫变换钟表表盘识别[含Matlab源码 1943期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  10. 直尺刻度识别_测量仪器刻度线的快速识别方法

    测量仪器刻度线的快速识别方法 [专利摘要]本发明涉及测量仪器刻度线的快速识别方法,可有效解决测量仪器的检定.校准.试验等过程中对刻度线的识别和监视问题,保证刻度线识别.监视和测量的快速准确的问题,其解 ...

最新文章

  1. CTFshow 反序列化 web268
  2. 全网首个OpenPrompt尝鲜报告:Prompt研究者必备实验利器
  3. bzoj 4551: [Tjoi2016Heoi2016]树【并查集】
  4. Springboot后台管理(CRUD)
  5. 《标准普通话教程》中对平舌音的发音方法的说明
  6. UESTC学位论文latex模板下载
  7. matlab窗函数 响应,matlab窗函数设计方案.doc
  8. 不再惧怕!二叉树结构相关算法总结 | 原力计划
  9. HTML5写的简单小游戏-绵羊快跑
  10. oracle 用户密码过期修改,Oracle用户登录密码过期的修改
  11. 基于STM32的智能小车--避障设计
  12. PHP多因子方案,多因子策略之冗余因子
  13. SAS 金融函数 PMT IRR
  14. 一步教你如何开通支付宝手机网站支付,微信h5收款,降低支付宝当面付费率
  15. VB6.0代码窗口不支持鼠标中键操作滚动条解决方法
  16. 使用OpenOffic在线转换文档错误
  17. CRC32绕过RAR密码
  18. 逆向unity3d手机游戏
  19. 但行好事 莫问前程(五月)
  20. win快捷键_终于找到了!10个Win+组合快捷键,让你的工作效率提升10倍

热门文章

  1. 快速接入高德地图SDK(地图+定位+标记+路线规划+搜索)
  2. 维智科技时空AI技术赋能金融行业
  3. html手机响应式布局,手机网页设计中的响应式布局
  4. 【原创】xenomai+linux双内核下的时钟管理机制
  5. UVA 12235 Help Bubu
  6. 蓝桥杯Python快速入门(4)
  7. android obb权限,解决部分手机读取obb失败的问题
  8. 网易云音乐信息爬取(存储为 csv文件)喜马拉雅音乐爬取
  9. 浅析瞬态抑制二极管双向tvs管
  10. YT8511H的原理图设计