高性能防绕过关键词过滤的方法及系统与流程

未命名 07-29 阅读:131 评论:0


1.本发明属于互联网信息交互技术领域,具体涉及一种高性能防绕过关键词过滤的方法及系统。


背景技术:

2.在互联网中,存在诸多场景需要向服务端提交数据,例如设置昵称,发表评论,发送弹幕和论坛发帖等,所以,服务端需要对大量数据进行识别处理。针对大量并发数据处理,关键词高效识别速度和系统响应时间是特别重要的性能指标。过滤关键词是对系统提交数据的一种检查技术手段,构建关键词库,然后判断提交的数据中能否匹配到关键词,如果能够匹配到关键词,需要对提交的数据进行处理,将匹配到的关键词屏蔽,从而得到不带有关键词等违规内容的数据,再进行发表等处理。
3.然而,通过遍历关键词库进行匹配的方式,在大量数据请求处理时,具有处理效率低的问题。另一种方法是使用优化过的有利于快速检索的结构化词库,比如树形结构,然后遍历提交的数据进行匹配,相对遍历词库内容长度大大减小,提高效率,但不能有效的识别其它字符混淆到关键词里的数据,容易被绕过。


技术实现要素:

4.针对现有技术存在的缺陷,本发明提供一种高性能防绕过关键词过滤的方法及系统,可有效解决上述问题。
5.本发明采用的技术方案如下:
6.本发明提供一种高性能防绕过关键词过滤的方法,包括以下步骤:
7.步骤1,定义字符类型;
8.步骤2,将需要过滤的所有关键词生成字典树;在所述字典树中,假设任意关键词由n个字符按顺序组成,分别为:第0位置字符,第1位置字符,

,第n-1位置字符;则其在所述字典树中的表示方式为:由2n个节点按前后顺序级联形成,其中,2n个节点按前后顺序分别代表:第0位置字符的字符类型,第0位置字符,第1位置字符的字符类型,第1位置字符,

,第n-1位置字符的字符类型,第n-1位置字符;
9.步骤3,遍历需要检测的字符串,如果当前位置不存在字符,代表遍历字符串结束,检测结束;如果当前位置存在字符,读取当前字符chari,根据步骤1定义的字符类型,获得当前字符chari的字符类型typei,执行步骤4;
10.步骤4,在所述字典树中,判断能否匹配到与字符类型typei对应的节点,如果能,假设匹配到的节点为节点nodej,然后执行步骤5;如果不能,则执行步骤8;
11.步骤5,将检测状态设置为字典检测中状态,执行步骤6;
12.步骤6,在所述字典树中,定位到节点nodej的下一级直接连接的节点,表示为节点node
j+1
,然后,判断节点node
j+1
代表的字符是否与当前字符chari匹配,如果匹配,记录当前字符chari以及当前字符chari在字符串中的位置,然后执行步骤7;如果不匹配,则将检测状
态设置为无检测状态,清空记录,字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;
13.步骤7,将检测状态设置为字典检测中状态;在所述字典树中,判断节点node
j+1
是否具有下一级直接连接的节点,如果没有,表示字典树完结,检测结束;如果有,返回步骤3,遍历字符串的下一个字符;
14.步骤8,判断当前的检测状态,如果为字典检测中状态,则在字典树中当前定位到的节点位置保持不变,返回步骤3,遍历字符串的下一个字符;如果为无检测状态,则字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;
15.通过步骤3到步骤8,最终记录得到字符以及其在字符串中的位置,记录的各个字符按其在字符串中的位置排列后,形成字符序列,即为在被检测的字符串中,检测到的需要过滤的字符序列。
16.优选的,所述字符类型包括四种,分别为:汉字字符类型、英文字母字符类型、数字字符类型和其他字符类型。
17.优选的,所述英文字母字符类型,包括大写英文字母字符类型和小写英文字母字符类型。
18.本发明还提供一种高性能防绕过关键词过滤的系统,包括:
19.字符类型定义模块,用于定义字符类型;
20.字典树生成模块,用于将需要过滤的所有关键词生成字典树;在所述字典树中,假设任意关键词由n个字符按顺序组成,分别为:第0位置字符,第1位置字符,

,第n-1位置字符;则其在所述字典树中的表示方式为:由2n个节点按前后顺序级联形成,其中,2n个节点按前后顺序分别代表:第0位置字符的字符类型,第0位置字符,第1位置字符的字符类型,第1位置字符,

,第n-1位置字符的字符类型,第n-1位置字符;
21.防绕过关键词检测模块,用于采用以下方法,从需要检测的字符串中,识别出关键词:
22.步骤3,遍历需要检测的字符串,如果当前位置不存在字符,代表遍历字符串结束,检测结束;如果当前位置存在字符,读取当前字符chari,根据步骤1定义的字符类型,获得当前字符chari的字符类型typei,执行步骤4;
23.步骤4,在所述字典树中,判断能否匹配到与字符类型typei对应的节点,如果能,假设匹配到的节点为节点nodej,然后执行步骤5;如果不能,则执行步骤8;
24.步骤5,将检测状态设置为字典检测中状态,执行步骤6;
25.步骤6,在所述字典树中,定位到节点nodej的下一级直接连接的节点,表示为节点node
j+1
,然后,判断节点node
j+1
代表的字符是否与当前字符chari匹配,如果匹配,记录当前字符chari以及当前字符chari在字符串中的位置,然后执行步骤7;如果不匹配,则将检测状态设置为无检测状态,清空记录,字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;
26.步骤7,将检测状态设置为字典检测中状态;在所述字典树中,判断节点node
j+1
是否具有下一级直接连接的节点,如果没有,表示字典树完结,检测结束;如果有,返回步骤3,遍历字符串的下一个字符;
27.步骤8,判断当前的检测状态,如果为字典检测中状态,则在字典树中当前定位到
的节点位置保持不变,返回步骤3,遍历字符串的下一个字符;如果为无检测状态,则字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;
28.通过步骤3到步骤8,最终记录得到字符以及其在字符串中的位置,记录的各个字符按其在字符串中的位置排列后,形成字符序列,即为在被检测的字符串中,检测到的需要过滤的字符序列。
29.本发明提供的高性能防绕过关键词过滤的方法及系统具有以下优点:
30.本发明能够高效的对字符串进行检测,准确识别出字符串中的关键词,尤其当字符串中混淆其它字符时,仍然能够识别出字符串中的关键词,防止跳字符绕过。
附图说明
31.图1为本发明提供的高性能防绕过关键词过滤的方法的流程示意图;
32.图2为本发明提供的高性能防绕过关键词过滤的方法的架构图;
33.图3为本发明提供的字典树的示例图。
具体实施方式
34.为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
35.参考图1,本发明提供一种高性能防绕过关键词过滤的方法,包括以下步骤:
36.步骤1,定义字符类型;例如,字符类型包括四种,分别为:汉字字符类型、英文字母字符类型、数字字符类型和其他字符类型。其中,英文字母字符类型,包括大写英文字母字符类型和小写英文字母字符类型。
37.步骤2,将需要过滤的所有关键词生成字典树;在所述字典树中,假设任意关键词由n个字符按顺序组成,分别为:第0位置字符,第1位置字符,

,第n-1位置字符;则其在所述字典树中的表示方式为:由2n个节点按前后顺序级联形成,其中,2n个节点按前后顺序分别代表:第0位置字符的字符类型,第0位置字符,第1位置字符的字符类型,第1位置字符,

,第n-1位置字符的字符类型,第n-1位置字符;
38.步骤3,遍历需要检测的字符串,如果当前位置不存在字符,代表遍历字符串结束,检测结束;如果当前位置存在字符,读取当前字符chari,根据步骤1定义的字符类型,获得当前字符chari的字符类型typei,执行步骤4;
39.步骤4,在所述字典树中,判断能否匹配到与字符类型typei对应的节点,如果能,假设匹配到的节点为节点nodej,然后执行步骤5;如果不能,则执行步骤8;
40.步骤5,将检测状态设置为字典检测中状态,执行步骤6;
41.步骤6,在所述字典树中,定位到节点nodej的下一级直接连接的节点,表示为节点node
j+1
,然后,判断节点node
j+1
代表的字符是否与当前字符chari匹配,如果匹配,记录当前字符chari以及当前字符chari在字符串中的位置,然后执行步骤7;如果不匹配,则将检测状态设置为无检测状态,清空记录,字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;
42.步骤7,将检测状态设置为字典检测中状态;在所述字典树中,判断节点node
j+1

否具有下一级直接连接的节点,如果没有,表示字典树完结,检测结束;如果有,返回步骤3,遍历字符串的下一个字符;
43.步骤8,判断当前的检测状态,如果为字典检测中状态,则在字典树中当前定位到的节点位置保持不变,返回步骤3,遍历字符串的下一个字符;如果为无检测状态,则字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;
44.通过步骤3到步骤8,最终记录得到字符以及其在字符串中的位置,记录的各个字符按其在字符串中的位置排列后,形成字符序列,即为在被检测的字符串中,检测到的需要过滤的字符序列。
45.本发明还提供一种高性能防绕过关键词过滤的系统,包括:
46.字符类型定义模块,用于定义字符类型;
47.字典树生成模块,用于将需要过滤的所有关键词生成字典树;在所述字典树中,假设任意关键词由n个字符按顺序组成,分别为:第0位置字符,第1位置字符,

,第n-1位置字符;则其在所述字典树中的表示方式为:由2n个节点按前后顺序级联形成,其中,2n个节点按前后顺序分别代表:第0位置字符的字符类型,第0位置字符,第1位置字符的字符类型,第1位置字符,

,第n-1位置字符的字符类型,第n-1位置字符;
48.防绕过关键词检测模块,用于采用以下方法,从需要检测的字符串中,识别出关键词:
49.步骤3,遍历需要检测的字符串,如果当前位置不存在字符,代表遍历字符串结束,检测结束;如果当前位置存在字符,读取当前字符chari,根据步骤1定义的字符类型,获得当前字符chari的字符类型typei,执行步骤4;
50.步骤4,在所述字典树中,判断能否匹配到与字符类型typei对应的节点,如果能,假设匹配到的节点为节点nodej,然后执行步骤5;如果不能,则执行步骤8;
51.步骤5,将检测状态设置为字典检测中状态,执行步骤6;
52.步骤6,在所述字典树中,定位到节点nodej的下一级直接连接的节点,表示为节点node
j+1
,然后,判断节点node
j+1
代表的字符是否与当前字符chari匹配,如果匹配,记录当前字符chari以及当前字符chari在字符串中的位置,然后执行步骤7;如果不匹配,则将检测状态设置为无检测状态,清空记录,字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;
53.步骤7,将检测状态设置为字典检测中状态;在所述字典树中,判断节点node
j+1
是否具有下一级直接连接的节点,如果没有,表示字典树完结,检测结束;如果有,返回步骤3,遍历字符串的下一个字符;
54.步骤8,判断当前的检测状态,如果为字典检测中状态,则在字典树中当前定位到的节点位置保持不变,返回步骤3,遍历字符串的下一个字符;如果为无检测状态,则字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;
55.通过步骤3到步骤8,最终记录得到字符以及其在字符串中的位置,记录的各个字符按其在字符串中的位置排列后,形成字符序列,即为在被检测的字符串中,检测到的需要过滤的字符序列。
56.下面列举一个实施例:
57.步骤1,定义字符类型包括四类,分别为:汉字类型、大写字母和小写字母类型、数
字类型和其他类型,四类字符类型,分别用数字1、2、3、4表示。
58.实际应用中,可以利用unicode字符集定义常见的4种字符类型(1:汉字[19968,40917],2:大写字母[65,90],小写字母[97,122],3:数字[48,57],4:其他),字符类型可扩展。
[0059]
步骤2,生成字典树;如图3所示,为字典树的一种示例图。在本例中,“字2字3字4字5字
6”为需要识别到的关键词。
[0060]
步骤3,假设需要检测的字符串为:字0字1字2字3字4ab字5字6[0061]
步骤4,遍历字符串的第1个字符

字0’
,获取其字符类型为1(汉字),进入步骤5。
[0062]
步骤5,字符类型匹配:
[0063]
在字典树中,匹配到字符类型为1(汉字)的一级节点,表示为节点node[字0],进入步骤6。
[0064]
步骤6,将检测状态设置为字典检测中状态,执行步骤7;
[0065]
步骤7,字典树变更和字符匹配:
[0066]
字典树变更,即:在字典树中,定位到节点node[字0]的下一级直接连接的节点node[字0+1],进行字符匹配:即,判断节点node[字0]的字符是否与当前字符

字0’
匹配,此时匹配失败,将检测状态设置为无检测状态,清空记录,字典树重置为初始状态,然后执行步骤8;
[0067]
步骤8,遍历字符串的第2个字符

字1’
,获取其字符类型为1(汉字),此时执行方式与对第1个字符

字0’
的执行方式相同,字符类型匹配成功,但字符匹配失败;然后执行步骤9;
[0068]
步骤9,遍历字符串的第3个字符

字2’
,获取其字符类型为1(汉字),字符类型匹配成功,在字典树中,匹配到字符类型为1(汉字)的一级节点,表示为节点node1,进入步骤10。
[0069]
步骤10,将检测状态设置为字典检测中状态,执行步骤11;
[0070]
步骤11,字典树变更,即:在字典树中,定位到节点node1的下一级直接连接的节点node2,进行字符匹配:即,判断节点node2的字符是否与当前字符

字2’
匹配,此时匹配成功,记录当前字符

字2’
以及在字符串中的位置为2;执行步骤12;
[0071]
步骤12,将检测状态设置为字典检测中状态;在所述字典树中,节点node2具有下一级节点,定位到其下一级节点为node3,执行步骤13;
[0072]
步骤13,遍历字符串的第4个字符

字3’
,获取其字符类型为1(汉字),与字典树中节点node3的字符类型相同,因此,字符类型匹配成功,执行步骤14;
[0073]
步骤14,将检测状态设置为字典检测中状态;在字典树中,定位到节点node3的下一级节点为节点node4,字符

字3’
和节点node4进行字符匹配,本例中,字符匹配成功,记录当前字符

字3’
以及在字符串中的位置为3;执行步骤15;
[0074]
步骤15,将检测状态设置为字典检测中状态;在所述字典树中,节点node4具有下一级节点,定位到其下一级节点为node5,执行步骤16;
[0075]
步骤16,遍历字符串的第5个字符

字4’
,获取其字符类型为1(汉字),与字典树中节点node5的字符类型相同,因此,字符类型匹配成功,执行步骤17;
[0076]
步骤17,将检测状态设置为字典检测中状态;在字典树中,定位到节点node5的下一级节点为节点node6,字符

字4’
和节点node6进行字符匹配,本例中,字符匹配成功,记录
当前字符

字4’
以及在字符串中的位置为4;执行步骤18;
[0077]
步骤18,遍历字符串的第6个字符

a’,获取其字符类型为2(字母),与字典树中节点node7的字符类型不相同,此时检测状态为字典检测中状态,因此,字典树中保持定位到的节点node7的位置不变,执行步骤19;
[0078]
步骤19,遍历字符串的第7个字符

b’,获取其字符类型为2(字母),与字典树中节点node7的字符类型不相同,此时检测状态为字典检测中状态,因此,字典树中保持定位到的节点node7的位置不变,执行步骤20;
[0079]
步骤20,遍历字符串的第8个字符

字5’
,获取其字符类型为2(字母),与字典树中节点node7的字符类型相同,将检测状态设置为字典检测中状态,定位到节点node7的下一级节点,即节点node8,进行字符匹配,本例中字符匹配成功,记录当前字符

字5’
以及在字符串中的位置为7;执行步骤21;
[0080]
步骤21,遍历字符串的第9个字符

字6’
,获取其字符类型为2(字母),与字典树中节点node9的字符类型相同,将检测状态设置为字典检测中状态,定位到节点node9的下一级节点,即节点node
10
,进行字符匹配,本例中字符匹配成功,记录当前字符

字6’
以及在字符串中的位置为8。
[0081]
因此,对于待测字符串“字0字1字2字3字4ab字5字
6”,其中,字0字1字2字3字4字5字6分别代表7个汉字,根据字典树,最终记录得到的字符序列为:字2字3字4字5字6,其字符位置分别为:2、3、4、7、8,也就是说,字2字3字4字5字6字符串,为字典树定位的需要过滤掉的字符串,通过本发明,即使在字2字3字4字5字6字符串中包含有其他如“ab”的字符,本发明仍然成功识别出需要过滤掉的字符串,过滤效果好。
[0082]
作为一个具体示例,可采用以下步骤,进行高性能防绕过关键词识别过滤:
[0083]
一、构建词库,根据不同业务,整理不同的关键词库
[0084]
二、生成字典,根据关键词库生成结构化便于检索的字典,具体结构请参阅图3字典采取树形结构。
[0085]
三、搭建检测系统,方便提供不同业务的检测
[0086]
四、校验用户提交的信息,将提交的待检查的数据内容,遍历逐个字符在字典中进行快速查找,最终返回包含的关键词。
[0087]
本发明利用字典树形结构的匹配方式,在树节点加入字符类型节点,能够更加高效匹配到关键词,也减少了字典体积的大小,且使用特有的字符类型匹配规则,成功防止类似

字2字3字4ab字5字6’
等关键词中间夹杂其他类型字符的绕过。
[0088]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

技术特征:
1.一种高性能防绕过关键词过滤的方法,其特征在于,包括以下步骤:步骤1,定义字符类型;步骤2,将需要过滤的所有关键词生成字典树;在所述字典树中,假设任意关键词由n个字符按顺序组成,分别为:第0位置字符,第1位置字符,

,第n-1位置字符;则其在所述字典树中的表示方式为:由2n个节点按前后顺序级联形成,其中,2n个节点按前后顺序分别代表:第0位置字符的字符类型,第0位置字符,第1位置字符的字符类型,第1位置字符,

,第n-1位置字符的字符类型,第n-1位置字符;步骤3,遍历需要检测的字符串,如果当前位置不存在字符,代表遍历字符串结束,检测结束;如果当前位置存在字符,读取当前字符char
i
,根据步骤1定义的字符类型,获得当前字符char
i
的字符类型type
i
,执行步骤4;步骤4,在所述字典树中,判断能否匹配到与字符类型type
i
对应的节点,如果能,假设匹配到的节点为节点node
j
,然后执行步骤5;如果不能,则执行步骤8;步骤5,将检测状态设置为字典检测中状态,执行步骤6;步骤6,在所述字典树中,定位到节点node
j
的下一级直接连接的节点,表示为节点node
j+1
,然后,判断节点node
j+1
代表的字符是否与当前字符char
i
匹配,如果匹配,记录当前字符char
i
以及当前字符char
i
在字符串中的位置,然后执行步骤7;如果不匹配,则将检测状态设置为无检测状态,清空记录,字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;步骤7,将检测状态设置为字典检测中状态;在所述字典树中,判断节点node
j+1
是否具有下一级直接连接的节点,如果没有,表示字典树完结,检测结束;如果有,返回步骤3,遍历字符串的下一个字符;步骤8,判断当前的检测状态,如果为字典检测中状态,则在字典树中当前定位到的节点位置保持不变,返回步骤3,遍历字符串的下一个字符;如果为无检测状态,则字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;通过步骤3到步骤8,最终记录得到字符以及其在字符串中的位置,记录的各个字符按其在字符串中的位置排列后,形成字符序列,即为在被检测的字符串中,检测到的需要过滤的字符序列。2.根据权利要求1所述的高性能防绕过关键词过滤的方法,其特征在于,所述字符类型包括四种,分别为:汉字字符类型、英文字母字符类型、数字字符类型和其他字符类型。3.根据权利要求2所述的高性能防绕过关键词过滤的方法,其特征在于,所述英文字母字符类型,包括大写英文字母字符类型和小写英文字母字符类型。4.一种高性能防绕过关键词过滤的系统,其特征在于,包括:字符类型定义模块,用于定义字符类型;字典树生成模块,用于将需要过滤的所有关键词生成字典树;在所述字典树中,假设任意关键词由n个字符按顺序组成,分别为:第0位置字符,第1位置字符,

,第n-1位置字符;则其在所述字典树中的表示方式为:由2n个节点按前后顺序级联形成,其中,2n个节点按前后顺序分别代表:第0位置字符的字符类型,第0位置字符,第1位置字符的字符类型,第1位置字符,

,第n-1位置字符的字符类型,第n-1位置字符;防绕过关键词检测模块,用于采用以下方法,从需要检测的字符串中,识别出关键词:
步骤3,遍历需要检测的字符串,如果当前位置不存在字符,代表遍历字符串结束,检测结束;如果当前位置存在字符,读取当前字符char
i
,根据步骤1定义的字符类型,获得当前字符char
i
的字符类型type
i
,执行步骤4;步骤4,在所述字典树中,判断能否匹配到与字符类型type
i
对应的节点,如果能,假设匹配到的节点为节点node
j
,然后执行步骤5;如果不能,则执行步骤8;步骤5,将检测状态设置为字典检测中状态,执行步骤6;步骤6,在所述字典树中,定位到节点node
j
的下一级直接连接的节点,表示为节点node
j+1
,然后,判断节点node
j+1
代表的字符是否与当前字符char
i
匹配,如果匹配,记录当前字符char
i
以及当前字符char
i
在字符串中的位置,然后执行步骤7;如果不匹配,则将检测状态设置为无检测状态,清空记录,字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;步骤7,将检测状态设置为字典检测中状态;在所述字典树中,判断节点node
j+1
是否具有下一级直接连接的节点,如果没有,表示字典树完结,检测结束;如果有,返回步骤3,遍历字符串的下一个字符;步骤8,判断当前的检测状态,如果为字典检测中状态,则在字典树中当前定位到的节点位置保持不变,返回步骤3,遍历字符串的下一个字符;如果为无检测状态,则字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;通过步骤3到步骤8,最终记录得到字符以及其在字符串中的位置,记录的各个字符按其在字符串中的位置排列后,形成字符序列,即为在被检测的字符串中,检测到的需要过滤的字符序列。

技术总结
本发明提供一种高性能防绕过关键词过滤的方法及系统,方法包括:定义字符类型;将需要过滤的所有关键词生成字典树;通过字典树,识别需要检测的字符串中的关键词。本发明能够高效的对字符串进行检测,准确识别出字符串中的关键词,尤其当字符串中混淆其它字符时,仍然能够识别出字符串中的关键词,防止跳字符绕过。过。过。


技术研发人员:李兴平 陈旺科 许明堂 黄敬平
受保护的技术使用者:四三九九网络股份有限公司
技术研发日:2023.03.29
技术公布日:2023/7/28
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐