前言:今天是星期一,大家都应该知道,这种日子,出于人道主义和人体构造,是不应该工作的。 我的左半脑还沉浸在周末的快乐之中,右半脑在为接下来五天而发愁。所以,来写篇短文摸个鱼吧。

设备指纹定义

设备指纹通过用户上网设备的硬件、网络、环境等特征信息生成设备的唯一标识,可有效识别模拟器、刷机改机、Root、越狱、劫持注入等风险。就设备指纹的发展史来看,设备指纹从原来的IP到现在的设备指纹,其中的技术和安全性都有很大的提高。
image.png

获取原理

获取设备指纹的原理是利用设备的各种属性和特征,包括硬件、操作系统、网络设置、浏览器配置和插件等信息,对设备进行唯一性的标识和识别。

设备指纹获取原理是基于设备本身的属性和特征来实现的,因此可以在不依赖用户身份信息的情况下,对设备进行唯一性的标识和识别,应用于广告追踪、反欺诈、用户行为分析等领域。

通常来说,一般会涉及到以下步骤:

1.收集设备信息:收集与设备相关的各种信息,包括硬件信息(如CPU、GPU、内存、存储器等)、操作系统信息(如操作系统版本、语言、时区等)、浏览器信息(如用户代理字符串、插件、字体等)以及网络信息(如IP地址、DNS设置等)等。

2.加工信息:将收集到的设备信息进行处理和加工,提取设备的特征和属性,如操作系统位数、浏览器版本、屏幕分辨率、插件列表、语言设置等等。

3.生成设备指纹:根据加工后的设备信息,生成设备指纹,并将其存储到服务器或本地数据库中,用于后续的设备识别和跟踪。

4.设备指纹更新:设备指纹可能会因为硬件或软件的变化而发生变化,因此需要定期更新和验证设备指纹,以确保设备的唯一性和准确性。

具体代码实现

import hashlib
import json
import os

# 收集设备信息
def collect_device_info():
    info = {}
    info['platform'] = os.name
    info['hostname'] = os.uname()[1]
    info['os'] = os.uname()[0] + ' ' + os.uname()[3]
    info['browser'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
    return info

# 加工信息
def process_info(info):
    processed_info = {}
    processed_info['platform'] = info['platform']
    processed_info['os'] = info['os']
    processed_info['browser'] = info['browser']
    return processed_info

# 生成设备指纹
def generate_fingerprint(info):
    processed_info = process_info(info)
    json_info = json.dumps(processed_info, sort_keys=True)
    fingerprint = hashlib.md5(json_info.encode('utf-8')).hexdigest()
    return fingerprint

# 测试
if __name__ == '__main__':
    info = collect_device_info()
    fingerprint = generate_fingerprint(info)
    print(fingerprint)

其实只是一个很简单的使用Python内置的库进行设备信息的收集和处理的过程,其中使用了MD5算法生成设备指纹。

如果有企业实际需要,其实最好是在此基础之上,去做优化和升级。

当然,最简单的方式,就是找一个现成的设备指纹系统:顶象设备指纹


小飞象
80 声望5 粉丝