一种浏览器用户代理识别方法、***及装置
技术领域
本发明涉及网络安全技术领域,尤指一种浏览器用户代理识别方法、***及装置。
背景技术
用户使用浏览器进行网络操作时,使用用户代理(User Agent,UA)使得服务器能够识别客户使用的操作***及版本、中央处理单元(Central Processing Unit)CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等,User Agent一般是一个特殊字符串。
现有技术基本上信任浏览器提交的User-agent,这就导致某些情况下,用户可以伪造User-agent,以获得一些好处,或者绕过网站运营方的一些限制,如:
用户可以使用伪造的浏览器User-agent抓取数据。
用户可以使用伪造的浏览器User-agent来访问一些只有某些特定User-agent才能访问的资源。
用户可以使用伪造的浏览器User-agent突破投票活动等对User-agent做的限制。
为了避免这种伪造User-agent的行为,目前常用的方法是,利用浏览器实现上的差异,让用户浏览器中运行指定的javascript(一种直译式脚本语言),并收集结果。这种方法由于以下原因容易被伪造:
这种方法已经存在很久了,有经验的伪装者可以很熟练地应对;且由于javascript脚本必须传输到浏览器上执行,伪装者可以轻易发现并对其进行分析,从而避开javascript脚本的收集,使其伪装行为不被发现。
可见,现有技术中对浏览器识别的脚本难以真正发挥作用,伪装者可以轻易突破,伪装者仍然很容易使用伪造的User-agent来进行一些被限制的操作,对伪装者的识别难以实现,识别的准确性和有效性差。
发明内容
本发明实施例提供一种浏览器用户代理识别方法、***及装置,用以解决现有技术中存在的对用户代理真伪识别准确性差,不能有效的识别伪装者的问题。
一方面,本发明实施例提供了一种浏览器用户代理识别方法,包括:
获取用户在网络访问请求过程中发送的用户代理信息;
查询用户代理特征库中是否记录有该用户代理的用户代理信息;
若有,将获取的用户代理信息与用户代理特征库中记录的用户代理信息进行匹配;当相匹配时,推定不是伪造的用户代理;当不匹配时,确定为伪造的用户代理;
若无,则将获取的用户代理信息记录到暂存特征库中。
在一些可选的实施例中,所述获取用户在网络访问请求过程中发送的用户代理信息,具体包括:
接收用户发送的安全套接层SSL的客户端握手消息;
从所述客户端握手消息中获取携带的用户代理信息。
在一些可选的实施例中,所述用户代理信息,包括下列用户代理特征信息中的至少一个:客户端支持的SSL版本、加密套件、曲线和签名算法。
在一些可选的实施例中,所述将获取的用户代理信息与用户代理特征库中记录的用户代理信息进行匹配,判断是否相匹配的过程,具体包括:
将获取的用户代理信息中包含的各信息逐一进行比对,若所有信息均对应相同时,判定为相匹配,若有任何一个信息不相同时,判定为不相匹配。
在一些可选的实施例中,所述用户代理特征库的形成过程,包括:
用户使用用户代理访问网络时,记录用户使用的用户代理信息到暂存特征库中;
通过机器学习或人工修订列表的方式,对记录的同一用户代理的多个用户代理特征进行筛选识别,提取用户代理信息中的用户代理特征信息,形成该用户代理的正确的用户代理信息并保存。
本发明实施例还提供一种浏览器用户代理识别装置,包括:
获取模块,用于获取用户在网络访问请求过程中发送的用户代理信息;
查询模块,用于查询用户代理特征库中是否记录有该用户代理的用户代理信息;若有,通知识别模块;若无,通知库生成模块;
所述识别模块,用于将获取的用户代理信息与用户代理特征库中记录的用户代理信息进行匹配;当相匹配时,推定不是伪造的用户代理;当不匹配时,确定为伪造的用户代理;
所述库生成模块,用于将获取的用户代理信息记录到暂存特征库中。
在一些可选的实施例中,所述获取模块,具体用于:
接收用户发送的安全套接层SSL的客户端握手消息;
从所述客户端握手消息中获取携带的用户代理信息。
在一些可选的实施例中,所述识别模块,具体用于:
将获取的用户代理信息中包含的各信息逐一进行比对,若所有信息均对应相同时,判定为匹配,若有任何一个信息不相同时,判定为不相匹配;
所述用户代理信息,包括下列用户代理特征信息中的至少一个:客户端支持的SSL版本、加密套件、曲线和签名算法。
在一些可选的实施例中,所述库生成模块,还用于:
用户使用用户代理访问网络时,记录用户使用的用户代理信息到暂存特征库中;
通过机器学习或人工修订列表的方式,对记录的同一用户代理的多个用户代理信息进行筛选识别,提取用户代理信息中的用户代理特征信息,形成该用户代理的正确的用户代理信息并保存。
本发明实施例还提供一种浏览器用户代理识别***,包括:客户端和识别服务器;
所述客户端,用于在网络访问请求过程中向识别服务器发送用户代理信息;
所述识别服务器中包括上述的浏览器用户代理识别装置。
上述技术方案具有如下有益效果:用户访问网络的过程中,没有额外动作的情况下获取用户代理信息,并基于用户代理特征库对用户代理信息进行识别比对,以便识别用户代理是否是伪造的用户代理,该方法识别用户代理隐蔽性高,速度快,准确度高,实现简单、方便,可以有效地发现使用伪造的用户代理访问网络的行为。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一中浏览器用户代理识别方法的流程图;
图2是本发明实施例二中浏览器用户代理识别方法的流程图;
图3是本发明实施例中浏览器用户代理识别***的结构示意图;
图4是本发明实施例中浏览器用户代理识别装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术中存在的不能有效的识别伪装者使用的用户代理,对用户代理识别准确性差,难以实现准确、有效的真伪识别的问题,本发明实施例提供一种浏览器用户代理识别方法,能够准确的识别伪装用户代理,提高伪装者伪装用户代理的难度,保证网络安全,有效地避免伪装者使用伪装的用户代理进行非法或违规操作。
通过超文本传输安全协议(Hypertext Transfer Protocol Secure,HTTPS)是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,安全套接层(Secure SocketsLayer,SSL)及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
用户代理(UA)是HTTP协议中的一部分,属于头域的组成部分,它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作***及版本、浏览器内核、等信息的标识。通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;例如用手机访问网站和电脑访问是不一样的,这些是网站根据访问者的UA来判断的。UA可以进行伪装。
实施例一
本发明实施例一提供的浏览器用户代理识别方法,其流程如图1所示,包括如下步骤:
步骤S101:获取用户在网络访问请求过程中发送的用户代理信息。
在用户访问网络的过程中,可以针对特定的安全套接层(Secure Sockets Layer,SSL)请求,获取其用户代理信息。具体的,接收用户发送的SSL的客户端握手消息;从接收到的客户端握手消息中获取携带的用户代理信息。
用户在网络访问请求过程中按照HTTP协议发送用户代理信息。用户代理信息中包括一个或多用户代理特征信息。
比如,上述用户代理信息,包括下列用户代理特征信息中的至少一个:客户端支持的SSL版本、加密套件、曲线和签名算法。
步骤S102:查询用户代理特征库中是否记录有该用户代理的用户代理信息。
获取到用户代理信息后,查询预先建立的用户代理特征库,确定用户代理特征库中是否记录有该用户代理的相关记录信息。比如:其他用户使用该用户代理时,服务器记录下来的用户代理信息,和/或当前用户在此之前使用该用户代理时,服务器记录下来的用户代理信息等等,根据记录下来的至少一个用户代理信息在用户代理特征库中形成的该用户代理的记录信息。
若有执行步骤S103;若无执行步骤S106。
步骤S103:将获取的用户代理信息与用户代理特征库中记录的用户代理信息进行匹配。当相匹配时,执行步骤S104;当不相匹配时,执行步骤S105。
将获取的用户代理信息中包含的各用户代理特征信息逐一进行比对,若所有用户代理特征信息均对应相同时,判定为相匹配,若有任何一个用户代理特征信息不相同时,判定为不相匹配。比如匹配SSL版本是否正确,加密套件是否一致,曲线、加密算法是否都相同等等。
匹配处理之前还可以先对用户代理信息进行规范化处理,然后再进行逐一比对。规范化的动作是可选的。比如,一些用户代理会自动在上述字段中加入特定的特殊字符串集合中的一个,规范化预处理可以将其去掉,以简化后续处理流程、改善识别效果。
步骤S104:推定不是伪造的用户代理。
步骤S105:确定为伪造的用户代理。
步骤S106:将步骤S101中获取的用户代理信息记录到暂存特征库中。
也就是说,对于用户代理特征库中没有相关记录信息的用户代理,即不常见的用户代理,可以将其记录下来,放在暂存特征库中。如果后续还有该用户代理,可以继续记录,匹配最终形成该用户代理的正确的记录信息,并加入到用户代理特征库中。
上述方法中,在用户访问网络的过程中,可以通过记录学习的方式形成用户代理特征库,以便用于用户代理伪造识别。用户代理特征库的形成过程,包括:
用户使用用户代理访问网络时,记录用户使用的用户代理信息到暂存特征库中;
通过机器学习或人工修订列表的方式,对记录的同一用户代理的多个用户代理信息进行筛选识别,提取用户代理信息中的用户代理特征信息,形成该用户代理的正确的用户代理信息并保存。
实施例二
本发明实施例二提供的浏览器用户代理识别方法,其流程如图2所示,包括如下步骤:
步骤S201:监控到由用户请求访问网络。
网络侧的服务器监控用户使用浏览器等客户端访问网络的情况。
步骤S202:获取用户在网络访问请求过程中发送的用户代理信息。
对于特定的SSL请求,检查其SSL的客户端握手消息(Client hello)中的SSL版本和加密套件(cipher suites),SSL版本和加密套件均是设定的一些字符串。客户端握手消息通常是指SSL握手时客户端首先发出的数据包。
例如:具体实现上,SSL版本可以是一个字符串,目前常见的有:SSLv2、SSLv3、TLSv1.0、TLSv1.1、TLSv1.2等等。
例如:具体实现上,SSL的加密套件(Cipher suites)可以是一组不定长的16位无符号整数。加密套件包括加密算法、HMAC算法,并且可以包含签名和密钥交换算法的一组算法的组合,是SSL协议中的一部分。
(椭圆)曲线(Curves),指用于椭圆曲线密码学中的椭圆曲线,通常通过TLS扩展传输。
签名算法(Signature algorithms),指包含签名和密钥交换算法的组合,通常独立列出、通过TLS扩展传输
当用户访问网络时,通过超文本传输协议(HyperText Transfer Protocol,HTTP)服务器插件或类似手段,将上述SSL版本和Cipher suites获取下来。
客户端进行HTTPS请求的过程中,必然会发送用户代理(User-agent),因此,此User-agent基于服务器插件之类的技术,可以轻松被记录下来。
步骤S203:判断该用户代理是否是常见的用户代理。若是,执行步骤S204;若否,执行步骤S207。
记录下来当前用户访问网络所使用的用户代理信息之后,可以将记录下来的用户代理信息与用户代理特征库中的信息进行查询比较,看是否有该用户代理的相关信息记录,当有时,认为是常见的用户代理,否则认为是不常见的用户代理。
步骤S204:将获取的用户代理信息与用户代理特征库中记录的用户代理信息进行比对。
对于常见的User-agent,对用户代理信息中包含的各个用户代理特征信息项,一一进行比对,验证其一致性。若比对结果为各用户代理特征信息项均相符,执行步骤S205;若比对结果为各用户代理特征信息项中有任一项不相符,执行步骤S206。
可选的,也可以不必对全部的信息,而指定必选的比对信息,如果必选的比对信息各项均相符,则执行步骤S205;若必选的比对信息中有任一项不相符,执行步骤S206。
比如,当用户代理信息中包括SSL版本、Cipher suites信息时,将User-agent中包括的SSL版本、Cipher suites与用户代理特征库中记录的该用户代理的SSL版本、Ciphersuites进行比对。
可选的,当用户代理信息中还包括曲线、识别算法等信息时,将User-agent中包括的曲线、识别算法与用户代理特征库中记录的该用户代理的曲线、识别算法也进行比对。
可选的,浏览器等客户端使用的User-agent字符串中还可以包括浏览器标识、操作***标识、加密等级标识、浏览器语言、渲染引擎、版本信息,但各个浏览器使用的User-agent字符串的格式内容也可能会有所不同。其中,对于浏览器标识,出于兼容等方面的考虑,很多浏览器的标识相同,其并不能说明浏览器的真实版本,真实版本信息在User-agent字串尾部。对于操作***标识。标识了用户使用操作***。加密等级标识可以用不同的字符表示,例如:N表示无安全加密,I表示弱安全加密,U表示强安全加密,等等。对于浏览器语言,可以在浏览器的设置项中制定不同的语言。对于渲染引擎,其格式为:渲染引擎/版本信息。对于版本信息,显示浏览器的真实版本信息,格式为:浏览器/版本信息。
可选的,当用户代理信息中还包括曲线、识别算法等信息时,将将User-agent中包括的曲线、识别算法与用户代理特征库中记录的该用户代理的曲线、识别算法也进行比对。
针对该User-agent,特别是针对User-agent表示的操作***和浏览器的组合,可以通过网上的资料或者自行实验,获取其(默认的)支持的SSL版本和Cipher suites。
步骤S205:推定不是伪造的用户代理。
对于常见的用户代理,根据比对结果,即能确定用户代理信息的真实性,因此,在比对信息均相符合,确定不是伪造的用户代理。
步骤S206:确定为伪造的用户代理。
在比对信息中包含不相符合的信息时,推定是伪造的用户代理。
即如果根据比较,用户传递的User-agent和其传递的Cipher suites不符,可以推定为伪造User-agent。
步骤S207:记录用户代理信息到暂存特征库中。
如果是不常见或从未见过的User-agent,将其记录到暂存特征库中,即将该用户代理的特征入库,记录用户代理中包含的信息。当该用户代理的记录次数只有一次时,可以认为是暂时记录,当记录次数增多后,可以通过机器学习或者人工修订列表,判断该User-agent的默认的正确的SSL版本和cipher suites;学习修订后的用户代理信息存入用户代理特征库中,对以后出现的类似User-agent,特别是其表示的操作***和浏览器的组合,即可参照常见的User-agent进行处理。
上述方法中,可以变通的,也可以将Cipher suites信息传递给上层的脚本程序,如超文本预处理器(Hypertext Preprocessor,PHP),使用上层脚本语言结合User-agent等其他信息进行识别。
基于同一发明构思,本发明实施例还提供一种浏览器用户代理识别***,其结构如图3所示,该***包括识别服务器31和客户端32。
识别服务器31,用于获取用户在网络访问请求过程中发送的用户代理信息;查询用户代理特征库中是否记录有该用户代理的用户代理信息;若有,将获取的用户代理信息与用户代理特征库中记录的用户代理信息进行匹配;当相匹配时,推定不是伪造的用户代理;当不匹配时,确定为伪造的用户代理;若无,将该用户代理信息记录到暂存特征库中。
客户端32,用于在网络访问请求过程中向识别服务器发送用户代理信息。
识别服务器31中设置浏览器用户代理识别装置来实现上述功能。
上述浏览器用户代理识别装置的结构如图4所示,包括:获取模块401、查询模块402、识别模块403和库生成模块404。
获取模块401,用于获取用户在网络访问请求过程中发送的用户代理信息。
查询模块402,用于查询用户代理特征库中是否记录有该用户代理的用户代理信息;若有,通知识别模块403;若无,通知库生成模块404。
识别模块403,用于将获取的用户代理信息与用户代理特征库中记录的用户代理信息进行匹配;当相匹配时,推定不是伪造的用户代理;当不匹配时,确定为伪造的用户代理;
库生成模块404,用于将获取的用户代理信息记录到暂存特征库中。
优选的,上述获取模块401,具体用于接收用户发送的安全套接层SSL的客户端握手消息;从客户端握手消息中获取携带的用户代理信息。
优选的,上述识别模块403,具体用于将获取的用户代理信息中包含的各用户代理特征信息逐一进行比对,若所有用户代理特征信息均对应相同时,确认相匹配,若有任何一个用户代理特征信息不相同时,确认不相匹配;其中,用户代理信息,包括下列用户代理特征信息中的至少一个:客户端支持的SSL版本、加密套件、曲线和签名算法。
优选的,上述库生成模块,还用于用户使用用户代理访问网络时,记录用户使用的用户代理信息到暂存特征库中;通过机器学习或人工修订列表的方式,对记录的同一用户代理的多个用户代理信息进行筛选识别,提取用户代理信息中的用户代理特征信息,形成该用户代理的正确的用户代理信息并保存。
本发明的上述方法、***和装置,可用于网络投票等应用场景下,识别浏览器User-agent是否为伪造的用户代理,避免伪装投票行为,上述方法和***可以显著提高伪装User-agent的难度。
上述实现方式具有如下优势:
难以察觉。一般用户意识不到此数据存在。同时,目前已经广泛使用SSL服务,用户使用SSL请求也是很正常的事情,在用户侧没有任何额外的动作。
难以伪造。伪造SSL的cipher suites理论上是可行的,至少比前述伪造用于识别用户User-agent的javascript脚本困难得多。
效率高。不需要客户额外做什么事情,即使用户无法或拒绝执行javascript,也可以使用。此方案可以节约客户端请求,减少开销。
本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个***的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。