前语: 今天是星期一,我们都应该知道,这种日子,出于人道主义和人体构造,是不应该作业的。 我的左半脑还沉溺在周末的高兴之中,右半脑在为接下来五天而发愁。所以,来写篇短文摸个鱼吧。
设备指纹界说
设备指纹通过用户上网设备的硬件、网络、环境等特征信息生成设备的仅有标识,可有用辨认模拟器、刷机改机、Root、越狱、劫持注入等危险。就设备指纹的发展史来看,设备指纹从原来的IP到现在的设备指纹,其中的技术和安全性都有很大的提高。
获取原理
获取设备指纹的原理是使用设备的各种特点和特征,包括硬件、操作系统、网络设置、浏览器装备和插件等信息,对设备进行仅有性的标识和辨认。
设备指纹获取原理是基于设备本身的特点和特征来完成的,因而可以在不依赖用户身份信息的情况下,对设备进行仅有性的标识和辨认,应用于广告追踪、反诈骗、用户行为分析等范畴。
一般来说,一般会涉及到以下过程:
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算法生成设备指纹。
如果有企业实际需要,其实最好是在此根底之上,去做优化和升级。
当然,最简单的方式,就是找一个现成的设备指纹系统:顶象设备指纹