浏览器类型识别方法、装置及系统
技术领域
本发明涉及电子与信息技术科学领域,尤其涉及浏览器类型识别方法、装置及系统。
背景技术
表明用户浏览器身份的就是用户代理(USER AGENT,简称UA)。在超文本传送(以下简称HTTP)协议中用户代理字段用来表明发出请求的是什么样的浏览器。在网站对用户的识别上,用什么样的浏览器是一个很重要的指标。
现有的识别技术主要根据一定的规则解析出UA串中的各字段,然后基于各个字段来确定浏览器的类型。在UA串的构造中,有很多字段的含义是明确的,是浏览器业界的通用规则。在一个UA串中有很多字段。通过分析UA的串分解出对应的字段如操作系统名称,操作系统版本,浏览器内核名称,版本号,插件名称,继承自哪些内核等,利用这些信息来确定浏览器的类型。然而,这种在线的利用规则将UA字段的值解析为各个字段的识别方式效率较低,较难满足在线系统对浏览器类型识别的高实时性要求。
然而,UA字段的值并非固定,会随着浏览器类型、浏览器版本、所运行的系统环境的变化而是新月异。且这种变化取决于浏览器应用的研究开发者,开发者设置UA字段的值时,不会告知从事UA字段分析研发的技术人员,因此,这种变化对于UA字段分析研发的技术人员而言是不可预测的。因此,如何利用不断变化的UA字段的值来确定用户所采用浏览器类型是一个重要的研究课题。
发明内容
本发明所要解决的技术问题之一是需要提供一种能够提高浏览器类型辨识效率的浏览器类型识别方法、装置及系统。
为了解决上述技术问题,本发明提供了一种浏览器类型识别方法。该方法包括:
接收步骤,接收浏览器发来的网络访问请求;
解析步骤,解析所述请求中的用户代理串;
计算步骤,通过哈希算法对所述请求中的用户代理串进行计算,得到与所述请求中的用户代理串对应的哈希值;
第一确定步骤,若指定表中存在所述哈希值到浏览器类型的映射,则将与所述哈希值对应的浏览器类型确定为所述浏览器的浏览器类型;
其中,用户代理串为用户代理字段的值,所述指定表用于存储利用所述哈希算法对各个用户代理串分别算得的各哈希值到浏览器类型的映射。
根据本发明又一方面的方法,还包括:第二确定步骤,若指定表中不存在所述哈希值到浏览器类型的映射,则利用AC自动机来确定所述浏览器的浏览器类型。
根据本发明又一方面的方法,所述第一确定步骤进一步包括:若指定表中不存在所述哈希值到浏览器类型的映射,将所述请求中的用户代理串进行存储;所述第二确定步骤进一步包括:针对在所述第一确定步骤中存储的各用户代理串利用AC自动机来确定其对应的浏览器类型。
根据本发明又一方面的方法,所述第二确定步骤进一步包括针对所存储的各用户代理串执行如下处理:利用AC自动机进行匹配以确定所述AC自动机的单词查找树中是否存在与用户代理串对应的用户代理模式相匹配的路径,若匹配成功,则将AC自动机的单词查找树中所匹配的路径的叶节点对应的浏览器类型确定为与所述请求中的用户代理串对应的浏览器类型;其中,用户代理串对应的用户代理模式为该用户代理串中的一个字段或一个以上字段的任意顺序连接所构成的字符串;所述AC自动机的单词查找树为以浏览器类型已知的用户代理模式作为模式串而构建的单词查找树,每个单词查找树的叶节点对应于一种浏览器类型。
根据本发明又一方面的方法,用户代理串对应的用户代理模式为将该用户代理串中的各字段依据各自在UA串中的出现顺序前后相接所构成的字符串。
根据本发明又一方面的方法,所述第二确定步骤进一步包括:针对所存储的各用户代理串,利用AC自动机进行匹配,若匹配失败,则将用户指定的浏览器类型确定为与所述请求中的用户代理串对应的浏览器类型。
根据本发明又一方面的方法,所述第二确定步骤进一步包括:若匹配失败,还执行以下处理:将与所述请求中的用户代理串对应的用户代理模式作为模式串添加所述AC自动机的单词查找树的模式串,并将所添加的模式串的路径的叶节点对应的浏览器类型设置为所确定的浏览器类型。
根据本发明又一方面的方法,所述第一确定步骤进一步包括:将所述请求中的用户代理串存储在指定文件中;所述第二确定步骤进一步包括:每隔预设时长复制或下载所述指定文件,针对所复制或下载后的文件中的各用户代理串利用AC自动机来确定其对应的浏览器类型。
根据本发明又一方面的方法,若指定表中不存在所述哈希值到浏览器类型的映射,则将从依据所述哈希算法而算得的哈希值到所确定的浏览器类型之间的映射添加至所述指定表中。
根据本发明又一方面,还提供了一种浏览器类型识别系统。该系统包括第一信息处理装置,所述第一信息处理装置包括:
接收模块,接收浏览器发来的网络访问请求;
解析模块,解析所述请求中的用户代理串;
计算模块,通过哈希算法地所述请求中的用户代理串进行计算,得到与所述请求中的用户代理串对应的哈希值;
确定模块,若指定表中存在所述哈希值到浏览器类型的映射,则将与所述哈希值对应的浏览器类型确定为所述浏览器的浏览器类型;
其中,用户代理串为用户代理字段的值,所述指定表用于存储利用所述哈希算法对各个用户代理串分别算得的各哈希值到浏览器类型的映射。
根据本发明又一方面的系统,还包括第二信息处理装置,所述第二信息处理装置包括第二确定模块,其中:
所述第一确定模块进一步在指定表中不存在所述哈希值到浏览器类型的映射的情况下将所述请求中的用户代理串存储在指定文件中;
所述第二确定模块每隔预设时长复制所述指定文件,针对从所述第一信息装置下载或复制的所述指定文件中的各用户代理串利用AC自动机来确定其对应的浏览器类型。
根据本发明又一方面还提供了一种浏览器类型识别装置。所述浏览器类型识别装置包括接收模块、解析模块、计算模块和第一确定模块,其中:
接收模块,其接收浏览器发来的网络访问请求;
解析模块,其解析所述请求中的用户代理串;
计算模块,其通过哈希算法地所述请求中的用户代理串进行计算,得到与所述请求中的用户代理串对应的哈希值;
第一确定模块,若指定表中存在所述哈希值到浏览器类型的映射,则第一确定模块将与所述哈希值对应的浏览器类型确定为所述浏览器的浏览器类型;
其中,用户代理串为用户代理字段的值,所述指定表用于存储利用所述哈希算法对各个用户代理串分别算得的各哈希值到浏览器类型的映射。
根据本发明又一方面的装置,还包括:
第二确定模块,若指定表中不存在所述哈希值到浏览器类型的映射,则利用AC自动机来确定所述浏览器的浏览器类型。
本发明提供的一种浏览器类型识别系统,包括:
接收模块,接收浏览器发来的网络访问请求;
解析模块,解析所述请求中的用户代理串;
计算模块,通过哈希算法对所述请求中的用户代理串进行计算,得到与所述请求中的用户代理串对应的哈希值;
第一确定模块,若指定表中存在所述哈希值到浏览器类型的映射,则将与所述哈希值对应的浏览器类型确定为所述浏览器的浏览器类型;
第二确定模块,若所述指定表中不存在所述哈希值到浏览器类型的映射,则利用AC自动机(Aho-Corasick automation)来确定所述浏览器的浏览器类型;
其中,用户代理串为用户代理字段的值,所述指定表用于存储利用所述哈希算法对各个用户代理串分别算得的各哈希值到浏览器类型的映射;
所述第一确定模块进一步在所述指定表中不存在所述哈希值到浏览器类型的映射,将所述请求中的用户代理串进行存储;
所述第二确定模块进一步针对所述第一确定模块存储的各用户代理串利用AC自动机来确定其对应的浏览器类型;并进一步包括针对所存储的各用户代理串执行如下处理:
利用AC自动机进行匹配以确定所述AC自动机的单词查找树中是否存在与用户代理串对应的用户代理模式相匹配的路径,若匹配成功,则将AC自动机的单词查找树中所匹配的路径的叶节点对应的浏览器类型确定为与所述请求中的用户代理串对应的浏览器类型;
其中,用户代理串对应的用户代理模式为该用户代理串中的一个字段或一个以上字段的任意顺序连接所构成的字符串;所述AC自动机的单词查找树为以浏览器类型已知的用户代理模式作为模式串构建的单词查找树,每个单词查找树的叶节点对应于一种浏览器类型。
本发明提供了一种浏览器类型识别装置,包括:
接收模块,其接收浏览器发来的网络访问请求;
解析模块,其解析所述请求中的用户代理串;
计算模块,其通过哈希算法对所述请求中的用户代理串进行计算,得到与所述请求中的用户代理串对应的哈希值;
第一确定模块,若指定表中存在所述哈希值到浏览器类型的映射,则第一确定模块将与所述哈希值对应的浏览器类型确定为所述浏览器的浏览器类型;
第二确定模块,若所述指定表中不存在所述哈希值到浏览器类型的映射,则利用AC自动机(Aho-Corasick automation)来确定所述浏览器的浏览器类型;
其中,用户代理串为用户代理字段的值,所述指定表用于存储利用所述哈希算法对各个用户代理串分别算得的各哈希值到浏览器类型的映射;
其中:
所述第一确定步骤进一步包括:若所述指定表中不存在所述哈希值到浏览器类型的映射,将所述请求中的用户代理串进行存储;
所述第二确定步骤进一步包括:针对在所述第一确定步骤中存储的各用户代理串利用AC自动机来确定其对应的浏览器类型;
所述第二确定步骤进一步包括针对所存储的各用户代理串执行如下处理:
利用AC自动机进行匹配以确定所述AC自动机的单词查找树中是否存在与用户代理串对应的用户代理模式相匹配的路径,若匹配成功,则将AC自动机的单词查找树中所匹配的路径的叶节点对应的浏览器类型确定为与所述请求中的用户代理串对应的浏览器类型;
其中,用户代理串对应的用户代理模式为该用户代理串中的一个字段或一个以上字段的任意顺序连接所构成的字符串;所述AC自动机的单词查找树为以浏览器类型已知的用户代理模式作为模式串构建的单词查找树,每个单词查找树的叶节点对应于一种浏览器类型。
与现有技术相比,本发明的一个或多个实施例通过利用存储了各个(整串的)用户代理串到浏览器类型的映射的哈希表来确定发来网络访问请求的浏览器的类型,大大提高了浏览器类型辨识效率,从而方便根据在线迅速识别的浏览器类型来进行后续处理。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1是根据本发明一实施例的浏览器类型识别方法的流程图;
图2是根据本发明一实施例的步骤S150的详细处理的流程示意图;
图3示出根据本实施例的浏览器类型识别装置的结构示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
参考图1来说明根据本实施例的浏览器类型识别方法的各步骤:
步骤S110,接收浏览器发来的网络访问请求;
步骤S120,解析所述请求中的用户代理串,用户代理串为用户代理字段的值;
步骤S130,通过哈希算法地所述请求中的用户代理串进行计算,得到与所述请求中的用户代理串对应的哈希值,判断指定表中是否存在所述哈希值到浏览器类型的映射,所述指定表用于存储利用所述哈希算法对各个用户代理串分别算得的各哈希值到浏览器类型的映射,若判断结果为是,则进入步骤S140。优选地,若判断结果为否,则进入步骤S150;
步骤S140将与所述哈希值对应的浏览器类型确定为所述浏览器的浏览器类型;
步骤S150,利用AC自动机来确定所述浏览器的浏览器类型。
步骤S110中,网络访问请求也称为Http(超文本传送协议)请求。收浏览器需要通过网络在线地发来Http请求。
步骤S120中,解析Http请求中的用户代理(User Agent,简称UA)字段的值,作为用户代理串(简称UA串)。
在步骤S130中,可对于步骤S120所解析得到的所述请求中的用户代理串进行哈希算法(如MD5算法)进行计算,得到与所述请求中的用户代理串对应的哈希值。
需要说明的是,通过与步骤S130中相同的哈希算法对已知的各UA串分别进行计算,分别得到哈希值。由于已知的各UA串的浏览器类型也是已知的。因此,可以将已知的各UA串及其对应的浏览器类型存储到一个指定表中。
进而,在步骤S140中,基于这个指定表,可以查找该指定表中是否存在步骤S130中算得的哈希值到浏览器类型的映射,若存在,则将与所算得的哈希值对应的浏览器类型确定为所述浏览器的浏览器类型。
区别于现有技术中,由于指定表中存储了从哈希值到浏览器类型的映射。因此在不需要将Http请求中的用户代理串分解为各个字段(例如,操作系统名称、操作系统版本、浏览器内核名称、版本号、插件名称、继承自哪些内核等)的情况下,便能够基于整个未经分解的UA串来通过指定表来确定浏览器的类型。进而,由于是对整个UA串进行哈希计算后,基于算得的哈希值进行匹配,而无需对整个UA串进行匹配,可以快速地确定发来http请求的该浏览器的类型,从而更好地向该浏览器提供后续的在线服务。
由于上述处理均为在与浏览器网络连接的情况下进行的,即,在线地接收浏览器发来的请求后,立即进行后续利用哈希算法来算得哈希值进而基于指定表来确定浏览器的类型,这个过程中并未与浏览器断开连接,因此将上述处理称为在线阶段。
下面对步骤S150进行详细说明本发明如何通过将基于UA字段的值确定浏览器类型的处理分为利用哈希表(在线地)识别和利用AC自动机(离线地)识别两个阶段,来较快地发现新的UA字段的值,从而在保证快速地基于UA字段的值识别浏览器类型的前提下,建立了一种持续发现新的UA字段的值的更新的机制。
步骤S150中,利用AC自动机(Aho-Corasick automation)来确定所述浏览器的浏览器类型。AC自动机在1975年产生于贝尔实验室。本发明的发明人创造性地提出将AC自动机应用于浏览器类型识别。更具体地,参考图2步骤S150可包括如下步骤:
步骤S151,将步骤S130中使得判断结果为否的用户代理串存储到指定文件。更具体地,当步骤S130中判断出某个用户代理串不在指定表中时,表明无法利用当前的指定表来确定其浏览器类型。可将这些无法利用当前的指定表来确定浏览器类型的用户代理串存储到指定文件中,以备后续处理。
当然,也可以不存储在指定文件,在计算系统性能较好的情况下,也可以存储在内存、缓冲等任意存储空间中。
步骤S152,等待预设时长,若到了预设时长,则进入步骤S153,以针对所述指定文件中的各用户代理串利用AC自动机来确定其对应的浏览器类型。这样,可在累积一定数量的无法利用当前的指定表来确定其浏览器类型的用户代理串后,利用AC自动机来确定其浏览器类型,可以减少系统分配及释放物理资源的频繁程度从而提高效率。
优选地,考虑到系统要根据步骤S110至S140的处理结果来对浏览器的网络访问请求尽快作出响应,否则会导致用户感觉浏览网页速度过慢甚至导致网络访问超时错误,因此可以利用第一信息处理装置来执行步骤S110至S140的处理的装置,而利用与第一信息处理装置相连接的第二信息处理装置处理步骤S150的处理。优选地,将所述用户代理串存储在第一信息处理装置中的指定文件中,每隔预设时长将所述指定文件下载或复制到第二信息处理装置,由第二信息处理装置针对所下载后的文件中的各用户代理串利用AC自动机来确定其对应的浏览器类型。这样,可以根据实时性要求的不同将计算机分配到不同的装置,从而进一步提高了系统性能。
步骤S153,解析出UA串中的例如操作系统名称、操作系统版本、浏览器内核名称、版本号、插件名称、继承自哪些内核等各字段。
由于UA串有一定的设置规则,如字段之间具有分割符等,可根据这些设置规则解析出UA串中的各字段的操作为现有技术,在些不再赘述。
步骤S154,将所解析出的各字段依据各自在UA串中的出现顺序前后相接,作为一个UA模式(用户代理模式)。一个浏览器类型可以有多个UA模式,一个UA模式只能有一个浏览器类型,根据UA模式来判断UA属于哪个浏览器。
步骤S155,利用指定AC自动机来中进行匹配,以确定AC自动机的单词查找树中是否存在与上述UA模式相匹配的路径,若匹配成功(存在),则进入步骤S156,反之(不存在),进入步骤S157。
步骤S156,由于AC自动机的单词查找树为以浏览器类型已知的UA模式作为模式串而构建的单词查找树,且每个单词查找树的叶节点对应于一种浏览器类型,可将AC自动机的单词查找树中所匹配的路径的叶节点对应的浏览器类型确定为与所述用户代理串对应的浏览器类型。然后进入步骤S159。
步骤S157,则将用户指定的浏览器类型确定为与用户代理串对应的浏览器类型。进入步骤S158。
步骤S158,更新AC自动机的单词查找树,更具体地,将与用户代理串对应的UA模式作为模式串添加至所述AC自动机的单词查找树,并将所添加的模式串的路径的叶节点对应的浏览器类型设置为步骤S157中确定的浏览器类型。这样,可以不断地更新AC自动机以使得当再次出现相同的UA模式串时无需用户介入便可自动匹配。然后进入步骤S159。
步骤S159,更新用于步骤S130中的指定表,若指定表中不存在所述哈希值到浏览器类型的映射,则将从依据步骤S130中的哈希算法而算得的哈希值到所确定的浏览器类型之间的映射添加至所述指定表中。这样,当在S140发现指定表中不存在步骤S130中算得的哈希值到浏览器类型的映射时(即出现新的不能利用指定表确定浏览器类型的UA串时),可以在根据AC自动机确定或用户指定的浏览器类型来更新指定表,从而建立完善的更新机制。
需要说明的是,上述详细说明了以浏览器类型已知的UA模式作为模式串来构建的用于匹配的AC自动机的单词查找树的方式。然而,并不限于此,例如在又一个实施例中,还可将浏览器类型已知的整个UA串作为模式串来构建该AC自动机。在这种情况下,无需执行步骤S153和步骤S154中的处理,且在步骤S155中的处理变为:利用该AC自动机来中进行匹配以确定AC自动机的单词查找树中是否存在与该整个UA串相匹配的路径,其它处理不变。
甚至,在其它实施例中,还可以在步骤S140中仅将部分步骤S130中解析的一个UA串中的字段或一个以上字段的任意顺序连接所构成的字符串作为UA模式。
第二实施例
图3示出根据本实施例的浏览器类型识别装置。所述浏览器类型识别装置包括接收模块31、解析模块32、计算模块33和第一确定模块34。需要说明的是,图3示出了一种各模块之间的优选连接方式,但它们的连接方式不限于此,甚至可以设置为彼此相互连接。
接收模块接收浏览器发来的网络访问请求。解析模块解析所述请求中的用户代理串。计算模块通过哈希算法地所述请求中的用户代理串进行计算,得到与所述请求中的用户代理串对应的哈希值。
若指定表中存在所述哈希值到浏览器类型的映射,第一确定模块将与所述哈希值对应的浏览器类型确定为所述浏览器的浏览器类型。
用户代理串为用户代理字段的值,所述指定表用于存储利用所述哈希算法对各个用户代理串分别算得的各哈希值到浏览器类型的映射。
更具体地,上述接收模块31、解析模块32、计算模块33和第一确定模块34执行的处理分别对应于上述实施例的步骤S110、步骤S120、步骤S130和步骤S140,因此不再重复赘述。
所述浏览器类型识别装置还可包括第二确定模块35。若指定表中不存在所述哈希值到浏览器类型的映射,则第二确定模块利用AC自动机来确定所述浏览器的浏览器类型。
本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。