广告联盟或许网站运营者都但愿可以精准定位并标识每个个体,经过对用户行为的分析(浏览了哪些页面?搜索了哪些关键字?对什么感兴趣?点了哪些按钮?用了哪些功能?看了哪些商品?把哪些放入了购物车等等),为用户推送更加精准的广告(精准化营销)。同时,经过对用户的标识,能够将不一样站点的用户进行关联。javascript
在过去,实现上述cookie是最受欢迎的一种。但因为移动互联网的发展,移动设备限制、用户禁用cookie。使得cookie越来越不受待见。伴随着html5的成熟,经过canvas fingerprinting技术标识一个惟一的浏览器逐渐被接受。它的特色是不经过cookie,用户基本没法屏蔽它 。html
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var txt = 'http://security.tencent.com/';
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);
复制代码
获取绘画的内容,须要使用到canvas.toDataURL()方法,该方法返回的是图片内容的base64编码字符串。对于PNG文件格式,以块(chunk)划分,最后一块是一段32位的CRC校验,提取这段CRC校验码即可以用于用户的惟一标识html5
//
var b64 = canvas.toDataURL().replace("data:image/png;base64,","");
var bin = atob(b64);
var crc = bin2hex(bin.slice(-16,-12));
console.log(crc);
复制代码
浏览器http请求中的用户代理-navigator.userAgentjava
浏览器的语言(中文、英文……)-navigator.languagegit
设备屏幕的色彩信息-screen.colorDepthgithub
设备屏幕的宽高-screen.height screen.width数据库
格林威治时间和本地时间之间的时差-Date().getTimezoneOffset()canvas
是否支持sessionStorage-window.sessionStorage浏览器
是否支持localStorage-window.localStoragebash
是否支持indexdDB-window.indexedDB
是否支持-docment.body.addBehavior(IE5的一个属性)
是否支持调用本地数据库-window.openDatabase
浏览器所在系统的CPU等级-navigator.cupClass
客户端的操做系统-navigator.platform
是否支持Do not track功能-navigator.doNotTrack
获取浏览器部分插件信息-flash plugin、Adobe PDF reader、QuickTime、real players、ShockWave player、Windows media player、Silverlight、Skype
由于Fingerprint使用的参数多,稍有变化就可能形成获取到的hash变化.
因此目前并不能代替Cookies,能够和Cookies与Flash Cookies结合,在Cookies和Flash Cookies被清空的状况下,经过Fingerprint hash 从新设置Cookies的值。