【今日思考】如何实现跨浏览器设备指纹识别

发布者:Xiaofeixiang
发布于:2023-06-27 10:29

如今的黑灰产愈发嚣张,欺诈技术也是“迎风而上”,各种手段频出,尤其是在电商领域,为了薅羊毛,黑灰产可能会在一台电脑同时登录多个浏览器,而这就是跨浏览器设备指纹识别的一个应用场景。

 

当然,还会有其他类似的场景,只有我们想不到,没有黑灰产做不到。总体而言,我们需要跨浏览器设备指纹识别去检测欺诈行为和滥用账号的情况。通过识别设备指纹,可以判断是否有多个账号在同一设备上进行操作,或者同一账号在多个设备上进行异常操作,从而提高安全性和防范欺诈风险。

 

首先要声明:我们如果要保证设备指纹跨内核的功能(chrome和edge内核一样,firefox不一样),那么必然会增加碰撞机率,所以,谨慎使用。

简单尝试

实现跨浏览器的设备指纹识别是一项复杂的任务,因为不同浏览器和设备提供的特征和API可能存在差异。但是,有一些跨浏览器的设备指纹识别解决方案可用于获取一致的指纹信息,所以我们可以小试一下。

第一步:收集设备特征

在这一步,我们可以使用不同的技术和API,收集浏览器和设备的各种特征信息,例如User-Agent字符串、屏幕分辨率、操作系统信息、插件信息、语言设置等。

第二步:统一化特征数据

将收集到的特征数据进行标准化和归一化处理,确保在不同浏览器和设备上的一致性。这可以通过规范化数据格式、排序、删除重复信息等方式来实现。

第三步:哈希和加密

对归一化的特征数据进行哈希或加密处理,以确保设备指纹的安全性和隐私保护。常用的哈希算法包括MD5、SHA-1、SHA-256等。

第四步:生成设备指纹

将处理后的特征数据生成设备指纹,可以使用哈希值作为指纹标识。确保生成的指纹具有足够的唯一性和稳定性。

 

ok,直接来看代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function generateDeviceFingerprint() {
  var fingerprint = '';
 
  // 收集设备特征信息
  var userAgent = navigator.userAgent;
  var screenResolution = window.screen.width + 'x' + window.screen.height;
  var language = navigator.language;
  var plugins = '';
  for (var i = 0; i < navigator.plugins.length; i++) {
    plugins += navigator.plugins[i].name + ',';
  }
 
  // 统一化特征数据
  var normalizedData = userAgent + screenResolution + language + plugins;
 
  // 哈希特征数据
  fingerprint = md5(normalizedData); // 使用MD5算法进行哈希处理,需要引入MD5算法库
 
  return fingerprint;
}
 
// 示例使用了MD5.js库,需要引入相应的库文件
<script src="md5.js"></script>

从上面的代码中,我们可以看到,generateDeviceFingerprint() 函数通过收集浏览器的User-Agent、屏幕分辨率、语言设置和插件信息等特征信息,并对其进行归一化和哈希处理,最后生成设备指纹。

结语

回到我们前面说的问题,目前市场上对于跨浏览器设备指纹识别有一定的需求量,但是还没有一个比较完善的方式来平衡各个内核与碰撞机率之间的关系,如果有企业需要,那么必须得做出取舍。

 

以上。

 

如果需要设备指纹,可以戳>>>免费体验


声明:该文观点仅代表作者本人,转载请注明来自看雪