解析器的制作方法

文档序号:17536941发布日期:2019-04-29 14:05阅读:182来源:国知局
用户代理是代表用户进行操作的软件。当在网络协议中操作时,用户代理通常通过向应用服务器提交被称为用户代理字符串的特征识别字符串来识别自身。该用户代理字符串包含该用户代理的各种身份信息,例如:应用类型、设备信息、操作系统(os)、os版本、软件供应商、软件版本、浏览器和浏览器版本。从用户代理字符串收集这样的用户代理信息,使得进一步操作得以进行,例如,实时地识别用户代理的特征,按照用户代理来分析应用日志数据,等等。技术实现要素:以下提供本
发明内容以介绍将在下文具体实施方式中进一步描述的一些概念。本
发明内容不旨在标识所要求保护的话题的关键特征或者必要特征,也不旨在用于限制所要求保护的话题的范围。本公开的实施例提供了一种用于解析用户代理字符串(uas)的方法。基于用户代理字符串模式,从用户代理字符串提取信息。基于所提取的信息的模式,将所提取的信息映射到预定义信息。应该理解,上述一个或多个方面包括在下文充分描述且在权利要求书中特别指出的特征。以下描述和附图详细陈述了所述一个或多个方面的某些说明性的特征。这些特征仅表示利用各方面原理的各种方式,而本公开旨在涵盖所有此类方面以及其等效物。附图说明以下将结合附图来描述所公开的各个方面,这些附图是用来说明而不是限制所公开的各个方面。图1示出了根据一个实施例的能够实现所描述的技术的示例性环境。图2示出了根据一个实施例的示例性计算设备。图3示出了根据一个实施例的解析系统的示例性框架。图4示出了根据一个实施例的示例性映射器。图5示出了根据一个实施例的用于更新用户代理字符串模式的示例性框架。图6示出了根据一个实施例的解析系统的示例性框架。图7示出了根据一个实施例的用于解析用户代理字符串的示例性过程。图8示出了根据一个实施例的用于解析用户代理字符串的示例性装置。图9示出了根据一个实施例的示例性计算系统。具体实施方式以下将结合若干示例性实施方式来阐述本公开。应该理解,阐述这些实施方式仅仅是为了使本领域技术人员能够更好地理解并且从而实施本公开的实施例,而不代表对本公开的范围的任何限制。图1示出了能够实现本公开的实施例的示例性环境。应该理解,描述该环境的结构和功能仅仅是为了说明的目的,而不代表对本公开的范围作出任何限制。本公开可以利用不同的结构或功能来实现。示例性环境或系统100包括网络150。网络150可以通过各种类型的网络中的一个或多个来实现,例如局域网(lan)、广域网(wan)、无线网络等,它们被统一示出为网络150。网络150可以包括可以进一步覆盖独立自组织网络等的各种无线子网络中的任何一个,以为诸如设备110、120等的客户端设备提供面向基础设施的连接。这种子网络可以包括网状网络、无线lan(wlan)网络、蜂窝网络等。网络150可以进一步包括通过无线无线电链路等连接的终端、网关、路由器等的自主系统。网络150被配置为将诸如服务器计算设备130、140的一个或多个服务器及其各自的组件与诸如客户端设备110、120的其他计算设备连接。网络150能够使用任何形式的计算机可读介质将信息从一个电子设备传送到另一个电子设备。客户端计算设备110、120可以包括能够通过网络150接收和发送消息的任何设备。客户端计算设备110、120的示例包括蜂窝电话、智能电话、射频(rf)设备、音乐播放器、数字照相机、个人数字助理(pda)、手持式计算机、个人计算机、笔记本电脑、可穿戴式计算机、平板电脑、自动汽车、组合一个或多个前述设备的集成设备,等等。客户端设备110、120中的一个或多个还可以被配置为通过有线和/或无线网络进行操作。通常,客户端设备110、120在能力和特征方面范围广泛。例如,蜂窝电话可以具有数字键盘和仅可以显示文本的有限行单色lcd显示器。再例如,具备网络功能的客户端设备可具有触敏屏幕、触控笔以及既可以显示文本又可以显示图形的多行彩色lcd显示器。具备网络功能的客户端设备可以包括被配置为接收和发送网页和基于网络的消息等的浏览器应用。该浏览器应用可被配置为采用包括无线应用协议消息(wap)等几乎任何基于网络的语言,接收和显示图形、文本、多媒体等。在一个实施例中,可以使浏览器应用能够采用以下中的一个或多个来显示和发送信息:手持设备标记语言(hdml)、无线标记语言(wml)、无线标记语言脚本(wmlscript)、java脚本(javascript)、标准通用标记语言(smgl)、超文本标记语言(html)、可扩展标记语言(xml)、java脚本对象表示法(json)等。客户端计算设备110、120还可以包括客户端应用,其被配置为向另一个计算设备发送内容或者从另一个计算设备接收内容,该另一个计算设备包括但不限于服务器计算设备130、140或其他客户端计算设备。该客户端应用可以包括提供和接收文本内容、多媒体信息等的能力。该客户端应用可以进一步提供标识自身的信息,包括类型、能力、名称等。此类信息的示例包括用户代理字符串。客户端计算设备110、120还可以被配置为,例如通过电子邮件、短消息服务(sms)、多媒体消息服务(mms)、即时消息(im)、互联网中继聊天(irc)、可扩展通讯和表示协议(xmpp)等,向另一个计算设备传输消息。然而,本公开不限于这些消息协议,并且实际上可以采用任何其他消息协议。客户端设备110、120可以被进一步配置为包括允许用户登录到由另一个计算设备管理的用户帐户的客户端应用。例如,这样的用户帐户可被配置为使用户能够在网络上接收电子邮件、发送/接收im消息、sms消息、访问所选网页、下载脚本、应用或各种其他内容、或执行各种其他操作。不过,也可以在不登录到用户帐户的情况下,执行对消息的管理,或对内容的访问和/或下载。因此,客户端设备110、120的用户可以使用各种客户端应用中的任何一种以访问内容、读取网页、接收/发送消息,等等。例如,用户可以使用浏览器或其他客户端应用来访问被实现为服务器计算设备130或140的网络服务器提供的网页。用户代理字符串解析系统150可以连接到服务器计算设备130和140。用户代理字符串解析系统150可以用于解析由服务器计算设备130或140从在各种客户端计算设备110或120处的各种客户端应用接收的用户代理字符串。在一个示例中,用户代理字符串解析系统150可以从用户代理字符串获得用户代理信息,并将该用户代理信息实时地提供给服务器计算设备130或140。在另一示例中,用户代理字符串解析系统150可以解析从服务器计算设备130和140中的至少一个获得的关于用户代理字符串的日志数据。通过解析该日志数据获得的用户代理信息可以进一步用于分析用户代理的行为。尽管用户代理字符串解析系统被示为用于服务器计算设备130和140的后端系统,但是应该理解,在一些实现中,可以部署多于一个用户代理字符串解析系统,并且应该理解,在一些实现中,用户代理字符串解析系统可以被实现在或并入到服务器计算设备130或140中。图2中的框图示出了可以用于实施本公开实施例的计算设备200的示例性物理组件。在一些实施例中,计算设备200可以是客户端计算机设备110、120中的一个。在一些实施例中,计算设备200可以是服务器计算机设备130、140中的一个。在一些实施例中,计算设备200可以是用户代理字符串解析系统150。在基本配置中,计算设备200包括处理单元240和系统存储器210。处理单元240可代表在计算设备200中用于软件程序执行的至少一个处理器。系统存储器210可以包括,但不限于,易失性存储器(例如,随机存取存储器)、非易失性存储器(例如,只读存储器)、闪速存储器或这些存储器的任何组合。系统存储器210可以包括操作系统220和适用于运行软件应用232-236的一个或多个程序模块230。操作系统220适用于控制计算设备200的操作。操作系统220的示例包括通用操作系统,例如一个版本的unix或linux,或者专用客户端和/或移动通信操作系统,如微软的windowsphone、谷歌的android、苹果的ios等。本公开的实施例可以结合其他操作系统或任何其他应用程序来实施,并且不限于任何特定应用或系统。该基本配置如虚线205内的多个组件所示。计算设备200可以具有附加特征或功能。例如,计算设备200还可以包括,例如,像磁盘、光盘或磁带这些附加的数据存储设备(可移动和/或不可移动)。这样的附加存储设备由可移动存储设备250和不可移动存储设备260表示。计算设备200还可以具有一个或多个输入设备270,例如键盘、鼠标、笔、声音输入设备、触摸输入设备等。也可以包括一个或多个输出设备280,例如显示器、扬声器、打印机等。上述设备仅是举例说明,其他设备也可能被使用。计算设备200可以包括一个或多个通信连接290,以实现与其他计算设备之间的通信,如客户端计算设备110、120和服务器计算设备130、140,如图1所示。合适的通信连接290的示例包括,但不限于,无线发射机、接收机、和/或收发器电路、通用串行总线(usb),并行和/或串行端口。可以在处理单元240上执行各种应用232-236,以为用户提供信息。这样的应用的示例包括,但不限于,通常被用于呈现网站内容的浏览器程序、通常被用于在用户之间实现即时通信的即时消息(im)程序、通常被用于播放诸如视频、音频或静态图像等多媒体的多媒体播放器程序、通常被用于呈现各种文档的文本处理程序。多媒体播放器程序可以是客户端应用,该客户端应用请求并呈现来自多媒体服务器的在线多媒体内容。文本处理程序可以是客户端应用,该客户端应用用于通过与文本处理服务器通信来提供在线文本处理服务。举例来说,应用232-236中的一些应用可以是客户端应用包,用于在线完成生产力任务,该客户端应用包的示例包括由微软的office365提供的诸如word、excel、powerpoint、onedrive、outlook、skype等应用。也可以通过浏览器而不是客户端应用来访问由office365服务提供的内容。浏览器和客户端应用都可以被称为用户代理。每个使用活动数据的内容包括提供关于该用户代理的信息的用户代理字符串内容。可以将来自各种客户端计算设备的使用活动数据存储在诸如office365服务器的服务器计算设备,作为日志数据。图3示出了根据一个实施例的解析器系统300的示例性框架。在标准信息提取器310处理用户代理字符串。标准信息提取器310可以是符合通用网络浏览器用户代理字符串格式的信息提取器,并且因此可以从符合通用网络浏览器用户代理字符串格式的用户代理字符串提取信息。如果用户代理字符串在标准提取器310处不能被匹配或被识别,如312处的不匹配分支所示,则在定制提取器314处理用户代理字符串。例如,如果用户代理字符串是客户端应用发送的,而不是网络浏览器发送的,则标准提取器310可能无法识别用户代理字符串,因为用户代理字符串的模式或格式不符合公共网络浏览器用户代理字符串格式。定制提取器314包括为一个或多个客户端应用定制的用户代理字符串模式。例如,客户端应用可能是由微软的office365提供的上述word、excel、powerpoint、onedrive、outlook、skype等,可能是用于在线显示多媒体的媒体播放器,等等。在一个实现中,用户代理字符串模式可以由正则表达式描述,正则表达式可以通过诸如xml(可扩展标记语言)、yaml(另一个多列布局)等编程语言来实现。定制提取器314可以通过将用户代理字符串与定制的正则表达式进行比较来识别用户代理字符串,并且从而从该用户代理字符串获得信息。为客户端应用定制的用户代理字符串模式的一种示例性正则表达式如下所示。regex:'^(?<appname>(microsoftoffice)?(onenote|excel|powerpoint|word|yammer|lens))/((?<appmajorversionprefered>\d+)(\.(?<appminorversion>\d+))?((\.|/)(?<appbuildversion>\d+))?((\.|/)(?<appbuildrevision>\d+))?(\.\d+)*)?\((?<osname>ios|macos|android|windows)/(?<osmajorversion>\d+)(\.(?<osminorversion>\d+))?(\.(?<ospatchversion>\d+))?(\.\d+)*;(?<deviceclass>[a-za-z]+).*;((\w|\-)+);.*;(?<devicemanufacturer>.*)/(?<devicemodel>([a-za-z0-9]||-|_|\.)+).*\)(&.*)?$'.其中,“regex”是指“正则表达式”,其描述了用于特定客户端应用(如onenote、excel、powerpoint、word、yammer、lens)的定制模式。应该理解,该模式的正则表达式是为了理解的目的而示出的,而不代表对本公开的范围的任何限制。该模式可以以各种适用的方式实现,并且如果用不同的编程语言来实现,该正则表达式可以是各种格式。尽管仅示出了一种模式,但是可能存在为客户端应用定制的多种模式。在这个示例中,如果该定制提取器识别该用户代理字符串的格式与模式中的一个模式相匹配,则可以在定制提取器314处从用户代理字符串中提取该用户代理信息。用户代理字符串的一个示例可以是“microsoftofficeonenote15.1.42windowsnt6.1”,所提取的用户代理信息包括该应用的名称“microsoftofficeonenote”、该应用的版本“15.1”、该操作系统的名称“windowsnt”和该操作系统的版本“6.1”。用户代理字符串的另一个示例可以是“microsoftofficeonenotemacintoshmacosx10.4”,所提取的用户代理信息包括该应用的名称“microsoftofficeonenote”、该操作系统的名称“macos”和该操作系统的版本“10.4”。用户代理字符串的另一个示例可以是“outlook.exe14.0.38windowsnt10.0”,所提取的用户代理信息包括该应用的名称“outlook.exe”、该应用的版本“14.0”、该操作系统的名称“windowsnt”和该操作系统的版本“10.0”。如果用户代理字符串在定制提取器314处没有被识别或匹配,如316处的不匹配分支所示,则在覆盖跟踪器318处对不被识别的用户代理字符串进行统计计数。换句话说,覆盖跟踪器318可以监视不被识别的用户代理字符串的数量,并计算解析系统的覆盖百分比。尽管图中未示出,覆盖跟踪器318还可以监视被识别的用户代理字符串的数量和/或输入到解析系统300的全部用户代理字符串的数量。覆盖百分比可以由被识别的用户代理字符串数量占输入到解析系统300的所有用户代理字符串的数量的百分比来表示。未覆盖百分比可以由不被识别的用户代理字符串的数量占输入到解析系统300中的所有用户代理字符串的数量的百分比来表示。应该理解,覆盖百分比和未覆盖百分比彼此等同,并且可以互换使用。如果用户代理字符串在标准提取器310或定制提取器314处被识别或匹配,如在312或316处的匹配分支所示,则可以在准确度跟踪器320处评估被识别的用户代理信息,以便计算在多个被识别的用户代理字符串中的被正确识别的用户代理字符串的准确度百分比。在一个实现中,可以从多个用户代理字符串(例如五百个用户代理字符串)手动获得期望的用户代理信息,然后在准确度跟踪器320处,可以将期望的用户代理信息与在提取器310或314获得的用户代理信息相比较,以便识别被正确识别的用户代理字符串和被不正确识别的用户代理字符串。获得的准确度百分比可以是被正确识别的用户代理字符串的数量占被识别的用户代理字符串的数量的比率。不准确百分比可以由被不正确识别的用户代理字符串数量占被识别的用户代理字符串数量的百分比来表示。应该理解,准确度百分比和不准确百分比彼此等同,并且可以互换使用。基于覆盖百分比和/或准确度百分比,警报器322可以输出警报。例如,如果未覆盖百分比大于阈值,如5%,则输出警报。再例如,如果不准确百分比大于阈值,如5%,则输出警报。再例如,如果未覆盖百分比和不准确百分比的总和大于阈值,如5%,则输出警报。由相对较高的未覆盖百分比和/或不准确百分比导致的警报表示存在无法由定制提取器处理的用户代理字符串,因此,可以在更新系统326处使用不被识别的和/或被不正确识别的用户代理字符串来更新用于定制提取器314的用户代理字符串模式。在提取器310或314处提取的信息包括应用信息、操作系统(os)信息、设备信息等。映射器324将所提取的信息映射到预定义信息,该预定义信息与所提取的信息相关,但不包含在用户代理字符串中。从用户代理字符串提取的信息和相应的预定义信息由解析系统300作为用户代理信息输出。图4示出了根据一个实施例的映射器400的示例性结构。映射器400是映射器324的一个示例。映射器400包括应用信息映射器410、os信息映射器420和设备信息映射器430。应该理解,映射器400还可以包括用于其他类型用户代理信息的其他映射器。所提取的信息,例如应用信息、os信息和设备信息中的至少一个,可以通过应用信息映射器410、os信息映射器420和设备信息映射器430被映射到预定义信息。该预定义信息为所提取的信息提供补充,并且可以有助于关于用户代理信息的潜在的进一步处理。在一个实现中,应用信息映射器410、os信息映射器420和设备信息映射器430可以用统一的映射规则来实现,该映射规则可以用正则表达式来描述。该映射规则的示例如下:osmappings:-regex:'(w|w)indows(nt)?6.1osfriendlyname:'windows7devicemodel:'pc'deviceclass:'pc'devicemanufacturer:'pc'-regex:'(w|w)indows(nt)?6.2'osfriendlyname:'windows8'devicemodel:'pc'deviceclass:'pc'devicemanufacturer:'pc'-regex:'(w|w)indows(nt)?10.0'osfriendlyname:'windows10'devicemodel:'pc'deviceclass:'pc'devicemanufacturer:'pc'-regex:'^(?i)(?!.*ios).*android(?!.*ios).*$'osfriendlyname:'android'devicemodel:'android'deviceclass:'smartphone'devicemanufacturer:'smartphone'-regex:'(m|m)ac(?|_|\+)os'osname:'macos'osfriendlyname:'macosx'devicemodel:'pc'deviceclass:'pc'devicemanufacturer:'apple'applicationmapping:-regex:'(?i)windowsmail'appfriendlyname:'windows8desktopclient'devicemodel:'pc'deviceclass:'pc'devicemanufacturer:'microsoft'osname:'windows8.*'-regex:'(?i)windows.*;.*outlook15.*'appfriendlyname:'outlook2013(e15)'-regex:'(outlook|outlook|outlook)(\.((exe)|(exe)|(exe)))?'appfriendlyname:'outlook'deviceclass:'pc'devicemodel:'pc'osname:'windows'-regex:'outlook(?sts)'appfriendlyname:'microsoftofficeoutlook'-regex:'(?<appfriendlyname>excel|powerpoint|word|onenote);ios'appfriendlyname:'appfriendlynameiosapp'-regex:'(?<appfriendlyname>excel|powerpoint|word|onenote);(omdroid|android)'appfriendlyname:'appfriendlynameandroidapp'devicemappings:-regex:'^\d{4}[a-za-z]?'deviceclass:'smartphone'devicemanufacturer:'smartphone'-regex:'((ipad|ipod).*)'deviceclass:'tablet'devicemanufacturer:'apple'-regex:'iphone.*'deviceclass:'smartphone'devicemanufacturer:'apple'-regex:'((mac|macmini|imac|macbook|macpro|macintosh).*)'deviceclass:'pc'devicemanufacturer:'apple'-regex:'nokia_xl?'deviceclass:'smartphone'devicemanufacturer:'nokia'os映射:-regex:'(w|w)indows(nt)?6.1os友好名称:'windows7设备模型:'个人计算机'设备类别:'个人计算机'设备制造商:'个人计算机'-regex:'(w|w)indows(nt)?6.2'os友好名称:'windows8'设备模型:'个人计算机'设备类别:'个人计算机'设备制造商:'个人计算机'-regex:'(w|w)indows(nt)?10.0'os友好名称:'windows10'设备模型:'个人计算机'设备类别:'个人计算机'设备制造商:'个人计算机'-regex:'^(?i)(?!.*ios).*android(?!.*ios).*$'os友好名称:'android'设备模型:'android'设备类别:'智能电话'设备制造商:'智能电话'-regex:'(m|m)ac(?|_|\+)os'os名称:'macos'os友好名称:'macosx'设备模型:'个人计算机'设备类别:'个人计算机'设备制造商:'苹果'应用映射:-regex:'(?i)windowsmail'应用友好名称:'windows8桌面客户端'设备模型:'个人计算机'设备类别:'个人计算机'设备制造商:'微软'os名称:'windows8.*'-regex:'(?i)windows.*;.*outlook15.*'应用友好名称:'outlook2013(e15)'-regex:'(outlook|outlook|outlook)(\.((exe)|(exe)|(exe)))?'应用友好名称:'outlook'设备类别:'个人计算机'设备模型:'个人计算机'os名称:'windows'-regex:'outlook(?sts)'应用友好名称:microsoftofficeoutlook'-regex:'(?<应用友好名称>excel|powerpoint|word|onenote);ios'应用友好名称:'应用友好名称iosapp'-regex:'(?<应用友好名称>excel|powerpoint|word|onenote);(omdroid|android)'应用友好名称:'应用友好名称androidapp'设备映射:-regex:'^\d{4}[a-za-z]?'设备类别:'智能电话'设备制造商:'智能电话'-regex:'((ipad|ipod).*)'设备类别:'平板电脑'设备制造商:'苹果'-regex:'iphone.*'设备类别:'智能电话'设备制造商:'苹果'-regex:'((mac|macmini|imac|macbook|macpro|macintosh).*)'设备类别:'个人计算机'设备制造商:'苹果'-regex:'诺基亚_xl?'设备类别:'智能电话'设备制造商:'诺基亚'上述映射规则中的“regex”是指“正则表达式”,其描述将要被映射的所提取信息的模式。对于os信息映射,以提取的os信息“windowsnt6.1”为例,可以通过映射获得预定义信息“os友好名称:‘windows7’,设备模型:‘个人计算机’,设备类别:‘个人计算机’,设备制造商:‘个人计算机’”。对于应用程序信息映射,以提取的应用信息“windowsmail”为例,可以通过映射获得预定义信息“应用友好名称:‘windows8桌面客户端’,设备模型:‘个人计算机’,设备类别:‘个人计算机’,设备制造商:‘微软’,os名称:‘windows8.*’”。对于设备信息映射,以提取的设备信息“macmini”为例,可以通过映射获得预定义信息“设备类别:‘个人计算机’,设备制造商:‘苹果’”。映射器400不仅提供与所提取的信息相对应的预定义补充信息,而且还提供用于输出解析结果的统一格式。该统一格式可以有助于对于用户代理信息的潜在进一步处理。以上述用户代理字符串“microsoftofficeonenote15.1.42windowsnt6.1”、“microsoftofficeonenotemacintoshmacosx10.4”、“outlook.exe14.0.38windowsnt10.0”为例,统一格式的解析结果的输出如下表1所示。表1表1应该理解,表1只是用来说明统一解析结果输出,而表1中示出的解析结果不一定以表的格式输出,可以使用任何合适的格式来提供所提取的信息和预定义信息,作为解析结果。尽管在表1中示出的解析结果表明该客户端应用信息仅包括应用相关信息,客户端os信息仅包括os相关信息,并且客户端设备信息仅包括设备相关信息,但本公开不限于该示例性的解析结果。例如,如在上述示例性映射规则中所示,由于os是在该客户端设备处实现,该客户端os信息还可以包括客户端设备信息;由于应用是在该客户端设备和os处实现,客户端应用信息还可以包括客户端设备信息和客户端os信息。在一个实现中,包括在输出客户端os信息中的客户端设备信息可以是预定义信息,包括在输出客户端应用信息中的客户端设备信息和/或os信息可以是预定义信息。在另一个实现中,包括在输出客户端os信息中的客户端设备信息可以是从用户代理字符串提取的信息,包括在输出客户端应用信息中的客户端设备信息和/或os信息可以是从用户代理字符串提取的信息。在另一个实现中,包括在输出客户端os信息中的客户端设备信息可以是预定义信息和从用户代理字符串提取的信息的组合,包括在输出客户端应用信息中的客户端设备信息和/或os信息可以是预定义信息和从用户代理字符串提取的信息的组合。基于映射规则获得的映射结果的示例如下表2中所示,其中该输出os信息包括设备信息,输出应用信息包括os信息和设备信息。表2表2无论是在表1中所示的示例性解析结果还是表2中所示的示例性解析结果,都具有由映射规则确定的统一格式,并且除了包含在用户代理字符串中或在用户代理字符串提取的信息之外,还包括补充信息。图5示出了根据一个实施例的用于更新定制提取器的示例性框架。在一个实现中,可以响应于由警报器322输出的警报,进行定制提取器的更新。不被识别的和/或被不准确识别的用户代理字符串代表没有在定制提取器中定义的新的用户代理字符串格式,并且因此可以被用来生成新的用户代理字符串模式。不被识别的和/或被不准确识别的用户代理字符串在分组单元510处被分组。在一个示例中,重复的用户代理字符串被识别并被分组到一个组中,并且对重复的用户代理字符串的数量进行计数。在另一个示例中,可以基于用户代理字符串之间的距离度量来实现分组。该距离度量可以是用户代理字符串之间的编辑距离,也被称为莱文斯坦距离(levenshteindistance)。具有小于阈值的编辑距离的用户代理字符串可以被分组到一个组中。由于一个组中的用户代理字符串彼此相似,并有可能由相同的用户代理字符串模式来代表,因此可以显著减轻用于生成新的用户代理字符串模式的工作量。在模式生成阶段520,可以基于用户代理字符串组生成用户代理字符串模式。在一个实现中,可以基于被分组的用户代理字符串手动生成用户代理字符串模式。在另一个实现中,可以基于被分组的用户代理字符串,通过分析工具自动生成用户代理字符串模式。可以通过使用编程语言(如yaml),使用正则表达式来描述用户代理字符串模式。以这种方式,可以通过响应于以上讨论的警报而添加新的模式,来方便地对定制信息提取器进行更新。在一个实现中,可以迭代地执行用户代理字符串模式的更新,直到实现目标覆盖百分比和/或准确度百分比。特别地,在定制提取器314被更新后,将不被识别的和/或被不准确识别的用户代理字符串输入到解析系统300中,在覆盖跟踪器318和准确度跟踪器320处可以导出覆盖百分比和/或准确度百分比。如果该覆盖百分比和/或准确度百分比不满足目标值,则可以执行如在图5中所示的更新过程以更新该定制提取器314。基于该不被识别的和/或被不准确识别的用户代理字符串,图3和图5中示出的两个过程可被迭代地执行,直到实现目标覆盖百分比和/或准确度百分比。图6示出了根据一个实施例的解析器系统600的示例性框架。在这个实施例中,图3中所示的标准提取器310被并入到定制提取器614中。在一个实现中,使用正则表达式来描述对应于通用网络浏览器用户代理字符串格式的用户代理字符串模式,并将其与为不符合通用网络浏览器用户代理字符串格式的一个或多个客户端应用定制的用户代理字符串模式组合在一起。以这种方式,定制提取器614能够识别符合通用网络浏览器用户代理字符串格式的用户代理字符串,以及符合定制的用户代理字符串模式的用户代理字符串。在一些实现中,从某些网络浏览器发送的一些用户代理字符串可能也不符合通用网络浏览器用户代理字符串格式。也可以基于不被识别的用户代理字符串,针对这种网络浏览器定制用户代理字符串模式。覆盖跟踪器618、准确度跟踪器620、警报器622、映射器624和更新系统626类似于覆盖跟踪器318、准确度跟踪器320、警报器322、映射器324和更新系统326,因此,为简单起见,将不提供对于这些单元的详细描述。图7示出了根据一个实施例的用于解析用户代理字符串的示例性过程700。在710,基于用户代理字符串模式,从用户代理字符串提取信息。该用户代理字符串模式可以是为至少一个应用而定制的。在720,基于所提取的信息的模式,将所提取的信息映射到预定义信息。在一个实现中,使用正则表达式定义用户代理字符串模式。在一个实现中,使用正则表达式定义所提取的信息的模式。在一个实现中,所提取的信息包括应用信息、操作系统信息和设备信息中的至少一个。在一个实现中,预定义信息包括与所提取的设备信息相对应的设备模型信息、设备类别信息和设备制造商信息中的至少一个。在一个实现中,预定义信息包括与所提取的操作系统信息相对应的操作系统友好名称信息、设备模型信息、设备类别信息和设备制造商信息中的至少一个。在一个实现中,预定义信息包括与所提取的应用信息相对应的应用友好名称信息、操作系统名称信息、操作系统友好名称信息、设备模型信息、设备类别信息和设备制造商信息中的至少一个。在一个实现中,跟踪多个用户代理字符串中的被识别的用户代理字符串的覆盖百分比。多个用户代理字符串中的被识别的用户代理字符串的覆盖百分比等同于多个用户代理字符串中的不被识别的用户代理字符串的未覆盖百分比。在一个实现中,跟踪多个被识别的用户代理字符串中的被准确识别的用户代理字符串的准确度百分比。多个被识别的用户代理字符串中的被准确识别的用户代理字符串的准确度百分比等同于多个被识别的用户代理字符串中的被不准确识别的用户代理字符串的不准确百分比。在一个实现中,当该覆盖百分比和/或该准确度百分比小于阈值时,或者等同地,当该未覆盖百分比和/或不准确百分比大于阈值时,输出警报。在一个实现中,基于不被识别的用户代理字符串和/或被不准确识别的用户代理字符串,更新用户代理字符串模式。在一个实现中,基于所更新的用户代理字符串模式,解析该不被识别的用户代理字符串和/或该被不准确识别的用户代理字符串;跟踪针对该不被识别的用户代理字符串和/或被不准确识别的用户代理字符串的覆盖百分比和/或准确度百分比;并且,如果针对该不被识别的用户代理字符串和/或被不准确识别的用户代理字符串的覆盖百分比和/或准确度百分比小于阈值,则进一步更新所更新的用户代理字符串模式。图8示出了用于根据一个实施例的用于解析用户代理字符串的解析器800。解析器800包括提取器810,用于基于用户代理字符串模式,从用户代理字符串提取信息。可以为至少一个应用定制用户代理字符串模式。解析器800包括映射器820,用于基于所提取的信息的模式将所提取的信息映射到预定义信息。在一个实现中,提取器810可以代表标准提取器310和定制提取器314的组合。在一个实现中,提取器810可以代表定制提取器314。在一个实现中,提取器810可以代表定制提取器614。在一个实现中,使用正则表达式定义用户代理字符串模式,使用正则表达式定义所提取的信息的模式。在一个实现中,所提取的信息包括应用信息、操作系统信息和设备信息中的至少一个。在一个实现中,预定义信息包括与所提取的设备信息相对应的设备类别信息和设备制造商信息中的至少一个。在一个实现中,预定义信息包括与所提取的操作系统信息相对应的操作系统友好名称信息、设备模型信息、设备类别信息和设备制造商信息中的至少一个。在一个实现中,预定义信息包括与所提取的应用信息相对应的应用友好名称信息、操作系统名称信息、操作系统友好名称信息、设备模型信息、设备类别信息和设备制造商信息中的至少一个。在一个实现中,解析器800包括覆盖跟踪器,用于跟踪多个用户代理字符串中的被识别的用户代理字符串的覆盖百分比。在一个实现中,解析器800包括准确度跟踪器,用于跟踪多个被识别的用户代理字符串中的被准确识别的用户代理字符串的准确度百分比。在一个实现中,当该覆盖百分比和/或该准确度百分比小于阈值时,输出警报。在一个实现中,基于不被识别的用户代理字符串和/或被不准确识别的用户代理字符串,更新用户代理字符串模式。应该理解,装置800还可以包括被配置为用于执行根据以上结合图1-7所述的各实施例来执行任何操作的任何其它模块。图9示出了根据一个实施例的示例性计算系统。系统900可以包括一个或多个处理器910。系统900可以进一步包括与该一个或多个处理器910连接的存储器920。存储器920可以存储计算机可执行指令,该计算机可执行指令在被执行时,使得该一个或多个处理器910基于用户代理字符串模式,从用户代理字符串提取信息,并且基于所提取的信息的模式,将所提取的信息映射到预定义信息。应该理解,该计算机可执行指令在被执行时,使得该一个或多个处理器910执行根据以上结合图1-8所述的实施例的过程的任何操作。本公开的实施例可以在非易失性计算机可读介质中实现。该非易失性计算机可读介质包括指令,该指令被执行时使得一个或多个处理器执行根据上述实施例的过程的任何操作。应该理解,以上所描述的过程中的所有操作都仅仅是示例性的,本公开不仅限于该过程中的任何操作或者这些操作的执行顺序,并且应当涵盖与之具有相同或相似概念的所有其他等同物。还应当理解,以上所描述的装置中的所有模块可以以各种方式来实现。这些模块可被实现为硬件、软件、或两者的组合。此外,任何这些模块都可以在功能上进一步被划分为子模块或被组合在一起。结合各种装置和方法已经对处理器进行了描述。这些处理器可以使用电子硬件、计算机软件或其任意组合来实现。至于这些处理器是实现为硬件还是软件,取决于特定的应用以及施加在系统上的整体设计约束。举例来说,本公开提供的处理器、处理器的任何部分、或处理器的任何组合可以利用微处理器、微控制器、数字信号处理器(dsp)、现场可编程门阵列(fpga)、可编程逻辑设备(pld)、状态机、门控逻辑、离散硬件电路、以及被配置成执行本公开所描述的各种功能的其他合适的处理组件来实现。本公开提供的处理器、处理器的任何部分、或处理器的任何组合的功能可以利用由微处理器、微控制器、dsp或其他合适的平台执行的软件来实现。软件应当被宽泛地解释成意指指令、指令集、代码、代码段、程序代码、程序、子程序、软件模块、应用、软件应用、软件包、例程、子例程、对象、执行线程、流程、功能等。该软件可驻留在计算机可读介质上。计算机可读介质可以包括,例如,诸如磁存储设备(如硬盘,软盘,磁条)、光盘、智能卡、闪存设备、随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、寄存器、或可移动磁盘的存储器。尽管在本公开中的各个方面中存储器被示为与处理器是分开的,但对于处理器来说,存储器可以在其内部(例如,高速缓存或寄存器)。提供以上描述是为了使任何本领域技术人员均能实践其中所描述的各个方面。对于这些方面的各种修改对于本领域技术人员是显而易见的,此处定义的一般原理适用于其他方面。因此,权利要求并非旨在被限定于以上所描述的各个方面。本公开描述的各个方面中包含的各要素的为本领域普通技术人员当前或今后所知的所有结构上和功能上的等效方案以引用的方式被明确添加在此,并且旨在被权利要求所涵盖。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1