CN109150962A - 一种通过关键字快速识别http请求头的方法 - Google Patents
一种通过关键字快速识别http请求头的方法 Download PDFInfo
- Publication number
- CN109150962A CN109150962A CN201810715513.9A CN201810715513A CN109150962A CN 109150962 A CN109150962 A CN 109150962A CN 201810715513 A CN201810715513 A CN 201810715513A CN 109150962 A CN109150962 A CN 109150962A
- Authority
- CN
- China
- Prior art keywords
- keyword
- rule
- bitmap
- array
- regular
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种通过关键字快速识别HTTP请求头的方法,所述方法包括:步骤1)建立关键字数组树、规则id表和规则bitmap集合表;步骤2)解析HTTP请求头的字段,得到字段名和字段值;从字段值中获取关键字,依次利用关键字数组树、规则id表和规则bitmap集合表获取到该请求头的规则。在本发明的方法中,如果命中了一条规则,以后不再检查关键字和规则,只解析HTTP字段和值,提高了识别的效率和速度;而且本发明的HTTP请求识别效率极高,不会因为配置规则增多而导致性能下降。
Description
技术领域
本发明涉及HTTP内容缓存服务领域,具体涉及一种通过关键字快速识别HTTP请求头的方法。
背景技术
目前分析HTTP报文头的处理方法,是先解析出HTTP报文头的所有字段,比如解析GET请求时,需要解析出URI,Host,文件扩展名,Refer等,然后按照Host,文件扩展名来确定该请求属于哪个网站哪种应用请求。早期绝大部分网站都能通过Host和扩展名来区分各种类型的请求,因为Host通常是网站域名,格式固定,扩展名字符串也很短,很容易做到高效识别。
但随着网站的变化,越来越多的HTTP请求通过Host和扩展名已经不能识别出该请求属性哪个网站哪种应用了,因为很多请求的Host不是域名而是IP地址,有的请求URI中也没有扩展名。通过其他字段,如URI中的关键字,Refer中的关键字,或URI中的参数等一般能识别这样的请求,但是这些都是普通的字符串,需要在这些字符串中查找关键字,目前的算法效率比较低,一般是解析完HTTP请求的所有字段后,按照事先配置好的关键字规则表,逐条检查能匹配到哪个配置规则,然后根据命中的规则确定这个请求属于哪个网站的哪种应用请求。这种逐条检查关键字规则表的方法效率较低,而且随着规则的增加,处理每个请求所需要的时间会线性增加,处理效率也就线性的降低。
而且目前很多的HTTP请求,只能通过关键字才能识别该请求属于哪个网站的哪种应用。
发明内容
本发明的目的在于针对目前HTTP请求通过关键字识别效率低的问题,提出了一种实现了高效的HTTP关键字识别的方法,以便可以即时处理现网大数据并发的请求,或高效分析web请求数据,而且不会随着关键字规则的增加处理效率降低。
为了实现上述目的,本发明提出了一种通过关键字快速识别HTTP请求头的方法,所述方法包括:
步骤1)建立关键字数组树、规则id表和规则bitmap集合表;
步骤2)解析HTTP请求头的字段,得到字段名和字段值;从字段值中获取关键字,依次利用关键字数组树、规则id表和规则bitmap集合表获取到该请求头的规则。
作为上述方法的一种改进,所述关键字数组树为多个数组组成的树形结构,用于存储配置的关键字数据,每个数组包括若干个节点,每个节点包括三个元素:array、is_leaf和id;元素array是指向下一个数组的指针,元素is_leaf用于标记该节点是否为叶子节点,元素id是这个关键字的唯一数值型编码。
作为上述方法的一种改进,所述规则id表用于记录关键字所属的规则id和这个关键字要检查的字段名信息;所述规则id表是一个以关键字id作为key的hash表;这个hash表的索引表是一个数组,数组的每个元素接链表的结构;每个元素有两个属性:ruler_id和str_bitmap,ruler_id指明配置规则的id,str_bitmap指明配置的这个关键字在本规则中是要检查HTTP的所属字段。
作为上述方法的一种改进,所述规则bitmap集合表为一个规则bitmap数组;每个规则bitmap,用于指明一个规则需要检查的HTTP的字段;规则bitmap是一个8字节整型值,以字节的指定bit位代表在HTTP的字段设置关键字检查。
作为上述方法的一种改进,所述步骤1)具体包括:
步骤1-1)创建若干个关键字规则,所述关键字规则,用于定义HTTP请求头中每个字段名包含的关键字;
步骤1-2)读取一条关键字规则,将关键字规则中的每个关键字添加到数组树中,一个关键字添加到数组树中后,会得到一个关键字id,用这个关键字id作为下标,定位到规则id表的索引数组,在这个数组元素下链接一个新节点,为新节点增加两个属性:ruler_id和str_bitmap;
步骤1-3)以ruler_id作为下标,定位到规则bitmap集合表中的一个规则bitmap,设置这个规则bitmap对应的bit值,一个规则有m个关键字,在规则bitmap集合表中对应的规则bitmap有m个bit位被设置。
作为上述方法的一种改进,一个关键字规则包含一个或多个关键字。
作为上述方法的一种改进,所述步骤2)具体包括:
步骤2-1)创建一个与规则bitmap集合表相同的临时bitmap集合表;
步骤2-2)解析HTTP请求头的一个字段,得到字段名和字段值;设置剩余字符串为该字段值的全部字符串;
步骤2-3)将剩余字符串在关键字数组树进行关键字匹配;
步骤2-4)如果匹配到关键字id,返回已检查字符串的个数n,进入步骤2-5);否则,转入步骤2-8);
步骤2-5)根据关键字id在规则id表中找到该关键字所属的规则ruler_id和关键字的str_bitmap;
步骤2-6)用规则ruler_id在临时bitmap集合表中进行定位,得到临时bitmap;如果是第一次使用该临时bitmap处理HTTP请求,将临时bitmap的64个bit位置0;然后用str_bitmap设置临时bitmap的一个bit位为1,否则,直接用str_bitmap设置临时bitmap的一个bit位为1;
步骤2-7)用规则ruler_id在规则bitmap集合表中进行定位,得到规则bitmap;用临时bitmap和规则bitmap比较,如果临时bitmap设置的bit位包含规则bitmap设置的bit位,则匹配该规则;转入步骤2-9);否则,转入步骤2-8);
步骤2-8)将全部的字符串减去已扫描过的n个字符串得到剩余字符串,如果剩余字符串为空,该请求没有匹配任何规则;流程结束;否则,转入步骤2-2);
步骤2-9)匹配的规则为该HTTP请求头对应的规则。
本发明的优势在于:
1、本发明能够通过关键字高效识别HTTP请求属于哪个网站的哪种应用;
2、在本发明的方法中,如果命中了一条规则,以后不再检查关键字和规则,只解析HTTP字段和值,提高了识别的效率和速度;
3、本发明的HTTP请求识别效率极高,原因在于:只对报文进行一次扫描,在解析报文的同时,可检查配置的所有关键字;每个表的查找都是根据已知下标值一步定位;配置规则转化为bitmap,即一个8字节整型,比较规则只是比较一个整型值;
4、本发明的方法不会因为配置规则增多而导致性能下降;原因在于:关键字数组树不需要冲突处理,id表是hash表,一个字符串属于很多ruler的情况在实际使用时很少,id表冲突很小。临时bitmap集合表和规则bitmap集合表实际上都是数组,配置时规则id不重复,表中每个元素都是按照规则id存放在对应的下标位置,所以这两个表在查找时直接定位没有冲突。
附图说明
图1为本发明的实施例1的网络部署结构示意图;
图2为本发明的关键字数组树的结构图;
图3为本发明的规则id表的结构图;
图4为本发明的规则bitmap的示意图;
图5为本发明的通过关键字快速识别HTTP请求头的方法的流程图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细的说明。
实施例1
实施例1是一个web数据分析***。图1为网络部署结构,用户的HTTP请求数据在经过交换机向外请求时,交换机会复制一份上行数据,发送给数据采集分析服务器,数据采集分析服务器,按照配置好的规则,也就是前面讲的按关键字识别网站及应用的规则,输出结果时,标明每个请求是哪个网站及哪种应用。分析结果会定期上报到报表***,报表***根据网站及应用统计应用的请求热度,用户行为等。
采集分析服务器配置标准为:
cpu:Intel(R)Xeon(R)CPU [email protected],16核心
内存:16G或16G以上
网卡:Intel Corporation 82599ES 10-Gigabit SFI/SFP+Network Connection
混合网络环境下运行,即上行流量为包含HTTP请求,也包含所有其他协议请求,HTTP上行包数占比约为20%,一个网卡可处理8G请求,4个网卡时,可处理30G请求。
本发明的实施例1提供了一种通过关键字快速识别HTTP请求头的方法,所述方法包括:
首先,在处理HTTP请求报文之前,预先配置好关键字规则,关键字规则定义一个HTTP请求头中,哪些字段包含哪些关键字,则认为这个请求属于哪个网站的哪种应用请求。一个规则可以包含多个关键字,规则配置文件可以是如下形式:
这个规则定义了如果请求文件的扩展名为mp4,请求的URI路径中包含关键字“/youku/”,则认为这个请求是优酷的mp4应用请求。
下面介绍一下***主要的数据结构和配置文件的读取方法。配置好关键字规则后,要将关键字规则读取到一个数据存储结构。称这个结构为关键字数组树,结构图如图2所示:
关键键字数组树由多个数组组成的树形结构。使用关键字数组树来存储配置的关键字数据,数组树中的元素array是指向下一个数组的指针,is_leaf标记该节点是否为叶子节点,id是这个关键字的唯一数值型编码。
关键字数组树将一个关键字的每个字符,以字符的值作为数组下标,设置每个字符在关键字字符串中是否存在和所在的位置。比如存放一个关键字“abc”,数组1以字符“a”的值(97)作为下标,定位到一个数组元素,设置这个元素的array指针指向数组2,数组2以字符“b”的值(98)作为下标,定位到一个数组元素,设置这个元素的array指针指向数组3,数组3以字符“c”的值(99)作为下标,定位到一个数组元素,设置这个元素的array指针为NULL,因为这是最后一个字符了,最后一个字符要设置is_leaf为1,表示是叶子节点,然后设置id的值,所有关键字的id不可重复。
关键字数组树将配置的关键字读取完后,再需要查找时,以关键字字符串的每个字符作为下标,直接定位到数组元素查看内容,如果元素内容标记不是关键字结尾,即不是叶子节点,再查看array指针指向的数组,如果按照关键字每个字符作为下标,依次逐层查找数组树的元素,能找到一个元素是叶子节点,那么字符串中包含了配置的关键字,可取到该关键字的id。
关键字存放到数组树中后,还要将关键字所属的规则id,和这个关键字要检查的字段名信息存放到规则id表中,规则id表是一个以关键字id作为key的hash表。规则id表结构如图3所示:
这个hash表的索引表是一个数组,数组的每个元素接链表的结构。一个关键字添加到数组树中后,会得到一个关键字id,用这个关键字id作为下标,定位到规则id表的索引数组,在这个数组元素下链接一个新节点,这个节点有两个属性,ruler_id和str_bitmap,ruler_id指明配置规则的id,str_bitmap指明配置的这个关键字在本规则中是要检查HTTP的那个字段的。
str_bitmap和下面的规则bitmap,定义和含义都相同,如图3所示,下面介绍一下规则bitmap的定义:
规则bitmap是一个8字节整型值,以字节的某个bit位代表HTTP某个字段设置了关键字检查。HTTP的每个字段占用4个bit位,也就是每个规则相同的字段名可以配4个关键字。
规则id表中的每个节点的str_bitmap,一定是只有一位被设置为1,因为这个节点只代表一个关键字的信息。
添加完规则id表后,还需要设置规则bitmap集合表,规则bitmap集合表实际就是一个规则bitmap数组。表1结构如下:
规则bitmap集合表
规则bitmap集合表的每一个元素,指明一个规则需要检查HTTP哪些字段。
读取一条配置规则时,规则中的每个关键字添加到数组树中,再把这个关键字代表要检查HTTP那个字段的bitmap信息添加到规则id表中,然后以规则id作为下标,定位到规则bitmap集合表中的一个规则bitmap,设置这个规则bitmap对应的bit值,一个规则有几个关键字,在规则bitmap集合表中对应的规则bitmap就会有几个bit位被设置。
至此,一个规则如何读取到内存数据结构已经介绍完。下面介绍一个HTTP请求报文头如何快速匹配规则。
在***运行时,还需要一个临时bitmap集合表,见表2;这个临时bitmap集合表和规则bitmap集合表结构和大小相同。规则bitmap集合表是读取完配置后固定不变的,临时bitmap集合表在运行中动态变化。
临时bitmap集合表
根据前面的数据结构和预先配置好的规则,在解析HTTP请求头部的同时,匹配配置的所有关键字,不是先提取完字段的值,再查这个值包含那些关键字,而是只遍历一次值,就检查所有配置的关键字,且每检查到一个关键字,得到关键字的id,以关键字id作为数组下标,一步定位到规则id表的数组元素,检查这个元素链接的所有节点,再以每个节点的ruler_id为下标,定位到临时bitmap集合表中的一个临时bitmap,用str_bitmap的值添加设置临时bitmap,以节点的ruler_id为下标,定位到规则bitmap集合表中的一个规则bitmap,检查临时bitmap被设置的所有bit位是否包含规则bitmap设置的所有bit位,即临时bitmap与规则bitmap作逻辑与运输,如果结果和规则bitmap相等,说明匹配到该规则,如果不相等,不匹配该规则。
如果命中了一条规则,以后不再检查关键字和规则,只解析HTTP字段和值。
在关键字匹配时,可以自动识别HTTP字段的结束符,同时提取出某个字段的值,实现一次扫描HTTP报文头,关键字检查和字段解析同时完成。
下面通过一个具体的实例,来详细说明关键字快速识别HTTP请求头的处理逻辑。
还以上面介绍过的规则配置为例:
读取关键字“mp4”,存储到数组树中,设置这个关键字的id值为0,然后以关键字“mp4”的id值为0作为下标,定位到规则id表的元素,在这个元素下挂上一个新节点,这个节点的ruler_id值为0,也就是配置文件中定义的规则id,str_bitmap值为0x10(二进制00010000),因为是ext字段(参照规则bitmap定义),然后以ruler_id值作为下标,在规则bitmap集合表中找到对应的规则bitmap,设置这个规则bitmap值为0x10(二进制0001 0000)。关键字“mp4”读取完成,再读关键字“/youku/”,将“/youku/”同样存放在数组树中,设置这个关键字的id值为1,以关键字id值1作为下标,定位到规则id表的元素,在这个元素下挂上一个新节点,节点的ruler_id值也为0,str_bitmap值为0x100(二进制0001 00000000),设置规则bitmap集合表中对应的规则bitmap值为0x110(二进制0001 00010000),即关键字“mp4”的bitmap值和关键字“/youku/”的bitmap值作逻辑或的结果。至此,这个规则配置完成。
下面说明一个HTTP请求解析及快速查找规则的逻辑,收到一个HTTP请求,按照HTTP格式解析字段,在解析字段值时,只扫描一次字符串就可查找所有配置的关键字,因为是在数组树中查找。为了配合上面的配置文件说明,假设一个HTTP请求头是这样的:
GET/youku/bbbbbbbbbbb/cccccccccccccccc/xyy01.mp4
Host:183.199.194.33
在扫描path时,查找关键字数组树,找到了关键字“/youku/”,得到关键字id值为1,且在解析HTTP时已知找到的这个字段是path类型。得到关键字“/youku/”的id值1后,到规则id表中查找,查找时以关键字id的值1为数组下标,在规则id表中查找该下标指针元素指向的所有节点,以之前配置为例,会读取到一个节点,这个节点的ruler_id是值是0,str_bitmap值是0x100,然后以这个ruler_id值为下标,到临时bitmap集合表中定位到一个临时bitmap元素,将这个临时bitmap值和在规则id表中找到的那个str_bitmap值作逻辑或运算,运算结果赋值给临时bitmap,按照举例设置这个临时bitmap值为0x100,再用ruler_id值作为数组下标,在规则bitmap集合表中定位到这个规则bitmap,按照举例这个规则bitmap值为0x110,再用临时bitmap(0x100)和规则bitmap(0x110)作逻辑与运算,如果运算值和规则bitmap相等,说明匹配到了这个规则。按照目前的举例本次没有匹配。
那么继续扫描剩余字符串,将会匹配到关键字“mp4”,也会解析得知mp4是扩展名,得到该关键字的id值为0,以这个id作为下标,到规则id表中查找到一个节点,得到这个节点的ruler_id值,这里ruler_id值是0,得到str_bitmap值,这里是0x10,用ruler_id值0作为下标,在临时bitmap集合表中找到临时bitmap,这个str_bitmap和临时bitmap作逻辑或运算,运算结果值赋给临时bitmap,按照举例现在临时bitmap值为(0x100|0x10=0x110),再用ruler_id作为下标在规则bitmap集合表中定位到规则bitmap,按照举例这个规则bitmap值为0x110,临时bitmap(0x110)与规则bitmap(0x110)做逻辑与运算,结果为0x110,与规则bitmap值相等,说明本次匹配到了规则,规则的id为0。
之后为了提升性能,解析剩余的HTTP报文时,不再检查规则。
在读配置规则时,将每个关键字转化为一个数值型的id,以关键字id为下标,将这个关键字所属的规则id,和仅这个关键字要检查的bitmap信息存到规则id表中。当扫描字符串匹配到一个中关键字时,根据关键字id定位规则id表,找到规则id和这个关键字的bitmap,规矩规则id定位临时bitmap和规则bitmap,用关键字的str_bitmap与临时bitmap作逻辑或运算,运算结果赋值给临时bitmap,临时bitmap在和规则bitmap作逻辑与运算,运算结果和规则bitmap比较是否相等,相等匹配规则,否则不匹配。综上逻辑,是先查关键字,根据匹配的关键字反查关键字所在的规则,这样只需要检查本关键字所在的规则,避免了所有的规则顺序查找。
关键字查找使用数组树,每个字符一步定位查找,一次扫描字符串可查找所有配置的关键字,保证字符串查找效率,id表查找以字符串id作为下标一步定位,保证查找ruler id和关键字str_bitmap的效率,临时bitmap表和规则bitmap表使用ruler_id为下标一步定位,保证临时bitmap表和规则bitmap表查找效率。即所有查找都是已知数组下标一次定位,提高查询效率。
是否匹配规则,只需临时bitmap和配置bitmap比较,而bitmap都是8个字节的整型数值,保证了bitmap比较效率。字符串形式的关键字规则通过处理,转换为一个整型值,提升规则比较效率。
综上所述,如图5所示,本发明的方法包括如下步骤:
第1步,在解析HTTP请求头的一个字段,得到字段名。
URL中包含:path(文件路径),ext(文件扩展名,有的没有扩展名),param(参数,URL字符串中“?”号后面的部分为参数,有的请求没有参数),这3个值是没有固定的字段名的,是在解析时将它们的字段名规定为path,ext和param。
第2步,字段值的剩余字符串进行关键字匹配,同时解析字段值。
第3步,无论是否匹配到关键字,都会返回已检查字符串的个数;如果匹配到关键字,进入第4步;否则,进入第7步;
第4步,得到关键字的id,根据关键字id在id表中找到该关键字所属的ruler_id和关键字的str_bitmap。
第5步,用ruler_id定位找到临时bitmap,用str_bitmap添加设置临时bitmap的值。
第6步,用ruler_id定位到规则bitmap,用临时bitmap和规则bitmap比较,如果临时bitmap设置的bit位包含规则bitmap设置的bit位,则匹配该规则,否则不匹配;
第7步,跳过已扫描过的n个字符串,遍历指针定位到剩余字符串的开始位置。
第8步,检查是否扫描到该字段值结束位置,如果没结束,进入第2步;如果是字段值结束位置,进入第9步;
第9步,查看是否为报文结束位置,如果到了报文结束位置退出,否则解析下一个字段。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (7)
1.一种通过关键字快速识别HTTP请求头的方法,所述方法包括:
步骤1)建立关键字数组树、规则id表和规则bitmap集合表;
步骤2)解析HTTP请求头的字段,得到字段名和字段值;从字段值中获取关键字,依次利用关键字数组树、规则id表和规则bitmap集合表获取到该请求头的规则。
2.根据权利要求1所述的通过关键字快速识别HTTP请求头的方法,其特征在于,所述关键字数组树为多个数组组成的树形结构,用于存储配置的关键字数据,每个数组包括若干个节点,每个节点包括三个元素:array、is_leaf和id;元素array是指向下一个数组的指针,元素is_leaf用于标记该节点是否为叶子节点,元素id是这个关键字的唯一数值型编码。
3.根据权利要求2所述的通过关键字快速识别HTTP请求头的方法,其特征在于,所述规则id表用于记录关键字所属的规则id和这个关键字要检查的字段名信息;所述规则id表是一个以关键字id作为key的hash表;这个hash表的索引表是一个数组,数组的每个元素接链表的结构;每个元素有两个属性:ruler_id和str_bitmap,ruler_id指明配置规则的id,str_bitmap指明配置的这个关键字在本规则中要检查HTTP的所属字段。
4.根据权利要求3所述的通过关键字快速识别HTTP请求头的方法,其特征在于,所述规则bitmap集合表为一个规则bitmap数组;每个规则bitmap,用于指明一个规则需要检查的HTTP的字段;规则bitmap是一个8字节整型值,以字节的指定bit位代表在HTTP的字段设置关键字检查。
5.根据权利要求4所述的通过关键字快速识别HTTP请求头的方法,其特征在于,所述步骤1)具体包括:
步骤1-1)创建若干个关键字规则,所述关键字规则,用于定义HTTP请求头中每个字段名包含的关键字;
步骤1-2)读取一条关键字规则,将关键字规则中的每个关键字添加到数组树中,一个关键字添加到数组树中后,会得到一个关键字id,用这个关键字id作为下标,定位到规则id表的索引数组,在这个数组元素下链接一个新节点,为新节点增加两个属性:ruler_id和str_bitmap;
步骤1-3)以ruler_id作为下标,定位到规则bitmap集合表中的一个规则bitmap,设置这个规则bitmap对应的bit值,一个规则有m个关键字,在规则bitmap集合表中对应的规则bitmap有m个bit位被设置。
6.根据权利要求5所述的通过关键字快速识别HTTP请求头的方法,其特征在于,一个关键字规则包含一个或多个关键字。
7.根据权利要求5所述的通过关键字快速识别HTTP请求头的方法,其特征在于,所述步骤2)具体包括:
步骤2-1)创建一个与规则bitmap集合表相同的临时bitmap集合表;
步骤2-2)解析HTTP请求头的一个字段,得到字段名和字段值;设置剩余字符串为该字段值的全部字符串;
步骤2-3)将剩余字符串在关键字数组树进行关键字匹配;
步骤2-4)如果匹配到关键字id,返回已检查字符串的个数n,进入步骤2-5);否则,转入步骤2-8);
步骤2-5)根据关键字id在规则id表中找到该关键字所属的规则ruler_id和关键字的str_bitmap;
步骤2-6)用规则ruler_id在临时bitmap集合表中进行定位,得到临时bitmap;如果是第一次使用该临时bitmap处理HTTP请求,将临时bitmap的64个bit位置0;然后用str_bitmap设置临时bitmap的一个bit位为1,否则,直接用str_bitmap设置临时bitmap的一个bit位为1;
步骤2-7)用规则ruler_id在规则bitmap集合表中进行定位,得到规则bitmap;用临时bitmap和规则bitmap比较,如果临时bitmap设置的bit位包含规则bitmap设置的bit位,则匹配该规则;转入步骤2-9);否则,转入步骤2-8);
步骤2-8)将全部的字符串减去已扫描过的n个字符串得到剩余字符串,如果剩余字符串为空,该请求没有匹配任何规则;流程结束;否则,转入步骤2-2);
步骤2-9)匹配的规则为该HTTP请求头对应的规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810715513.9A CN109150962B (zh) | 2018-07-03 | 2018-07-03 | 一种通过关键字快速识别http请求头的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810715513.9A CN109150962B (zh) | 2018-07-03 | 2018-07-03 | 一种通过关键字快速识别http请求头的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109150962A true CN109150962A (zh) | 2019-01-04 |
CN109150962B CN109150962B (zh) | 2021-03-02 |
Family
ID=64799687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810715513.9A Active CN109150962B (zh) | 2018-07-03 | 2018-07-03 | 一种通过关键字快速识别http请求头的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109150962B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857958A (zh) * | 2019-02-13 | 2019-06-07 | 杭州孝道科技有限公司 | 一种http输入点查找的方法 |
CN109936624A (zh) * | 2019-01-31 | 2019-06-25 | 平安科技(深圳)有限公司 | Http请求报文头的适配方法、装置和计算机设备 |
CN111581215A (zh) * | 2020-05-07 | 2020-08-25 | 钟士平 | 数组树数据储存方法、快速查找方法及可读储存介质 |
CN113688289A (zh) * | 2020-05-19 | 2021-11-23 | 中移(成都)信息通信科技有限公司 | 数据包关键字段匹配方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040030803A1 (en) * | 2002-08-10 | 2004-02-12 | Eatherton William N. | Performing lookup operations using associative memories optionally including modifying a search key in generating a lookup word and possibly forcing a no-hit indication in response to matching a particular entry |
CN102217281A (zh) * | 2011-06-13 | 2011-10-12 | 华为技术有限公司 | 协议解析方法及装置 |
CN102664935A (zh) * | 2012-04-06 | 2012-09-12 | 北京锐安科技有限公司 | 一种web类用户行为和用户信息的关联输出方法及*** |
CN106708956A (zh) * | 2016-11-29 | 2017-05-24 | 中国人民解放军国防科学技术大学 | 一种基于多url规则集的http数据匹配方法 |
CN108205577A (zh) * | 2016-12-20 | 2018-06-26 | 阿里巴巴集团控股有限公司 | 一种数组构建、数组查询的方法、装置及电子设备 |
-
2018
- 2018-07-03 CN CN201810715513.9A patent/CN109150962B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040030803A1 (en) * | 2002-08-10 | 2004-02-12 | Eatherton William N. | Performing lookup operations using associative memories optionally including modifying a search key in generating a lookup word and possibly forcing a no-hit indication in response to matching a particular entry |
CN102217281A (zh) * | 2011-06-13 | 2011-10-12 | 华为技术有限公司 | 协议解析方法及装置 |
CN102664935A (zh) * | 2012-04-06 | 2012-09-12 | 北京锐安科技有限公司 | 一种web类用户行为和用户信息的关联输出方法及*** |
CN106708956A (zh) * | 2016-11-29 | 2017-05-24 | 中国人民解放军国防科学技术大学 | 一种基于多url规则集的http数据匹配方法 |
CN108205577A (zh) * | 2016-12-20 | 2018-06-26 | 阿里巴巴集团控股有限公司 | 一种数组构建、数组查询的方法、装置及电子设备 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109936624A (zh) * | 2019-01-31 | 2019-06-25 | 平安科技(深圳)有限公司 | Http请求报文头的适配方法、装置和计算机设备 |
CN109936624B (zh) * | 2019-01-31 | 2022-03-18 | 平安科技(深圳)有限公司 | Http请求报文头的适配方法、装置和计算机设备 |
CN109857958A (zh) * | 2019-02-13 | 2019-06-07 | 杭州孝道科技有限公司 | 一种http输入点查找的方法 |
CN111581215A (zh) * | 2020-05-07 | 2020-08-25 | 钟士平 | 数组树数据储存方法、快速查找方法及可读储存介质 |
CN111581215B (zh) * | 2020-05-07 | 2020-12-15 | 钟士平 | 数组树数据储存方法、快速查找方法及可读储存介质 |
CN113688289A (zh) * | 2020-05-19 | 2021-11-23 | 中移(成都)信息通信科技有限公司 | 数据包关键字段匹配方法、装置、设备及存储介质 |
CN113688289B (zh) * | 2020-05-19 | 2023-11-24 | 中移(成都)信息通信科技有限公司 | 数据包关键字段匹配方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109150962B (zh) | 2021-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109885692B (zh) | 知识数据存储方法、装置、计算机设备和存储介质 | |
CN109150962A (zh) | 一种通过关键字快速识别http请求头的方法 | |
US7941420B2 (en) | Method for organizing structurally similar web pages from a web site | |
US8812949B2 (en) | System and method for automatically detecting and extracting semantically significant text from a HTML document associated with a plurality of HTML documents | |
US7483903B2 (en) | Unsupervised learning tool for feature correction | |
US20090089278A1 (en) | Techniques for keyword extraction from urls using statistical analysis | |
CN103365992B (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
CN110598203A (zh) | 一种结合词典的军事想定文书实体信息抽取方法及装置 | |
US20100257440A1 (en) | High precision web extraction using site knowledge | |
US20100274786A1 (en) | System And Method For Performing Longest Common Prefix Strings Searches | |
JP2005092889A (ja) | ウェブページのための情報ブロック抽出装置及び情報ブロック抽出方法 | |
US20090177669A1 (en) | Processing structured electronic document streams using look-ahead automata | |
US7199729B2 (en) | Character code conversion methods and systems | |
JP2006004417A (ja) | 情報ファイルの特定のタイプを認識する方法及び装置 | |
CN108228710B (zh) | 一种针对url的分词方法及装置 | |
WO2015009542A1 (en) | Semantics-oriented analysis of log message content | |
CN108563629B (zh) | 一种日志解析规则自动生成方法和装置 | |
US7318194B2 (en) | Methods and apparatus for representing markup language data | |
WO2006059425A1 (ja) | データベース構築装置、データベース検索装置、データベース装置、データベース構築方法、及びデータベース検索方法 | |
CN110598787A (zh) | 一种基于自定步长学习的软件bug分类方法 | |
CN104778232B (zh) | 一种基于长查询的搜索结果的优化方法和装置 | |
CN112307318A (zh) | 一种内容发布方法、***及装置 | |
Liao et al. | Doctr: Document transformer for structured information extraction in documents | |
WO2022262632A1 (zh) | 网页搜索方法、装置及存储介质 | |
Nghiem et al. | Which one is better: presentation-based or content-based math search? |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |