一种统一资源定位符语义去重方法、装置、设备和介质与流程

文档序号:16208797发布日期:2018-12-08 07:27阅读:191来源:国知局
一种统一资源定位符语义去重方法、装置、设备和介质与流程

本公开涉及网络技术领域,尤其涉及一种统一资源定位符(uniformresourcelocator,url)语义去重方法、装置、设备和介质。

背景技术

在web应用中,不同的url对应不同功能接口,提取这些url是很多实际应用的首要工作,比如在安全渗透测试和url页面流量统计中需要找出系统中存在的url信息。在提取url的过程中,对url去重可以大幅度地减少冗余url的数量,提高后续工作的效率。在对url去重的过程中存在这样一种情况:

a组url列表:

http://abc.com/yun/task/1

http://abc.com/yun/task/2

http://abc.com/yun/task/100

如上述a组url列表所示,其中包含了100个url,而实际上这100个url只包含了1个接口http://abc.com/yun/task/,该接口后的1到100均为该接口的参数,像这种针对内容不同但是语义相同的url去重过程称为url语义去重。

目前,url语义去重主要采用基于hash(哈希)的方法,然而由于基于hash的方法对局部变化不敏感,因此会导致代表不同功能接口的url会被误判为代表相同功能接口的url。

b组url列表:

http://abc.com/mat/put

http://abc.com/mat/get

如上述b组url列表所示,其中包含了2个代表不同功能接口的url。但是基于hash的方法会判决b组url列表中的2个url为代表相同功能接口的url。

由此可见,目前的url语义去重方法存在url误判的问题。



技术实现要素:

鉴于现有技术中的上述缺陷或不足,期望提供一种能够有效减少url误判的数量的方案。

第一方面,本申请实施例提供了一种url语义去重方法,所述方法包括:

确定每个统一资源定位符url的哈希值;

基于每个url的哈希值,划分若干个url集合;其中,每个url集合中的任意两个url相似;

构造每个url集合的生成树;

根据预先设置的分支数量阈值,对所述每个url集合的生成树进行剪枝,得到所述每个url集合剪枝后的生成树;

遍历所述每个url集合剪枝后的生成树,得到去重后的url集合。

第二方面,本申请实施例还提供了一种url语义去重装置,所述装置包括:

哈希值确定单元,用于确定每个url的哈希值;

url集合划分单元,用于基于每个url的哈希值,划分若干个url集合;其中,每个url集合中的任意两个url相似;

生成树构造单元,用于构造每个url集合的生成树;

剪枝单元,用于根据预先设置的分支数量阈值,对所述每个url集合的生成树进行剪枝,得到所述每个url集合剪枝后的生成树;

遍历单元,用于遍历所述每个url集合剪枝后的生成树,得到去重后的url集合。

第三方面,本申请实施例还提供了一种设备,包括:至少一个处理器、至少一个存储器以及存储在所述存储器中的计算机程序指令,当所述计算机程序指令被所述处理器执行时实现上述url语义去重方法。

第四方面,一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,当所述计算机程序指令被处理器执行时实现上述url语义去重方法。

本申请实施例提供的url语义去重方案,首先基于每个url的哈希值,划分若干个url集合,然后通过构造每个url集合的生成树,并根据预先设置的分支数量阈值,对每个url集合的生成树进行剪枝以及遍历的方式,实现对每个url集合的url语义去重。按照本申请实施例的技术方案,能够有效减少被误删的url数量。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1为本申请实施例提供的一种url语义去重方法的示例性流程图;

图2为本申请实施例提供的一种url语义去重装置的示例性结构框图;以及

图3为适于用来实现本申请实施例的服务器的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

下面将参考附图并结合实施例来详细说明本申请。

如图1所示,为本申请实施例提供的一种url语义去重方法的示例性流程图。该方法包括如下步骤:

步骤110,确定每个url的哈希值。

具体的,首先对每个url进行分词,得到分词列表,再基于每个url的分词列表,计算每个url的哈希值。

对每个url进行分词时,可以但不限于按照如下方式实现:

去除url的协议名称,得到该url的剩余部分,再以该剩余部分中的指定标识作为分隔符,将该剩余部分分成若干个词,得到分词列表。

以http://abc.com/mat/put为例,首先去除其协议名称http://,变成abc.com/mat/put,剩下部分以‘/’作为分隔符,将其分成多个词,其分词列表为:abc、com、mat和put。

确定出url的分词列表之后,再基于simhash算法,生成url的hash值,hash值的位数一般选择64或者128位。

步骤120,基于每个url的哈希值,划分若干个url集合;其中,每个url集合中的任意两个url相似。

本申请实施例中可以但不限于按照如下方式实现:

循环执行第一指定操作,直至所有url都被划分到url集合中;

其中,该第一指定操作包括:

从未被划分到url集合的url中,随机选择一个url;

基于随机选择的url的哈希值以及未被划分到url集合的剩余url的哈希值,从剩余url中出所有满足预设条件的url,该预设条件为:与随机选择的url的海明距离小于预设的相似阈值、且与随机选择的url具有相同的服务器名称;

将所有满足预设条件的url与随机选择的url划分到一个url集合中。

在具体实现时,可以采用如下算法:

令包含url的hash值集合为d,集合元素形式为(url,hash),其中url表示一个具体的url,hash表示url对应的hash值,设定的相似阈值为λ,划分url集合的步骤如下:

(1)从d中随机选择1个元素di,并将di从d中删除;

(2)对d中每一个dj,利用对应的hash计算di和dj之间的海明距离d,如果di中url包含的服务器名称与dj中url包含的服务器名称相同,并且d<λ,则认为这2个url是相似的,将di和dj的url归并到同一url集合中;

(3)如果d为空集则结束并输出结果,否则转向第(1)步。

步骤130,构造每个url集合的生成树。

本申请实施例中,可以但不限于按照如下方式实现:

针对每个url集合,执行第二指定操作;其中,该第二指定操作包括:

首先,确定url集合中各url的分词列表;其中,分词过程可以和步骤110中的分词过程相同,在此不再赘述;

然后,按照各url的分词列表中分词的先后顺序,构造一个由多层节点组成的生成树,其中,该生成树的节点层级的上下顺序与各url的分词列表中分词的先后顺序对应,其每层节点分别由各url的分词列表中对应顺序的分词组成,且每层节点中不存在相同节点。

在具体实现时,可以采用如下算法:

令找出的任一个url集合为u,生成树为t,t中每个节点的形式为(name,num),其中name表示当前节点的名字,num代表当前节点的计数,则构造生成树的步骤如下:

(1)如果u不为空,则从u中随机选择1个urlui,对ui进行分词得到一个顺序列表l,同时将ui从u中删除;

(2)如果生成树t为空,转向第3步,否则转向第6步;

(3)将l中的第1个元素赋值给l,并将第1个元素从l中删除,同时将l作为t的根节点的name,将num设置为1,记根节点为当前节点t;

(4)如果l不为空,则将l的第1个元素赋值给l,并将第1个元素从l中删除,如果l与t的任一个孩子结点中的name都不相同,则在t下新生成一个子节点tn,将tn的name设置为l,num设置为1,并将tn设置为当前节点t;如果l与t的一个子节点c相同,则将c中的num计数加1,并将c作为当前节点t;

(5)如果l不为空,则转向第4步,否则转向第1步;

(6)将t的根节点设置为当前节点t,转向第4步。

步骤140,根据预先设置的分支数量阈值,对每个url集合的生成树进行剪枝,得到每个url集合剪枝后的生成树。

本申请实施例中,可以但不限于按照如下方式实现:

针对每个url的生成树,执行第三指定操作;其中,第三指定操作包括:

按照url集合的生成树的节点层级的上下顺序,依次对url集合的生成树的每一层节点执行:

判断当前层的每个节点的子节点的数量是否大于分支数量阈值;

当判断出当前层的任一节点的子节点的数量大于分支数量阈值时,从该节点的子节点中,随机选择任意一个子节点进行保留,同时删除该节点的剩余子节点。

本申请实施例中,在内容不同而语义相同的url集合中,导致多个url表示同一个接口的原因是接口的参数内容不同,换句话说,由于在实际应用中,接口处理的参数值很多,导致生成树中某个节点的分支也非常多,而非参数节点的分支一般不多,因此可以通过设置分支数量阈值来对生成树进行剪枝,从而达到删除冗余url的目的。

在具体实现时,可以采用如下算法:

令生成树为t,t的根节点所在的层为第0层,根节点的子节点在第1层,依次往下,则t一共有n层,分支数量的阈值为δ,则剪枝的步骤如下:

(1)令当前层c=0;

(2)c=c+1,如果c<n,则转向第3步,否则输出结果;

(3)对于当前层的任一节点ti,如果ti的子节点数量大于阈值δ,则随机选择其中的一个子节点tc作为ti的唯一孩子,并将其余的子节点删除,转到第2步。

步骤150,遍历每个url集合剪枝后的生成树,得到去重后的url集合。

本申请实施例提供的url语义去重方案,首先基于每个url的哈希值,划分若干个url集合,然后通过构造每个url集合的生成树,并根据预先设置的分支数量阈值,对每个url集合的生成树进行剪枝以及遍历的方式,实现对每个url集合的url语义去重。按照本申请实施例的技术方案,能够有效减少被误删的url数量。

应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

进一步参考图2,为本申请实施例提供的一种url语义去重装置的示例性结构框图。

哈希值确定单元21,用于确定每个url的哈希值;

url集合划分单元22,用于基于每个url的哈希值,划分若干个url集合;其中,每个url集合中的任意两个url相似;

生成树构造单元23,用于构造每个url集合的生成树;

剪枝单元24,用于根据预先设置的分支数量阈值,对所述每个url集合的生成树进行剪枝,得到所述每个url集合剪枝后的生成树;

遍历单元25,用于遍历所述每个url集合剪枝后的生成树,得到去重后的url集合。

可选的,所述哈希值确定单元21,包括:

分词模块211,用于对每个url进行分词,得到分词列表;

计算模块212,用于基于每个url的分词列表,计算每个url的哈希值。

可选的,所述分词模块211,用于:

针对每个url执行:

去除所述url的协议名称,得到所述url的剩余部分;

以所述剩余部分中的指定标识作为分隔符,将所述剩余部分分成若干个词,得到分词列表。

可选的,所述url集合划分单元22,用于:

循环执行第一指定操作,直至所有url都被划分到url集合中;

其中,所述第一指定操作包括:

从未被划分到url集合的url中,随机选择一个url;

基于随机选择的url的哈希值以及未被划分到url集合的剩余url的哈希值,从所述剩余url中确定出所有满足预设条件的url,所述预设条件为:与所述随机选择的url的海明距离小于预设的相似阈值、且与所述随机选择的url具有相同的服务器名称;

将所有满足所述预设条件的url与所述随机选择的url划分到一个url集合中。

可选的,所述生成树构造单元23,用于:

针对每个url集合,执行第二指定操作;其中,所述第二指定操作包括:

确定所述url集合中各url的分词列表;

按照所述各url的分词列表中分词的先后顺序,构造一个由多层节点组成的生成树,其中,所述生成树的节点层级的上下顺序与所述各url的分词列表中分词的先后顺序对应,所述生成树的每层节点分别由所述各url的分词列表中对应顺序的分词组成,且所述每层节点中不存在相同节点。

可选的,所述剪枝单元24,用于:

针对每个url的生成树,执行第三指定操作;其中,所述第三指定操作包括:

按照所述url集合的生成树的节点层级的上下顺序,依次对所述url集合的生成树的每一层节点执行:

判断所述url集合的生成树的当前层的每个节点的子节点的数量是否大于所述分支数量阈值;

当判断出所述当前层的任一节点的子节点的数量大于所述分支数量阈值时,从该节点的子节点中,随机选择任意一个子节点进行保留,同时删除该节点的剩余子节点。

应当理解,该url语义去重装置中记载的诸子系统或单元与参考图1描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于该url语义去重装置及其中包含的单元,在此不再赘述。

下面参考图3,其示出了适于用来实现本申请实施例的服务器的计算机系统的结构示意图。

如图3所示,计算机系统包括中央处理单元(cpu)301,其可以根据存储在只读存储器(rom)302中的程序或者从存储部分308加载到随机访问存储器(ram)303中的程序而执行各种适当的动作和处理。在ram303中,还存储有系统300操作所需的各种程序和数据。cpu301、rom302以及ram303通过总线304彼此相连。输入/输出(i/o)接口305也连接至总线304。

以下部件连接至i/o接口305:包括键盘、鼠标等的输入部分306;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分307;包括硬盘等的存储部分308;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分309。通信部分309经由诸如因特网的网络执行通信处理。驱动器310也根据需要连接至i/o接口305。可拆卸介质311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器310上,以便于从其上读出的计算机程序根据需要被安装入存储部分308。

特别地,根据本公开的实施例,上文参考图1描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行图1的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分309从网络上被下载和安装,和/或从可拆卸介质311被安装。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中。这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本申请的公式输入方法。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1