CN114157734A - 数据解析方法、装置、电子设备及存储介质 - Google Patents

数据解析方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114157734A
CN114157734A CN202111480627.8A CN202111480627A CN114157734A CN 114157734 A CN114157734 A CN 114157734A CN 202111480627 A CN202111480627 A CN 202111480627A CN 114157734 A CN114157734 A CN 114157734A
Authority
CN
China
Prior art keywords
state machine
boundary
entity
data
target
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.)
Pending
Application number
CN202111480627.8A
Other languages
English (en)
Inventor
刘禄丹
张云禄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Original Assignee
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Topsec Technology Co Ltd, Beijing Topsec Network Security Technology Co Ltd, Beijing Topsec Software Co Ltd filed Critical Beijing Topsec Technology Co Ltd
Priority to CN202111480627.8A priority Critical patent/CN114157734A/zh
Publication of CN114157734A publication Critical patent/CN114157734A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供一种数据解析方法、装置、电子设备及存储介质,涉及网络通信安全技术领域。该方法应用于服务器,服务器中设置有第一状态机和第二状态机,该方法包括:根据目标数据的边界关键信息对第一状态机进行配置,得到边界状态机;根据目标数据的头部关键信息对第二状态机进行配置,得到头部状态机;基于边界状态机对目标数据进行解析,确定目标数据的目标实体;基于头部状态机对目标实体进行解析,得到解析数据。本申请对两个状态机分别进行配置,分别对数据的边界和头部进行解析,通过边界状态机确定对应的目标实体,通过头部状态机对目标实体完成解析,得到解析数据。能够灵活地处理数据实体的逻辑和嵌套关系,提高了数据的解析效率。

Description

数据解析方法、装置、电子设备及存储介质
技术领域
本申请涉及网络通信安全技术领域,具体而言,涉及一种数据解析方法、装置、电子设备及存储介质。
背景技术
随着互联网的发展迅速以及普及,人们日常生活都与网络息息相关。日常的购物、社交、工作、生活等都离不开网络。随着不断网络化的现在,网络流量也与日俱增。庞大的流量对审计检测带来很大的挑战。
在现实网络流量中MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型)传输数据格式应用非常广泛,如HTTP(Hyper Text Transfer Protocol,超文本传输协议)协议和邮件协议。由于MIME数据在网络流量中的占比较大,而现有技术中在对MIME数据进行解析时,通常采用逐行读取的方式进行解析,解析内存占用高且存在解析异常风险,无法对数据进行灵活解析,导致MIME数据的解析效率较低,影响审计检测工作的效率。
发明内容
有鉴于此,本申请实施例的目的在于提供一种数据解析方法、装置、电子设备及存储介质,以改善现有技术中存在的数据的解析效率较低的问题。
为了解决上述问题,第一方面,本申请提供了一种数据解析方法,应用于服务器,所述服务器中设置有第一状态机和第二状态机,所述方法包括:
根据目标数据的边界关键信息对所述第一状态机进行配置,得到边界状态机;
根据所述目标数据的头部关键信息对所述第二状态机进行配置,得到头部状态机;
基于所述边界状态机对所述目标数据进行解析,确定所述目标数据的目标实体;
基于所述头部状态机对所述目标实体进行解析,得到解析数据。
在上述实现方式中,分别根据目标数据的边界关键信息和头部关键信息对服务器中设置的第一状态机和第二状态机进行配置,能够对第一状态机和第二状态机分别进行初始化地预处理,配置得到对应的边界状态机和头部状态机。通过边界状态机对目标数据进行解析,能够确定目标数据中的目标实体,通过头部状态机对目标实体进行解析,能够解析模板实体中的实体部分,得到完成的解析数据。能够通过两个状态机对目标数据中的实体位置和实体部分分别进行处理,可以快速地提取目标数据中的有效字段,以在数据解析时跳过无效数据,减小解析时的内存压力,便于用户进行调试和跳跃解析,降低了目标数据的解析维度,提高了目标数据的解析效率和灵活性。
可选地,所述基于所述边界状态机对所述目标数据进行解析,确定所述目标数据的目标实体,包括:
使用所述边界状态机对所述目标数据进行检测,得到边界标志;
根据所述边界标志,对所述目标数据进行解析,得到实体开始位置和实体结束位置;
基于所述实体开始位置和所述实体结束位置,确定所述目标实体。
在上述实现方式中,在通过边界状态机对目标数据进行解析时,通过边界状态机对目标数据的实体边界进行查找,检测到对应的边界标志,在边界标志的基础上对目标数据进行解析,确定实体开始位置和实体结束位置,以实体开始位置和实体结束位置为范围,构成目标实体。通过边界状态机对边界进行搜索,能够在目标数据的数据流中快速地定位实体的开始位置和结束位置,从而确定对应的目标实体,通过单独的边界解析,提高了目标实体的获取效率、准确性和有效性。
可选地,所述根据所述边界标志,对所述目标数据进行解析,得到实体开始位置和实体结束位置,包括:
根据所述边界标志,创建所述目标数据对应的目标实体对象;
在所述目标实体对象入栈时,确定所述实体开始位置;
在所述目标实体对象出栈时,确定所述实体结束位置。
在上述实现方式中,根据边界状态机中搜索得到的边界标志,可以在边界状态机中创建对应的目标实体对象,对目标实体对象进行入栈,使用堆栈结构对一个或多个目标实体对象之间的处理逻辑和嵌套关系进行记录。在目标实体对象入栈时,对入栈位置进行记录,以确定实体开始位置;在目标实体对象出栈时,对出栈位置进行记录,以确定实体结束位置,有效地提高了实体开始位置和实体结束位置的位置精度。
可选地,所述基于所述头部状态机对所述目标实体进行解析,得到解析数据,包括:
确定所述目标实体的头部字段和体部字段;
使用所述头部状态机对所述头部字段进行解析,得到头部数据,所述头部数据包括所述目标实体的数据类型、编码格式、传输类型中的至少一种;
根据所述头部数据对所述体部字段进行解析,得到所述解析数据。
在上述实现方式中,在对边界状态机解析确定的目标实体进行解析时,采用头部状态机对目标实体的实体部分进行解析。头部状态机在目标实体的实体开始位置和实体结束位置的基础上确定出目标实体的实体部分,并将实体部分划分为头部字段和体部字段。通过对头部字段的解析,能够获取包括目标实体的数据类型、编码格式、传输类型中的至少一种数据的头部数据,并根据头部数据对目标实体的体部字段进行解析,得到最终的解析数据。能够通过头部状态机在目标实体的头部的解析基础上对体部进行解析,从而对整个目标实体进行解析,提高了目标实体的解析效率。
可选地,所述基于所述头部状态机对所述头部字段进行解析,得到头部数据之后,所述方法还包括:
在所述头部状态机解析到所述头部字段中具有子实体边界标志时,基于所述边界状态机对所述子实体边界标志进行解析,确定所述目标实体中的子实体;
基于所述头部状态机对所述子实体进行解析,得到子解析数据。
在上述实现方式中,由于目标实体中可能存在子实体的嵌套关系,可以通过头部状态机对头部字段的解析,对目标实体中可能存在的多个实体的处理逻辑和嵌套关系进行对应地解析。在对头部字段进行解析时,若解析到头部字段中具有子实体边界标志,则可以在头部字段解析完成后,跳转到边界状态机,使用边界状态机对子实体边界标志进行解析,确定目标实体中包含的子实体,再使用头部状态机对确定的子实体进行解析,得到子解析数据,从而对多个嵌套的实体进行对应地处理,便于用户进行调试和跳跃解析,提高了解析的灵活性和效率。
可选地,所述根据目标数据的边界关键信息对所述第一状态机进行配置,得到边界状态机,包括:
获取所述目标数据外层的所述边界关键信息;
在所述第一状态机中添加所述边界关键信息;
根据所述边界关键信息,在所述第一状态机中设置边界处理函数,得到所述边界状态机。
在上述实现方式中,在对服务器中的第一状态机进行预处理时,能够获取解析得到的目标数据外层的边界关键信息,将边界关键信息添加到第一状态机中进行配置,设置对应的边界处理函数以对边界关键信息进行处理,从而使边界状态机能够对目标数据的边界信息进行快速地搜索和检测等处理,提高了边界状态机针对目标数据边界的处理效率。
可选地,所述根据所述目标数据的头部关键信息对所述第二状态机进行配置,得到头部状态机,包括:
获取所述目标数据中的所述头部关键信息;
在所述第二状态机中添加所述头部关键信息;
根据所述头部关键信息,在所述第二状态机中设置头部处理函数,得到所述头部状态机。
在上述实现方式中,在对服务器中的第二状态机进行预处理时,能够加载目标数据中需要进行匹配的头部关键信息,将头部关键信息添加到第一状态机中进行配置,设置对应的头部处理函数,以对头部关键信息进行对应地解析,从而使头部状态机能够对目标数据的实体部分进行快速地解析,提高了头部状态机针对目标数据的实体部分的处理效率。
可选地,所述方法还包括:
获取所述目标数据对应的调整需求;
根据所述调整需求对所述边界关键信息中的多个边界关键词进行增加或删除,以对所述边界关键信息进行调整。
在上述实现方式中,在目标数据的解析过程中,根据实际情况和用户需求可能存在对应的调整需求,根据获取的调整需求能够对边界关键信息中的多个边界关键词进行动态地增加和删除,从而对边界关键信息进行调整,能够在解析过程中根据动态调整的边界关键信息进行实时地边界解析,满足用户的多种需求,适用于多种应用场景。
第二方面,本申请还提供了一种数据解析装置,所述装置包括:
边界配置模块,用于根据目标数据的边界关键信息对第一状态机进行配置,得到边界状态机;
头部配置模块,用于根据所述目标数据的头部关键信息对第二状态机进行配置,得到头部状态机;
边界解析模块,用于基于所述边界状态机对所述目标数据进行解析,确定所述目标数据的目标实体;
头部解析模块,用于基于所述头部状态机对所述目标实体进行解析,得到解析数据。
在上述实现方式中,通过边界配置模块根据目标数据的边界关键信息对第一状态机进行配置,得到对应的边界状态机;通过头部配置模块根据目标数据的头部关键信息对第二状态机进行配置,得到对应的头部状态机;通过边界解析模块对目标数据进行解析,能够确定目标数据中的目标实体,通过头部解析模块对目标实体进行解析,能够解析模板实体中的实体部分,得到完成的解析数据。能够对目标数据中的实体位置和实体部分分别进行处理,可以快速地提取目标数据中的有效字段,以在数据解析时跳过无效数据,减小解析时的内存压力,便于用户进行调试和跳跃解析,降低了目标数据的解析维度,提高了目标数据的解析效率和灵活性。
第三方面,本申请还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行上述数据解析方法中任一实现方式中的步骤。
第四方面,本申请还提供了一种计算机可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述数据解析方法中任一实现方式中的步骤。
综上所述,本申请提供了一种数据解析方法、装置、电子设备及存储介质,通过两个状态机分别对目标数据的边界和实体部分进行解析,能够快速地提取目标数据中的有效字段,还能够对目标数据中的实体逻辑和嵌套关系进行处理,以在数据解析时跳过无效数据,减小解析时的内存压力,便于用户进行调试和跳跃解析,降低了目标数据的解析维度,提高了目标数据的解析效率和灵活性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种数据解析方法的流程示意图;
图2为本申请实施例提供的一种步骤S3的详细流程示意图;
图3为本申请实施例提供的一种步骤S32的详细流程示意图;
图4为本申请实施例提供的一种步骤S4的详细流程示意图;
图5为本申请实施例提供的另一种数据解析方法的流程示意图;
图6为本申请实施例提供的一种步骤S1的详细流程示意图;
图7为本申请实施例提供的一种步骤S2的详细流程示意图;
图8为本申请实施例提供的一种数据解析装置的模块结构示意图。
图标:500-数据解析装置;510-边界配置模块;520-头部配置模块;530-边界解析模块;540-头部解析模块。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请实施例的一部分实施例,而不是全部的实施例。基于本申请实施例的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。
现有技术中的审计设备在对MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型)格式数据进行解析时,采用逐行读取的方式进行解析,首先逐行读取MIME数据,通过字符串匹配判断当前行数据类型。如果当前行为边界标志,则当前行是MIME实体的开始或者结束,根据解析逻辑开始或者结束一个MIME实体的解析。如果当前行是实体头部,则需要与关系提取的字段列表轮询匹配,如果是关系字段,则将该行按需求解析提取;如果不是继续读取下一行数据;如果该行数据是实体体部,则需要按照头部解析得到的内容格式对实体数据内容进行解析或者文件还原。
然而现有的解析方式需要对数据进行逐行读取处理,处理效率低,不能有效跳过无效数据,不能做到灵活的分级或者跳跃实体解析。且逐行读取操作在对实体体部输出处理时,尤其是二进制数据实体,换行符的位置不可预知,对根据换行符来截取数据作为一次处理单元数据大小不可控,容易产生解析异常风险和内存占用高的问题,导致MIME数据的解析效率较低,影响审计检测工作的效率。
因此,为了解决上述问题,本申请实施例提供了一种数据解析方法,应用于服务器,服务器可以为个人电脑(Personal Computer,PC)、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)等具有逻辑计算功能的电子设备,服务器中可以设置有第一状态机和第二状态机,以分别对数据的边界和实体部分进行解析,提高数据的解析效率。
可选地,电子设备中可以包括存储器、存储控制器、处理器、外设接口、输入输出单元等。电子设备的组件和结构可以根据实际情况进行设置。
上述的存储器、存储控制器、处理器、外设接口、输入输出单元各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。上述的处理器用于执行存储器中存储的可执行模块。
其中,存储器可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,简称EEPROM)等。其中,存储器用于存储程序,处理器在接收到执行指令后,执行所述程序,本申请实施例任一实施例揭示的过程定义的电子设备所执行的方法可以应用于处理器中,或者由处理器实现。
上述的处理器可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(digital signal processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述的外设接口将各种输入/输出装置耦合至处理器以及存储器。在一些实施例中,外设接口,处理器以及存储控制器可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
本实施例中的电子设备可以用于执行本申请实施例提供的各个数据解析方法中的各个步骤。下面通过几个实施例详细描述数据解析方法的实现过程。
请参阅图1,图1为本申请实施例提供的一种数据解析方法的流程示意图,该方法可以包括以下步骤:
步骤S1,根据目标数据的边界关键信息对所述第一状态机进行配置,得到边界状态机。
其中,为了实现对目标数据的灵活地跳跃解析,可以根据目标数据的边界关键信息对服务器中的第一状态机进行配置,以对第一状态机进行初始化地预处理,配置得到对应的边界状态机。目标数据可以为需要进行解析的MIME格式数据,目标数据能够进行定义和标准化,设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。能够指定一些客户端自定义的文件名,以及一些媒体文件打开方式。边界关键信息可以为包括解析HTTP(Hyper TextTransfer Protocol,超文本传输协议)协议或邮件协议时获取的目标数据的数据流中的多种外层边界关键词,例如“--boundary”和“--boundary--”(此处的boundary为boundary值,因boundary值为随机值,此处用boundary代替),其中,“--boundary”可以标识一个新实体的开始,“--boundary--”可以标识实体的结束。
值得说明的是,第一状态机和第二状态机可以为基于ACSM(Finite StateMachine,状态机),即基于AC(Aho-Corasick)多模匹配算法的状态机。多模匹配算法可以保证对给定长度为n的文本,和模式集合P{p1,p2…pm},在O(n)时间复杂度内,找到文本中的所有目标模式,而与模式集合的规模m无关。
现有的多模匹配算法不支持匹配模式串的动态调整,在本申请实施例中,还可以对多模匹配算法进行修改,对匹配模式串接口和重新编译状态机的接口进行增添或删除,以对第一状态机进行动态地配置。可选地,在对第一状态机进行配置时,可以获取目标数据对应的调整需求;根据调整需求对边界关键信息中的多个边界关键词进行增加或删除,以对边界关键信息进行调整。在修改的多模匹配算法的基础上,考虑到实际情况和用户需求可能存在对应的调整需求,根据获取的调整需求能够对边界关键信息中的多个边界关键词进行动态地增加和删除,从而对边界关键信息进行调整,能够在解析过程中根据动态调整的边界关键信息进行实时地边界解析,满足用户的多种需求,适用于多种应用场景。
步骤S2,根据所述目标数据的头部关键信息对所述第二状态机进行配置,得到头部状态机。
其中,为了对目标数据的边界和实体内容分别进行解析,可以在解析前根据目标数据的头部关键信息对第二状态机进行配置,以对第二状态机进行初始化地预处理,配置得到头部状态机。
可选地,头部关键信息中可以包括目标数据中的多个需要匹配的关键字或关系字段,例如Content-Type(用于表示请求和响应中的媒体类型信,告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据,比如显示图片,解析并展示html等)、Content-Disposition(内容部署协议类型扩展,当用户想把请求所得的内容存为一个文件的时候提供一个默认的文件名)等。
值得说明的是,对第一状态机和第二状态机的配置顺序可以进行调换,不对步骤S1和步骤S2的先后顺序进行限定,还可以同时进行步骤S1和步骤S2。
步骤S3,基于所述边界状态机对所述目标数据进行解析,确定所述目标数据的目标实体。
其中,基于配置得到的边界状态机对目标数据的边界进行解析,确定目标数据中的目标实体,可以快速地对目标实体在数据流中的位置进行定位,从而提高边界解析的解析效率。
可选地,目标实体可以为目标数据中一类数据对象的个体或集合。
步骤S4,基于所述头部状态机对所述目标实体进行解析,得到解析数据。
其中,在确定目标数据中的目标实体后,可以基于配置得到的头部状态机对目标实体中的实体部分进行解析,以获取最终的解析数据。
在图1所示的实施例中,能够通过两个状态机对目标数据中的实体位置和实体部分分别进行处理,可以快速地提取目标数据中的有效字段,以在数据解析时跳过无效数据,减小解析时的内存压力,便于用户进行调试和跳跃解析,降低了目标数据的解析维度,提高了目标数据的解析效率和灵活性。
可选地,请参阅图2,图2为本申请实施例提供的一种步骤S3的详细流程示意图,步骤S3还可以包括步骤S31-S33。
步骤S31,使用所述边界状态机对所述目标数据进行检测,得到边界标志。
其中,在对目标数据的边界进行解析时,可以使用边界状态机找到目标数据中实体的边界位置,从而确定对应的目标实体。根据初始化配置得到的边界状态机对目标数据中的边界信息进行检测,得到能够表示边界位置的边界标志。
步骤S32,根据所述边界标志,对所述目标数据进行解析,得到实体开始位置和实体结束位置。
其中,根据检测到的边界标志,可以对目标数据的数据流进行解析,在目标数据中找到对应的实体开始位置和实体结束位置。
步骤S33,基于所述实体开始位置和所述实体结束位置,确定所述目标实体。
其中,以实体开始位置为目标实体的开始位置,以实体结束位置为目标实体的结束位置,通过实体开始位置和实体结束位置形成目标实体的数据范围,能够快速地组成目标实体。
在图2所示的实施例中,能够在目标数据的数据流中快速地定位实体的开始位置和结束位置,从而确定对应的目标实体,通过单独的边界解析,提高了目标实体的获取效率、准确性和有效性。
可选地,请参阅图3,图3为本申请实施例提供的一种步骤S32的详细流程示意图,步骤S32还可以包括步骤S321-S323。
步骤S321,根据所述边界标志,创建所述目标数据对应的目标实体对象。
其中,可以根据边界标志,创建目标数据对应的能够代表实体结构类型的目标实体对象,用来标识一个或多个MIME数据的实体对象,在命中对应的边界标志时,则根据变价标识为关键字创建对应的目标实体对象,并将目标实体对象压入堆栈中,使用堆栈结构对一个或多个目标实体对象之间的处理逻辑和嵌套关系进行记录,有效地降低了目标数据的解析维度。
步骤S322,在所述目标实体对象入栈时,确定所述实体开始位置。
其中,在目标实体对象入栈时,对入栈位置进行记录,以确定目标实体对象对应的实体开始位置。
步骤S323,在所述目标实体对象出栈时,确定所述实体结束位置。
其中,在目标实体对象出栈时,对出栈位置进行记录,以确定目标实体对象对应的实体结束位置。
可选地,目标数据中可以包括多个目标实体以及目标实体中的子实体,在进行边界解析时,若入栈时正在解析某一个实体,则标识当前实体解析结束,对当前解析结束的实体进行出栈,新的实体解析开始,对新的实体进行入栈。
在图3所示的实施例中,有效地提高了实体开始位置和实体结束位置的位置精度,从而提高了目标实体的获取效率和准确性。
可选地,请参阅图4,图4为本申请实施例提供的一种步骤S4的详细流程示意图,步骤S4还可以包括步骤S41-S43。
步骤S41,确定所述目标实体的头部字段和体部字段。
其中,在通过边界状态机解析得到目标数据的目标实体时,头部状态机可以在目标实体的实体开始位置和实体结束位置的基础上确定出目标实体的实体部分,并将实体部分划分为头部字段和体部字段,以对头部字段和体部字段进行分别解析,提高解析的针对性和有效性。
步骤S42,使用所述头部状态机对所述头部字段进行解析,得到头部数据。
其中,使用头部状态机对头部字段中的关键字进行匹配和提取,从而解析得到对应的头部数据,头部数据可以包括目标实体的数据类型、编码格式、传输类型等多种数据中的至少一种。
步骤S43,根据所述头部数据对所述体部字段进行解析,得到所述解析数据。
其中,根据头部字段解析得到的头部数据对目标实体的体部字段进行解析,得到最终的解析数据。
在图4所述的实施例中,能够通过头部状态机在目标实体的头部的解析基础上对体部进行解析,从而对整个目标实体进行解析,提高了目标实体的解析效率。
可选地,请参阅图5,图5为本申请实施例提供的另一种数据解析方法的流程示意图,在步骤S42之后,该方法还可以包括步骤S44-S45。
步骤S44,在所述头部状态机解析到所述头部字段中具有子实体边界标志时,基于所述边界状态机对所述子实体边界标志进行解析,确定所述目标实体中的子实体。
其中,由于目标数据中可以包括一个或多个目标实体,目标实体中可能存在子实体的嵌套关系,可能存在一个或多个子实体,在头部状态机对目标数据的头部字段进行解析时,还可以对目标实体中的子实体进行识别和解析,以对目标实体中可能存在的多个实体的处理逻辑和嵌套关系进行对应地解析。在头部状态机解析到目标实体的头部字段中由子边界标志时,例如“--boundary”和“--boundary--”等,可以在头部字段解析完成后,跳转到边界状态机,将解析得到的子边界标志动态地加载到边界状态机中,使用边界状态机对子实体边界标志进行解析,对子实体的开始位置和结束位置进行查找,确定目标实体中包含的子实体。
可选地,确定子实体的解析方式与确定目标实体的解析方式相同,不再进行赘述。
示例地,在头部状态机检测到目标实体的头部字段中含有“Content-Type:multipart/form-data;boundary=--xxxx”信息时,则对boundary字段进行提取,得到对应的子边界标志,表面该目标实体中存在子实体,为嵌套实体结构。
步骤S45,基于所述头部状态机对所述子实体进行解析,得到子解析数据。
其中,使用头部状态机对确定的子实体进行解析,能够得到对应的子解析数据,实现嵌套实体结构的递归解析。子实体的头部字段和体部字段的解析方式与目标实体的解析方式相同,不再进行赘述。
在图5所示的实施例中,能够对多个嵌套的实体进行对应地处理,便于用户进行调试和跳跃解析,提高了解析的灵活性和效率。
可选地,请参阅图6,图6为本申请实施例提供的一种步骤S1的详细流程示意图,步骤S1还可以包括步骤S11-S13。
步骤S11,获取所述目标数据外层的所述边界关键信息。
其中,为了对目标数据的边界进行单独解析,通过对服务器中的第一状态机进行预处理,能够在解析前获取目标数据外层的边界关键信息,从而对目标数据中实体的开始和实体的结束进行快速地定位和标识。
步骤S12,在所述第一状态机中添加所述边界关键信息。
其中,将获取的边界关键信息添加到初始的第一状态机中进行配置,以针对目标数据的边界进行对应地初始化处理。
步骤S13,根据所述边界关键信息,在所述第一状态机中设置边界处理函数,得到所述边界状态机。
其中,根据添加的边界关键信息,在第一状态机中设置针对边界关键信息的边界处理函数,以在解析过程中,命中边界关键信息中的任意一个关键词时由对应的边界处理函数匹配出对应的实体对象。
示例地,在命中关键词为开始的boundary关键词时,则创建一个对应的实体对象,还可以将实体对象压入堆栈。如匹配到的关键字为结束boundary关键词时,则弹出堆栈中的实体对象。
在图6所示的实施例中,通过对第一状态机进行配置,能够使边界状态机能够对目标数据的边界信息进行快速地搜索和检测等处理,提高了边界状态机针对目标数据边界的处理效率。
可选地,请参阅图7,图7为本申请实施例提供的一种步骤S2的详细流程示意图,步骤S2还可以包括步骤S21-S23。
步骤S21,获取所述目标数据中的所述头部关键信息。
其中,为了对目标数据的实体部分进行单独解析,通过对服务器中的第二状态机进行预处理,能够在解析前获取目标数据中需要进行匹配的头部关键信息,从而对目标数据中的实体部分进行对应地解析。
步骤S22,在所述第二状态机中添加所述头部关键信息。
其中,将获取的头部关键信息添加到初始的第二状态机中进行配置,以针对目标数据的实体部分进行对应地初始化处理。
步骤S23,根据所述头部关键信息,在所述第二状态机中设置头部处理函数,得到所述头部状态机。
其中,根据添加的头部关键信息,在第二状态机中设置针对头部关键信息的头部处理函数,以在解析过程中,命中头部关键信息中的任意一个关键词或关系字段时由对应的头部处理函数对实体部分进行处理。
示例地,在命中关系字段Content-Disposition字段时,可以调用对应的字段处理函数,对实体部分进行解析,例如提取文件名称等细度解析方式。
在图7所示的实施例中,通过对第二状态机进行配置,能够使头部状态机能够对目标数据的实体部分进行快速地解析,提高了头部状态机针对目标数据的实体部分的处理效率。
请参阅图8,图8为本申请实施例提供的一种数据解析装置的模块结构示意图,数据解析装置500可以包括:
边界配置模块510,用于根据目标数据的边界关键信息对第一状态机进行配置,得到边界状态机;
头部配置模块520,用于根据所述目标数据的头部关键信息对第二状态机进行配置,得到头部状态机;
边界解析模块530,用于基于所述边界状态机对所述目标数据进行解析,确定所述目标数据的目标实体;
头部解析模块540,用于基于所述头部状态机对所述目标实体进行解析,得到解析数据。
在一可选的实施方式中,边界解析模块530还可以包括检测子模块、位置子模块和确定子模块;
检测子模块,用于使用所述边界状态机对所述目标数据进行检测,得到边界标志;
位置子模块,用于根据所述边界标志,对所述目标数据进行解析,得到实体开始位置和实体结束位置;
确定子模块,用于基于所述实体开始位置和所述实体结束位置,确定所述目标实体。
在一可选的实施方式中,位置子模块还可以包括创建单元、入栈单元和出栈单元;
创建单元,用于根据所述边界标志,创建所述目标数据对应的目标实体对象;
入栈单元,用于在所述目标实体对象入栈时,确定所述实体开始位置;
出栈单元,用于在所述目标实体对象出栈时,确定所述实体结束位置。
在一可选的实施方式中,头部解析模块540还可以包括字段子模块、头部子模块和体部子模块;
字段子模块,用于确定所述目标实体的头部字段和体部字段;
头部子模块,用于使用所述头部状态机对所述头部字段进行解析,得到头部数据,所述头部数据包括所述目标实体的数据类型、编码格式、传输类型中的至少一种;
体部子模块,用于根据所述头部数据对所述体部字段进行解析,得到所述解析数据。
在一可选的实施方式中,数据解析装置500还可以包括嵌套模块,用于在所述头部状态机解析到所述头部字段中具有子实体边界标志时,基于所述边界状态机对所述子实体边界标志进行解析,确定所述目标实体中的子实体;基于所述头部状态机对所述子实体进行解析,得到子解析数据。
在一可选的实施方式中,边界配置模块510还可以包括第一获取模块、第一添加模块和第一设置模块;
第一获取模块,用于获取所述目标数据外层的所述边界关键信息;
第一添加模块,用于在所述第一状态机中添加所述边界关键信息;
第一设置模块,用于根据所述边界关键信息,在所述第一状态机中设置边界处理函数,得到所述边界状态机。
在一可选的实施方式中,头部配置模块520还可以包括第二获取模块、第二添加模块和第二设置模块;
第二获取模块,用于获取所述目标数据中的所述头部关键信息;
第二添加模块,用于在所述第二状态机中添加所述头部关键信息;
第二设置模块,用于根据所述头部关键信息,在所述第二状态机中设置头部处理函数,得到所述头部状态机。
在一可选的实施方式中,数据解析装置500还可以包括调整模块,用于获取所述目标数据对应的调整需求;根据所述调整需求对所述边界关键信息中的多个边界关键词进行增加或删除,以对所述边界关键信息进行调整。
由于本申请实施例中的装置解决问题的原理与前述的数据解析方法的实施例相似,因此本实施例中的数据解析装置500的实施可以参见上述数据解析方法的实施例中的描述,重复之处不再赘述。
本申请实施例还提供了一种电子设备,该电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行本实施例提供的数据解析方法中任一项所述方法中的步骤。
应当理解是,该电子设备可以是个人电脑、平板电脑、智能手机、个人数字助理等具有逻辑计算功能的电子设备。
本申请实施例还提供了一种计算机可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行本实施例提供的数据解析方法中任一项所述方法中的步骤。
综上所述,本申请实施例提供了一种数据解析方法、装置、电子设备及存储介质,通过两个状态机分别对目标数据的边界和实体部分进行解析,能够快速地提取目标数据中的有效字段,还能够对目标数据中的实体逻辑和嵌套关系进行处理,以在数据解析时跳过无效数据,减小解析时的内存压力,便于用户进行调试和跳跃解析,降低了目标数据的解析维度,提高了目标数据的解析效率和灵活性。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的框图显示了根据本申请的多个实施例的设备的可能实现的体系架构、功能和操作。在这点上,框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图中的每个方框、以及框图的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。因此本实施例还提供了一种可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行区块数据存储方法中任一项所述方法中的步骤。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RanDom Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (11)

1.一种数据解析方法,其特征在于,应用于服务器,所述服务器中设置有第一状态机和第二状态机,所述方法包括:
根据目标数据的边界关键信息对所述第一状态机进行配置,得到边界状态机;
根据所述目标数据的头部关键信息对所述第二状态机进行配置,得到头部状态机;
基于所述边界状态机对所述目标数据进行解析,确定所述目标数据的目标实体;
基于所述头部状态机对所述目标实体进行解析,得到解析数据。
2.根据权利要求1所述的方法,其特征在于,所述基于所述边界状态机对所述目标数据进行解析,确定所述目标数据的目标实体,包括:
使用所述边界状态机对所述目标数据进行检测,得到边界标志;
根据所述边界标志,对所述目标数据进行解析,得到实体开始位置和实体结束位置;
基于所述实体开始位置和所述实体结束位置,确定所述目标实体。
3.根据权利要求2所述的方法,其特征在于,所述根据所述边界标志,对所述目标数据进行解析,得到实体开始位置和实体结束位置,包括:
根据所述边界标志,创建所述目标数据对应的目标实体对象;
在所述目标实体对象入栈时,确定所述实体开始位置;
在所述目标实体对象出栈时,确定所述实体结束位置。
4.根据权利要求1所述的方法,其特征在于,所述基于所述头部状态机对所述目标实体进行解析,得到解析数据,包括:
确定所述目标实体的头部字段和体部字段;
使用所述头部状态机对所述头部字段进行解析,得到头部数据,所述头部数据包括所述目标实体的数据类型、编码格式、传输类型中的至少一种;
根据所述头部数据对所述体部字段进行解析,得到所述解析数据。
5.根据权利要求4所述的方法,其特征在于,所述基于所述头部状态机对所述头部字段进行解析,得到头部数据之后,所述方法还包括:
在所述头部状态机解析到所述头部字段中具有子实体边界标志时,基于所述边界状态机对所述子实体边界标志进行解析,确定所述目标实体中的子实体;
基于所述头部状态机对所述子实体进行解析,得到子解析数据。
6.根据权利要求1所述的方法,其特征在于,所述根据目标数据的边界关键信息对所述第一状态机进行配置,得到边界状态机,包括:
获取所述目标数据外层的所述边界关键信息;
在所述第一状态机中添加所述边界关键信息;
根据所述边界关键信息,在所述第一状态机中设置边界处理函数,得到所述边界状态机。
7.根据权利要求1所述的方法,其特征在于,所述根据所述目标数据的头部关键信息对所述第二状态机进行配置,得到头部状态机,包括:
获取所述目标数据中的所述头部关键信息;
在所述第二状态机中添加所述头部关键信息;
根据所述头部关键信息,在所述第二状态机中设置头部处理函数,得到所述头部状态机。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述目标数据对应的调整需求;
根据所述调整需求对所述边界关键信息中的多个边界关键词进行增加或删除,以对所述边界关键信息进行调整。
9.一种数据解析装置,其特征在于,所述装置包括:
边界配置模块,用于根据目标数据的边界关键信息对第一状态机进行配置,得到边界状态机;
头部配置模块,用于根据所述目标数据的头部关键信息对第二状态机进行配置,得到头部状态机;
边界解析模块,用于基于所述边界状态机对所述目标数据进行解析,确定所述目标数据的目标实体;
头部解析模块,用于基于所述头部状态机对所述目标实体进行解析,得到解析数据。
10.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行权利要求1-8中任一项所述方法中的步骤。
11.一种计算机可读取存储介质,其特征在于,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行权利要求1-8任一项所述方法中的步骤。
CN202111480627.8A 2021-12-06 2021-12-06 数据解析方法、装置、电子设备及存储介质 Pending CN114157734A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111480627.8A CN114157734A (zh) 2021-12-06 2021-12-06 数据解析方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111480627.8A CN114157734A (zh) 2021-12-06 2021-12-06 数据解析方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114157734A true CN114157734A (zh) 2022-03-08

Family

ID=80453303

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111480627.8A Pending CN114157734A (zh) 2021-12-06 2021-12-06 数据解析方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114157734A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115855028A (zh) * 2023-02-22 2023-03-28 广州导远电子科技有限公司 导航数据解析方法、装置、电子设备和存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030140010A1 (en) * 2001-10-31 2003-07-24 Patterson Andrew J. Method and apparatus for routing signed messages
US20060215701A1 (en) * 2005-03-25 2006-09-28 Microsoft Corporation Methods and systems for transferring binary data
US20100228827A1 (en) * 2009-03-03 2010-09-09 Microsoft Corporation Storage model for maintaining structured document fidelity
US20100256974A1 (en) * 2009-04-03 2010-10-07 Yahoo! Inc. Automated screen scraping via grammar induction
US20120124064A1 (en) * 2010-11-03 2012-05-17 Microsoft Corporation Transformation of regular expressions
CN104081730A (zh) * 2012-01-31 2014-10-01 Db网络公司 用于从通信链路提取结构化应用程序数据的系统和方法
CN108768835A (zh) * 2018-05-30 2018-11-06 彩讯科技股份有限公司 一种邮件解析方法、装置、服务器和存储介质
CN109887059A (zh) * 2019-02-26 2019-06-14 武汉斗鱼鱼乐网络科技有限公司 一种svga动画解析方法、装置及存储介质
CN111177595A (zh) * 2019-12-20 2020-05-19 杭州九略智能科技有限公司 一种针对http协议模板化提取资产信息的方法
CN111967244A (zh) * 2020-07-30 2020-11-20 浪潮(北京)电子信息产业有限公司 一种基于fpga的fast协议解码方法、装置及设备
US20200394398A1 (en) * 2019-06-14 2020-12-17 Dell Products L. P. Converting unlabeled data into labeled data

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030140010A1 (en) * 2001-10-31 2003-07-24 Patterson Andrew J. Method and apparatus for routing signed messages
US20060215701A1 (en) * 2005-03-25 2006-09-28 Microsoft Corporation Methods and systems for transferring binary data
US20100228827A1 (en) * 2009-03-03 2010-09-09 Microsoft Corporation Storage model for maintaining structured document fidelity
US20100256974A1 (en) * 2009-04-03 2010-10-07 Yahoo! Inc. Automated screen scraping via grammar induction
US20120124064A1 (en) * 2010-11-03 2012-05-17 Microsoft Corporation Transformation of regular expressions
CN104081730A (zh) * 2012-01-31 2014-10-01 Db网络公司 用于从通信链路提取结构化应用程序数据的系统和方法
CN108768835A (zh) * 2018-05-30 2018-11-06 彩讯科技股份有限公司 一种邮件解析方法、装置、服务器和存储介质
CN109887059A (zh) * 2019-02-26 2019-06-14 武汉斗鱼鱼乐网络科技有限公司 一种svga动画解析方法、装置及存储介质
US20200394398A1 (en) * 2019-06-14 2020-12-17 Dell Products L. P. Converting unlabeled data into labeled data
CN111177595A (zh) * 2019-12-20 2020-05-19 杭州九略智能科技有限公司 一种针对http协议模板化提取资产信息的方法
CN111967244A (zh) * 2020-07-30 2020-11-20 浪潮(北京)电子信息产业有限公司 一种基于fpga的fast协议解码方法、装置及设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱玲;张启宇;: "电子邮件解析算法的研究与实现", 华南金融电脑, no. 02 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115855028A (zh) * 2023-02-22 2023-03-28 广州导远电子科技有限公司 导航数据解析方法、装置、电子设备和存储介质
CN115855028B (zh) * 2023-02-22 2023-11-03 广州导远电子科技有限公司 导航数据解析方法、装置、电子设备和存储介质

Similar Documents

Publication Publication Date Title
JP6594543B2 (ja) 注文クラスタリング方法及び装置並びに悪意の情報に対抗する方法及び装置
WO2019237540A1 (zh) 财政数据的获取方法、装置、终端设备及介质
US9025890B2 (en) Information classification device, information classification method, and information classification program
Gottron Evaluating content extraction on HTML documents
US20200250015A1 (en) Api mashup exploration and recommendation
CN111881094B (zh) 日志中关键信息提取方法、装置、终端及存储介质
US20230161947A1 (en) Mathematical models of graphical user interfaces
CN114528457A (zh) Web指纹检测方法及相关设备
CN101895517B (zh) 一种脚本语义提取方法和提取装置
CN110795069A (zh) 代码分析方法、智能终端及计算机可读存储介质
JP5731361B2 (ja) 文字列変換方法及び文字列変換プログラム
CN116644213A (zh) Xml文件读取方法、装置、设备及存储介质
CN114157734A (zh) 数据解析方法、装置、电子设备及存储介质
CN113419721B (zh) 基于web的表达式编辑方法、装置、设备和存储介质
CN111209325A (zh) 业务系统接口识别方法、装置及存储介质
JP2013242782A (ja) 文字列変換方法及びプログラム
CN112463533A (zh) 日志数据解析方法、装置、电子装置和存储介质
CN110598115A (zh) 一种基于人工智能多引擎的敏感网页识别方法及系统
CN116257850A (zh) 一种病毒文件识别方法、装置、存储介质及电子设备
CN115796146A (zh) 一种文件对比方法及装置
CN110502483B (zh) 数据处理方法、装置、计算机设备和存储介质
CN113688240A (zh) 威胁要素提取方法、装置、设备及存储介质
CN113094283A (zh) 一种数据获取方法、装置、设备及存储介质
CN113703759B (zh) 一种代码生成方法、装置、介质及设备
CN115203060B (zh) 一种基于iast的安全测试方法及装置

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