基于机器学习分析指纹相似度的跨浏览器设备识别方法
技术领域
本发明涉及设备识别技术领域,尤其涉及一种基于机器学习分析指纹相似度的跨浏览器设备识别方法。
背景技术
2010年,Eckersley,Peter等人提出使用收集设备指纹信息的方法来识别设备,但是对设备指纹特征的处理非常简单,仅仅是将设备指纹特征进行哈希运算,并且只能做到单个浏览器的识别,无法做到同一设备跨浏览器识别。
2017年Cao,Yinzhi等人提出使用复合图片变换作为设备特征,如此做到了跨浏览器设备识别,但是该方法跨浏览器识别的准确度比较低,仅仅有83.24%,并且执行操作非常耗时,在15秒-25秒之间,基本无法实际应用,对设备指纹特征的处理也不够科学,无法准确计算出相似度。
发明内容
为了克服现有技术的不足,本发明提供了一种基于机器学习分析指纹相似度的跨浏览器设备识别方法,通过利用多种指纹特征信息形成指纹特征,并且采用更加合理的机器学习的方法来分析指纹特征信息的相似度,达到跨浏览器设备识别的效果。具体采用的技术方案如下:
一种基于机器学习分析指纹相似度的跨浏览器设备识别方法,包括以下步骤:
采集设备指纹特征信息,并将所述设备指纹特征信息上传到服务端;
在数据库中查找是否存在相同的设备指纹,若存在,则判断为回访设备;否则,将所述设备指纹特征信息存储到所述数据库中;
所述服务端对所述设备指纹特征信息进行分类;
所述服务端对不同分类中的每种特征信息使用特征距离函数计算特征距离,然后再使用指纹组距离函数计算指纹组距离;
采用机器学习模型判断所述设备指纹特征信息是否为回访设备的指纹特征信息,如果是,则判定为回防设备,否则为新设备。
优选的,所述采集设备指纹特征信息,并将所述设备指纹特征信息上传到服务端为,通过Web站点加载Javascript,采集21种设备指纹特征信息,并将所述所述设备指纹特征信息通过Ajax上传到服务端。
优选的,所述21种设备指纹特征信息为屏幕分辨率、时区、CPU类型、平台、触感屏特征、像素比、IP组,核心数、GPU硬件信息、声卡硬件信息、字体、浏览器用户代理、语言、插件、GPU渲染图片透明度alpha=0.2、GPU渲染图片透明度alpha=0.4、GPU渲染图片透明度alpha=0.6、GPU渲染图片透明度alpha=0.8、GPU渲染图片纹理值、GPU渲染图片光照、音频指纹。
优选的,所述服务端对所述设备指纹特征信息进行分类为,对所述21种设备指纹特征信息进行分类,分类类别包括标称特征、二元特征和列表特征,其中,所述二元特征为触感屏特征;所述标称特征为屏幕分辨率、时区、CPU类型、平台、像素比、IP组,核心数、GPU硬件信息、声卡硬件信息、字体、浏览器用户代理、语言、插件;所述列表特征为GPU渲染图片透明度alpha=0.2、GPU渲染图片透明度alpha=0.4、GPU渲染图片透明度alpha=0.6、GPU渲染图片透明度alpha=0.8、GPU渲染图片纹理值、GPU渲染图片光照、音频指纹。
优选的,所述标称特征对应的标称特征距离函数为,
其中,xi为有一定取值范围的字符串。
优选的,所述二元特征对应的二元特征距离函数为,
其中,xi∈{0,1}。
优选的,所述列表特征的对应的列表特征距离函数为,
优选的,所述指纹组距离函数为,
其中,ymn为用户Um跟用户Un指纹组的距离,k为特征总数,wi为第i个特征的权值。
优选的,所述机器学习模型为KNN模型。
优选的,所述KNN模型的距离阈值S为[3,3.5],邻近数K为[4,7]。
相比现有技术,本发明提供的一种基于机器学习分析指纹相似度的跨浏览器设备识别方法,通过跨浏览器区分度和准确度更加高的GPU(Graphics Processing Unit:图形处理器)渲染图片指纹和通过WEBRTC(Web Real-Time Communication:源自网页实时通信)交换SDP(Service Design Package:服务设计包)数据中获取的三种IP作为指纹特征,并且采用更加合理的机器学习的方法来分析设备指纹特征的相似度,达到跨浏览器设备识别的效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。本发明的具体实施方式由以下实施例及其附图详细给出。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明一个实施例中的基于机器学习分析指纹相似度的跨浏览器设备识别方法流程图;
图2为本发明一个实施例中的21种设备指纹特征信息列表。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
一种于机器学习分析指纹相似度的跨浏览器设备识别方法包括以下步骤:采集设备指纹特征信息,并将所述设备指纹特征信息上传到服务端;
在数据库中查找是否存在相同的设备指纹,若存在,则判断为回访设备;否则,将所述设备指纹特征信息存储到所述数据库中;
所述服务端对所述设备指纹特征信息进行分类;
所述服务端对不同分类中的每种特征信息使用特征距离函数计算特征距离,然后再使用指纹组距离函数计算指纹组距离;
采用机器学习模型判断所述设备指纹特征信息是否为回访设备的指纹特征信息,如果是,则判定为回防设备,否则为新设备。
图1为本发明提供的基于机器学习分析指纹相似度的跨浏览器设备识别方法的一个实施例流程图,参考图1:
步骤1:采集21种设备指纹特征信息:通过web站点加载Javascript,采集21种设备指纹特征信息,并将采集的特征信息通过Ajax(Asynchronous Javascript And XML:异步JavaScript和XML)上传到服务端。
步骤2:查询是否存在相同的设备指纹:在数据库中查找是否存在相同的指纹,若存在,则判断为回访设备;否则,将设备指纹特征信息存储到数据库,转至步骤3。
步骤3:服务端对21种设备指纹特征信息进行分类,分为标称特征,二元特征,列表特征三类。
步骤4.对不同分类中的每种特征信息使用特征距离函数d计算距离,最后使用指纹组距离函数F计算新指纹组和数据库中的已存在的指纹组的距离D。优选的,不同分类的特征信息使用不同的特征距离函数d。
步骤5.采用机器学习的KNN(k-Nearest Neighbor algorithm:最邻近结点算法)模型判断新设备指纹是否为回访设备,其中距离阈值为S,邻近数为K。
同时,图2示出了本实施例中21种设备指纹特征信息的列表。
本实施例中,步骤3的所述的标称特征,二元特征,列表特征与21种设备指纹特征信息的对应关系如下:
(1).二元特征:Touch screen(触感屏特征)。
(2).标称特征:Screen Resolution(屏幕分辨率),Timezone(时区),CPU class(CPU类型),Platform(平台),Pixel Ratio(像素比),Core number(核心数),Device GPUinformation(GPU硬件信息),Device Audio information(声卡硬件信息),IP组,UserAgent(浏览器用户代理),Language(语言),Js font(字体),plugin(插件)。
(3).列表特征:GPU PNG(alpha=0.2)(GPU渲染图片透明度alpha=0.2),GPU PNG(alpha=0.4)(GPU渲染图片透明度alpha=0.4),GPU PNG(alpha=0.6)(GPU渲染图片透明度alpha=0.6),GPU PNG(alpha=0.8)(GPU渲染图片透明度alpha=0.8),GPU PNG(texture)(GPU渲染图片纹理值),GPU PNG(light)(GPU渲染图片光照),Audiofingerprint(音频指纹)。
我们知道,常见的距离函数d有欧式距离/曼哈顿距离/切必雪夫距离/闵可夫斯基距离/马氏距离(S为协方差矩阵)/夹角余弦距离/杰卡德相似系数/相关系数等。本实施例中,对不同分类下的设备指纹特征信息利用不同的特征距离函数进行距离计算,具体如下:
(1)二元特征距离计算函数为:
(2)标称特征距离计算函数为:
(3)列表特征的距离计算函数为:
上述实施例中,指纹组距离函数F为,
ymn为用户Um跟用户Un指纹组的距离,k为特征总数,wi为第i个特征的权值。
步骤5中的KNN模型中的距离阈值S和邻近数K,经过多批次实验测试,S的值为[3,3.5],K的值为[4,7],准确度较佳,通过机器学习模型的指纹特征分析,设备识别准确度达到98.1%,较前人的研究有很大提高。基于静态识别的准确率仅为76.3%,而本申请提供的基于机器学习分析的准确率高达98.1%。
下面结合图2,对21种的某些较为特别的设备指纹特征信息的获取过程进行详细说明:
(1).其中序号7的IP组信息,通过Javascript的WEBRTC相关API(ApplicationProgramming Interface,应用程序编程接口)获取,具体如下:
WebRTC使用PeerConnection的接口来建立点对点连接,新建一个类newwebkitRTCPeerConnection,然后传入第三方STUN(Simple Traversal of UDP ThroughNetwork Address Translators)服务器的地址,这里使用的是stun.voiparound.com,首先我们作为视频请求的发起者先发送自己的sessionDescription信息通过然后在回调函数中接受对方的sessionDescription信息,具体实现如下:
(a).发送自己的SDP信息:peerConnection.createOffer()
(b).应答对方的SDP信息:peerConnection.setRemoteDescription()
其中SDP(sessionDescription)信息就包含了对方的详细IP,包括内网IP,代理IP,出口IP。
(2).其中序号9的GPU硬件信息,通过Javascript的WEBGL API可获取到,GPU厂商,GPU型号,GPU类型,GPU片段着色器默认配置,GPU顶点着色器默认配置,GPU渲染器默认配置。
(3).其中序号10的声卡硬件信息,通过Javascript的Audio API可获取声卡采样率,输入数,输出数,通道数,通道范围,通道模式,通道解释。
(4).其中序号21的音频指纹,采用Javascript的Audio API,生成一段正弦波或者三角波,然后链接到分析节点AnalyerNode,采用createDynamicsCompressor,对音频做动态压缩处理,最后获取音频频域信息作为音频指纹,因为不同的浏览器createDynamicsCompressor产生的动态压缩效果不同,使得音频指纹具有区分设备的作用。
(5).其中序号15-18为GPU渲染图片指纹,经过对GPU渲染机制的深入研究,发现不同的GPU在渲染两张图片叠加,图片具有一定的透明度的场景时,前后景图片的叠加算法不同,从而导致渲染出来的图片不同,alpha为控制通道透明度的参数,分别设置alpha为0.2,0.4,0.6,0.8,渲染出四张图片,作为GPU渲染的图片指纹,来反映设备之间的差别。依次取图片的像素点,将像素点信息按顺序保存到元组中,作为图片指纹。
(6).其中序号19,20为GPU渲染图片指纹,经过对GPU渲染机制的深入研究,发现不同的GPU的片元着色器在处理顶点着色器传入的UV,法线,做像素插入的时候,插值算法在不同的GPU之间是不同的,从而导致渲染出来的图片不同,渲染纹理和渲染光照,可以较好的反映该插值算法的不同。
渲染纹理采用将一张平面图片投影到3D模型上,利用得到的最终图片,来反映纹理渲染结果。渲染光照采用定点光源照亮3D模型,采用逐片元光照的方法,利用得到的最终图片反映光照渲染结果,其中定点光源坐标为(0,0,0),3D模型中心坐标为(10,10,10)。最后,依次取图片的像素点,将像素点信息按顺序保存到元组中,作为图片指纹。
本申请创新性的提出跨浏览器区分度和准确度更加高的GPU渲染图片指纹,并且采用更加合理的机器学习的方法来分析设备指纹特征的相似度,大大提高了设备识别的准确率和效率。
以上,仅为本发明的较佳实施例而已,并非对本发明作任何形式上的限制;凡本行业的普通技术人员均可按说明书附图所示和以上而顺畅地实施本发明;但是,凡熟悉本专业的技术人员在不脱离本发明技术方案范围内,利用以上所揭示的技术内容而做出的些许更动、修饰与演变的等同变化,均为本发明的等效实施例;同时,凡依据本发明的实质技术对以上实施例所作的任何等同变化的更动、修饰与演变等,均仍属于本发明的技术方案的保护范围之内。