我正在尝试在我的网站上可靠地跟踪用户,以便如果他们滥用,他们可以被禁止并且不会轻易回来(显然这可以通过 TOR 等绕过,但大多数巨魔并不在乎)。我有一些数据可以从我的服务器设置到浏览器上,并且可以保证是唯一的,因为我自己设置了数据。但是,这些数据也很容易删除(清除缓存、清除 cookie、清除其他站点数据)。我有一些其他数据(指纹数据)极难删除或更改,但很容易与其他具有相同指纹的设备发生冲突。这是我可以收集的数据:
Storage/caching (guaranteed unique, deletable): Cookies, HTTP ETags,
localStorage, indexedDB, FileSystem API, Last-Modified date echoing
Fingerprinting (possible collisions between devices, difficult to delete):
canvas2d, WebGL,
font list, screen size,
IP address, plugins installed
还有一点。到目前为止我所知道的是:
- 首先信任唯一标识符
- 如果唯一标识符冲突,则选择多数
- 如果我根据他/她的唯一标识符识别用户但他们的指纹不同,请更新他们的默认指纹以匹配
你能帮我决定在任何给定情况下该怎么做吗?例如,用户删除了他/她的所有存储/缓存数据但指纹仍然存在?当指纹在某些方面发生冲突但在其他方面没有冲突时会发生什么?这是新用户还是老用户的概率是多少?