通过使用evercookie技术实现设备指纹

来源:互联网 发布:南师大图书馆数据库 编辑:程序博客网 时间:2024/05/16 17:00

    设备指纹是互联网中经常使用的一种技术,通过设备指纹技术,为每个设备确定一个唯一的设备ID。由于IP地址个数的限制,内网中往往使用NAT技术,将内网中的上万个IP映射成几个外网IP对外访问。这样内网用户在访问某个网站的使用,一个外网IP很可能对应多个内网IP。可以通过使用设备ID,精确定位到每个终端,以设备ID为基础创建设备画像,能够解决很多IP画像无法解决的问题。理想情况下,一个设备只对应一个设备ID,类似于一个人对应一个身份证号码。

    设备指纹要解决以下几个问题:

    1. 一一对应性。一个设备只能有一个设备ID,同时一个设备ID也只能对应一个设备

    2.可恢复性。设备ID存储在客户端,客户端可能删除了,这时候需要能够恢复

    3.一致性。一个客户端可能采用了多个浏览器,需要将多个浏览器识别成一个设备

    4.稳定性。随着时间的变化,即使客户端的指纹发生了改变,这个设备的设备ID不能发生改变。


指纹系统的架构如下图所示(实线箭头表示数据的流向,虚线箭头表示加工流程):


下面讲述上图的实现原理和过程。

但是如何保证一个设备对应一个设备ID呢?

    每个设备都有他自己的一些特征,也就是它的指纹信息,可以包含如下几项数据:

1.设备的ip地址

2.设备的浏览器以及浏览器上安装的插件信息

3.pc的屏幕大小

4.设备的帆布指纹信息(Canvas)

5.终端登录的用户名

6.flash中的设备信息描述(Capabilities对象),比如说设备的屏幕大小,像素信息

7.设备的操作系统信息

    对于一个网站来说,可能有上亿的设备访问,屏幕信息、帆布指纹、flash设备信息、浏览器插件存在较大的重复性,但是一个IP地址和用户名对应的设备就比较少了。综合考虑设备指纹的各个因素,基本上能做到设备ID和设备指纹一一对应。

    在客户端执行js脚本,可以采集设备的指纹信息和设备ID,通过Ajax发送到服务器。在服务器端接受到js采集的信息后会根据请求是否携带设备ID以及设备ID是否合法进行3种不同处理:

1.请求没有携带设备ID,这种情况下会直接产生一个设备ID,以指纹信息为Key,设备ID为value存储到redis;另外还会把设备ID存储到HBase一份。为了保证产生的设备ID不重复,可以使用UUID方式产生。最后把新产生的设备ID通过Ajax发送给客户端,客户端js将设备ID设置到客户端的各个存储位置。

2.请求携带了设备ID,但是在Redis和HBase都没有查找到设备ID,这个设备ID为非法设备ID。这时产生一个设备ID,以指纹信息为Key,设备ID为value存储到redis。另外还会把设备ID存储到HBase一份。最后把新产生的设备ID通过Ajax发送给客户端,客户端js将设备ID设置到客户端的各个存储位置。

3.请求携带了设备ID,在Redis或者HBase都查找到设备ID,这个时候设备ID合法。以指纹信息为Key,设备ID为value更新redis中存储的设备信息。最后把新产生的设备ID通过Ajax发送给客户端,客户端js将设备ID设置到客户端的各个存储位置。

    通过上图可以发现,一个设备ID在redis里面存储了多份,每份数据的Key是不同的。这时因为通过设备指纹的部分信息,就可以确定出设备ID来,比如说一个用户访问某个网站,使用的终端个数在10个以内,每个终端的ip地址不一样,操作系统也可能不一样,所以可以通过ip+user+os锁定一个设备。但是在使用js采集设备信息的时候,在某些情况下可能采集不全,比如说没有登录的时候,可能不存在user,所以需要根据指纹的不同维度为key进行组合,存储多份数据到redis,避免频繁的到HBase查询设备ID是否存在。     存储到Redis的每份数据都有一定的超时时间,超过超时时间的数据会被redis删除,这样就把活跃设备全部存储到了Redis,尽量减少HBase的访问,有效的提高了吞吐量。

 在客户端,以下几个地方可以存储设备ID:

1.indexdb

2.webSQL

3.cookie

4.localstorage

5.window.name

6.flash

7.sessionstorage

    flash的数据可以在多个浏览器之间共享,因此通过flash技术可以将多个浏览器识别成一个设备。

    服务器端对指纹和eid数据处理完成之后,发送Ajax响应,将设备ID重新记录到客户端的多个位置。这样即使是客户端浏览器,清除了缓存数据,服务器端依然能够找到这个设备的设备ID,并且把设备ID设置到客户端的多个位置。

    通过以上方式,可以有效的实现一套指纹系统。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 客户说没考虑好怎么办 小孩生殖器痒经常用手抓怎么办 孩子在幼儿园生殖器官受伤怎么办? 被骗了3000块钱怎么办 小说 月经来了想体检怎么办 尿检的时候遇上月经期怎么办 消防兵改革那新兵怎么办 教师资格证体检有问题怎么办 检兵合格还在上学怎么办 运动后肌肉肿了怎么办 打架用力过猛肌肉疼痛怎么办 军检只要一项不合格怎么办 体检身高差一厘米怎么办 体检身高差两公分怎么办 体检身高差10厘米怎么办 孩子的爸爸总是打游戏怎么办 拉屎屁眼疼还有血怎么办 家里冼澡要等好多冷水怎么办 孕晚期小孩头大怎么办 报考警校体检不合格退回怎么办? 入职体检视力0.1怎么办 屁扒骨折疼要怎么办 宝宝发高烧怎么办能快速退烧 屁股上长了纹路怎么办 手机充电头歪了怎么办 屁股挠烂了化脓怎么办 手机充电那坏了怎么办 孩子在学校被老师冤枉怎么办 初中学校不好我该怎么办 天气太热屁股淹了怎么办 骑车骑的屁股疼怎么办 爬山时屁股摔紫青了怎么办 宝宝不肯脱裤子拉粑粑怎么办 国家对无地农民怎么办 生完孩子骨架变大怎么办 17岁长高很慢怎么办? 出月子腿着凉了怎么办 脚着凉了脚疼怎么办 腿着凉了特别疼怎么办 孩子骨龄大2两年怎么办 和人吃饭很尴尬怎么办