api检测方法、装置、电子设备及可读介质
技术领域:
:1.本发明实施例涉及开发
技术领域:
:,特别是涉及一种api检测方法、一种api检测装置、一种电子设备以及一种计算机可读介质。
背景技术:
::2.私有api(applicationprogramminginterface,应用程序接口)是指的ios系统(苹果官方的操作系统)中未公开的api。3.在具体实现中,当ios系统的应用程序(app)开发完成后,需要将应用程序提交到苹果官方去审核,如果苹果官方发现了提交的应用程序使用了私有api,苹果官方为了保证数据安全,会拒绝使用私有api的应用程序上线,如果仍然希望苹果官方能够允许该应用程序上线,那么开发人员就需要对应用程序重新开发,可以理解,应用程序的开发效率将大大降低,同时提升了应用程序的开发成本。4.为了解决上述问题,在相关技术中会提前对应用程序的api进行检测,然而,目前针对应用程序的api检测都是黑盒操作,导出指定字符串后通过人工的方式进行匹配、筛选,并且对于swift开发语言编写的api几乎无法检测,可见,对应用程序的api检测准确度不高。技术实现要素:5.本发明实施例是提供一种api检测方法、装置、电子设备以及计算机可读存储介质,以解决应用程序的api检测准确度不高的问题。6.本发明实施例公开了一种api检测方法,包括:7.获取待检测的应用程序的可执行文件;8.从所述可执行文件中提取出第一api集合;所述第一api集合中包括oc开发语言编写的api,和/或oc开发语言和swift开发语言混编写的api;9.确定所述第一api集合与预设私有api库之间是否存在交集,若是则提示所述交集中的api为私有api。10.在一示例性实施例中,在所述从所述可执行文件中提取出第一api集合之后,所述方法还包括:11.从所述第一api集合中提取出用户隐私权限对应的api组合为第二api集合;12.获取所述应用程序的info.plist文件;13.当检测到所述第二api集合中的api不在所述info.plist文件中时,提示不在所述info.plist文件中的api未声明。14.在一示例性实施例中,在所述从所述可执行文件中提取出第一api集合之后,所述方法还包括:15.确定所述第一api集合中的api与预设敏感字段库之间是否存在交集,若是则提示所述交集中的api存在敏感字段。16.在一示例性实施例中,所述私有api库通过如下方式生成:17.从所述应用程序的框架文件中提取出全部api,所述全部api包括头文件和所述头文件的实现文件中的api;18.获取所述全部api中除所述头文件中的ap以外的apii,并保存为私有api库。19.在一示例性实施例中,所述从所述可执行文件中提取出第一api集合,包括:20.当所述应用程序为oc开发语言编写时,从所述应用程序的所述可执行文件的__text段中提取出api并保存到第一api集合中。21.在一示例性实施例中,还包括:22.当所述应用程序为oc开发语言和swift开发语言混编写时,从所述应用程序的所述可执行文件的__text段中提取出第一api;23.从所述应用程序的指定段中提取第二api;24.对所述第二api进行逆重排得到第三api25.将所述第一api和所述第三api保存到第一api集合中。26.在一示例性实施例中,所述可执行文件为ios系统的macho文件。27.本发明实施例还公开了一种api检测装置,包括:28.可执行文件获取模块,用于获取待检测的应用程序的可执行文件;29.api提取模块,用于从所述可执行文件中提取出第一api集合;所述第一api集合中包括oc开发语言编写的api,和/或oc开发语言和swift开发语言混编写的api;30.私有api检测模块,用于确定所述第一api集合与预设私有api库之间是否存在交集,若是则提示所述交集中的api为私有api。31.在一示例性实施例中,所述装置还可以包括:用户隐私权限检测模块,用于从所述第一api集合中提取出用户隐私权限对应的api组合为第二api集合;获取所述应用程序的info.plist文件;当检测到所述第二api集合中的api不在所述info.plist文件中时,提示不在所述info.plist文件中的api未声明。32.在一示例性实施例中,所述装置还包括:敏感字段检测模块,用于确定所述第一api集合中的api与预设敏感字段库之间是否存在交集,若是则提示所述交集中的api存在敏感字段。33.在一示例性实施例中,所述装置还可以包括:私有api库生成模块,用于从所述应用程序的框架文件中提取出全部api,所述全部api包括头文件和所述头文件的实现文件中的api;获取所述全部api中除所述头文件中的api以外的api,并保存为私有api库。34.在一示例性实施例中,所述可执行文件获取模块,用于当所述应用程序为oc开发语言编写时,从所述应用程序的所述可执行文件的__text段中提取出api并保存到第一api集合中。35.在一示例性实施例中,所述可执行文件获取模块,还用于当所述应用程序为oc开发语言和swift开发语言混编写时,从所述应用程序的所述可执行文件的__text段中提取出第一api;从所述应用程序的指定段中提取第二api;对所述第二api进行逆重排得到第三api;将所述第一api和所述第三api保存到第一api集合中。36.在一示例性实施例中,所述可执行文件可以为ios系统的macho文件。37.本发明实施例还公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;38.所述存储器,用于存放计算机程序;39.所述处理器,用于执行存储器上所存放的程序时,实现如本发明实施例所述的方法。40.本发明实施例还公开了一个或多个计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的方法。41.本发明实施例包括以下优点:42.在本发明实施例中,获取待检测的应用程序的可执行文件,并从可执行文件中提取出第一api集合,其中,第一api集合中包括oc开发语言编写的api以及oc开发语言和swift开发语言混编写的api,通过比对第一api集合与预设私有api库,若第一api集合在预设api库中存在匹配的api,则可以确定应用程序中包含了私有api,则提示存在私有api。本发明实施例对于oc开发语言编写,和/或oc开发语言和swift开发语言混编的应用程序均能够提取出api并进行api检测,因此提高了对应用程序的api检测准确度。附图说明43.图1是本发明实施例中提供的一种api检测方法的步骤流程图;44.图2是本发明实施例中提供的一种macho文件的结构示意图;45.图3是本发明实施例中提供的一种macho文件中api的查找示意图;46.图4是本发明实施例中提供的一种api检测装置的结构框图。具体实施方式47.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。48.目前在相关技术中,对于应用程api检测包括:49.一、对私有api检测:50.目前对应用程序进行api检测时,都是采用黑盒操作,具体地,通过终端指令导出特定的string(字符串)字段,然后将这些字段通过人工的方式去筛选、匹配来确定出私有api,而且上述筛选也仅仅针对oc开发语言开发的api的检测,对于swift开发语言的api的检测几乎没什么实质效果,这是因为swift开发语言开发的应用程序中的api使用了namemangling(名称重排)处理,对api的名称(例如方法名称)进行重排,因此api的名称变成了乱码,不能正常阅读和排查,也就无法通过人工的方式去筛选、匹配确定出私有api。51.二、用户隐私权限检测:52.目前没有针对用户隐私权限检测相关的工具,当然也更加不能检测出未声明而在应用程序中使用的api。53.针对上述问题,本发明实施例中提供的一种api检测方法,通过扫描应用程序的可执行文件,提取oc开发语言,和/或oc开发语言和swift开发语言混编的api,然后通过对api进行检测,进而在应用程序提交苹果官方(appstore)之前,可以提前发现该应用程序是否使用私有库,是否使用私有api,是否使用敏感字段,是否存在未声明就使用的用户隐私权限等问题,可以提前发现应用程序中存在的问题并给出提示,提前预警相关人员,相关人员则可以适应性对应用程序进行修改和调整,防止应用程序不能正常上线或者在线上出现异常等。54.参照图1,示出了本发明实施例中提供的一种api检测方法的步骤流程图,具体可以包括如下步骤:55.步骤102、获取待检测的应用程序的可执行文件。56.其中,可执行文件是指的应用程序ios系统的macho文件。具体地,macho文件是ios系统、macos系统中一种可执行文件(还包括其他格式,例如:.a,.o,framework等等)。参照图2,是本发明实施例中提供的一种macho文件的结构示意图,macho文件主要包含header部分和data部分,其中,header部分可以理解为目录,data部分理解为数据具体的存储位置。57.在本发明实施例中,在将应用程序提交至苹果官方之前,可以将该应用程序作为待检测的应用程序,并获取到待检测的应用程序的macho文件,通过提前对macho文件进行api检测,来确定是否需要对应用程序的代码进行修改和调整。58.步骤104、从所述可执行文件中提取出第一api集合;所述第一api集合中包括oc开发语言编写的api,和/或oc开发语言和swift开发语言混编写的api。59.其中,api是一些预先定义的参数,例如方法/函数(method)、class(类)等等,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。60.在本发明实施例中,应用程序可以是采用oc开发语言,或者是采用oc开发语言和swift开发语言混编写,其中,如果采用oc开发语言和swift开发语言混编写,则在应用程序的代码中将包括oc开发语言编写的api,以及swift开发语言混编写的api,本发明实施例通过扫描macho文件,可以从macho文件中提取出关键信息,具体地,关键信息可以包括oc开发语言编写oc代码中的api,以及swift开发语言编写的swift代码中的api,可以将这些api保存到第一api集合中。61.需要说明的是,本发明实施例是自行解析macho文件中的关键信息,不依赖三方工具,并且,由于是自行解析macho文件中的关键信息,因此解析得到的关键信息将更加完整且准确,当然,基于完整且准确整的关键信息进行api检测,得到的检测结果(例如是否使用私有api)也将更加准确。除此之外,由于本发明实施例可以自行解析macho文件中的关键信息,故而拓展性强、且易于维护。62.步骤106、确定所述第一api集合与预设私有api库之间是否存在交集,若是则提示所述交集中的api为私有api。63.其中,私有api库是预先设置的关于私有api的数据库,该私有api库中可以存储未在ios系统中公开的api。64.在本发明实施例中,确定第一api集合与私有api库之间是否存在交集,若存在则将交集中的api确定为是应用程序的私有api,并会对应提示开发人员应用程序中使用了私有库或者使用了私有api,开发人员将基于提示对应修改应用程序的代码,从而避免在应用程序中有存在私有api而不能上线。65.在上述api检测方法中,获取待检测的应用程序的可执行文件,并从可执行文件中提取出第一api集合,其中,第一api集合中包括oc开发语言编写的api和/或oc开发语言和swift开发语言混编写的api,通过比对第一api集合与预设私有api库,若第一api集合在预设api库中存在匹配的api,则可以确定应用程序中包含了私有api,则提示存在私有api。本发明实施例对于oc开发语言编写,和/或oc开发语言和swift开发语言混编的应用程序均能够提取出api并进行api检测,因此提高了对应用程序的api检测准确度。66.在上述实施例的基础上,提出了上述实施例的变型实施例,在此需要说明的是,为了使描述简要,在变型实施例中仅描述与上述实施例的不同之处。67.在一示例性实施例中,所述私有api库可以通过如下方式生成:68.从所述应用程序的框架文件中提取出全部api,所述全部api包括头文件和所述头文件的实现文件中的api;69.获取所述全部api中除所述头文件中的api以外的api,并保存为私有api库。70.其中,头文件是指的.h文件,.h文件公开定义类的成员变量以及方法等等,对外部是可见的,实现文件是指的.m文件,.m文件是对.h文件中方法等的实现,对外部是不可见的。71.其中,框架文件是指的framework文件。具体地,framework文件是ios的静态库或者动态库,可以存储有ios系统中的所有api。72.在本发明实施例中,从应用程序的framework文件中提取全部api,其中,全部api包括了.h文件和.m文件中的所有api,将全部api剔除.h文件中的api以外的api后,就可以得到私有api,然后可以将私有api保存为私有api库。可选地,由于私有api库的数据量较大,在进行api检测时也可以使用已经制作好的私有api库,本发明实施例对此无需加以限制。73.在上述示例性实施例中,基于应用程序的framework文件自行构建私有api库,可以拥有更多更全的关键信息,例如可以细化到基于方法(method),从而可以基于method对应用程序进行api检测,可以理解,由于method检测的维度较小,因此基于私有api库中的method进行api检测,得到的api检测结果将更加准确。74.在一示例性实施例中,所述步骤102、从所述可执行文件中提取出第一api集合,可以包括如下步骤:75.当所述应用程序为oc开发语言编写时,从所述应用程序的所述可执行文件的__text段中提取出api并保存到第一api集合中。76.参照图2,macho文件中可以包含多个segment(分段),每个segment包含一个或者多个section(节),在本发明实施例中,需要从macho文件中提取与api相关的字段包括class(类名)、method(方法名)、cstring(常量字符串),这些字段存在于segment中的名称为__text段中,具体地,上述字段存在于_text段中的__text,__objc_methname、__text,objc_cstring、__text,__objc_clasname这些section中。77.在本发明实施例中,如果应用程序为采用纯oc开发语言编写,则可以直接从macho文件的__text段中的section中提取出api,然后保存到第一api集合即可进行api检测,由于无需进行逆重排等处理过程,api检测效率高。78.在一示例性实施例中,所述步骤102、从所述可执行文件中提取出第一api集合,还可以包括如下步骤:79.当所述应用程序为oc开发语言和swift开发语言混编写时,从所述应用程序的所述可执行文件的__text段中提取出第一api;80.从所述应用程序的指定段中提取第二api;81.对所述第二api进行逆重排得到第三api;82.将所述第一api和所述第三api保存到第一api集合中。83.其中,如果macho文件为采用oc开发语言和swift开发语言混编写,则macho文件中将包含swift代码和oc代码,由于swift代码的存储和oc代码存在较大的差异,所以在提取swift代码中的api时,还需要进一步对swift代码进行解析,才能得到macho文件的api。84.其中,指定段可以包括swift5_types、swift5_protos、stringtable。在本发明实施例中,如果macho文件为采用oc开发语言和swift开发语言混编写,由于swift会对api的名称进行名称重排处理,因此swift代码中的api的名称是乱码,则在提取到与api相关的字段后,还需要进一步进行解析才能够得到api。85.参照图3,是本发明实施例中提供的一种macho文件中api的查找示意图,在swift代码中,针对class和method的提取方式分别是:86.针对class:swift代码中的class并不是直接存储的字符串,可以通过swift5_types、swift5_protos的section,找到class的指针,然后通过该指针加上该指针的文件偏移量的到该class的具体存储的位置,然后再通过swift代码的存储格式,解析出第三个4字节表示该class的name的地址,最终找出的class名称。87.针对method:swift代码的method与oc代码不同,不是通过methodlist存储,因此在本发明实施例中,通过stringtable去间接获取swift代码中class的method,具体地,首先遍历macho文件中所有的stringtable得到string(字符串),然后判断该string是不是swift代码的class,如果是swift代码的class,则需要进一步通过demangled(逆重排)从class中解析出最原始的swiftmethod,至此得到最终的method名。88.在上述实施例实施例中,本发明实施例能够从纯oc开发语言编写,以及oc开发语言和swift开发语言混编写的应用程序中提取出api并进行api检测,适用范围广。89.在一示例性实施例中,在所述步骤104、从所述可执行文件中提取出第一api集合之后,所述方法还可以包括如下步骤:90.从所述第一api集合中提取出用户隐私权限对应的api组合为第二api集合;91.获取所述应用程序的info.plist文件;92.当检测到所述第二api集合中的api不在所述info.plist文件中时,提示不在所述info.plist文件中的api未声明。93.其中,用户权限检测主要的功能是检测出应用程序的代码中使用了未声明的用户隐私权限。94.其中,info.plist文件用于向ios系统提供关于应用程序framework等重要信息,info.plist文件指定了一个应用程序应该怎样启动、隐私权限等等,info.plist文件是苹果官方预定义schema的xml文件。通过info.plist文件,可以确定应用程序在开发中常用到的用户隐私权限。95.在本发明实施例中,本发明实施例的用户隐私权限检测原理是,如果应用程序想要使用用户隐私权限,就需要调用与用户隐私权限相关的代码,例如与用户隐私权限相关的class、method等等,因此在进行用户隐私权限检测时,首先获取从应用程序的app包,从app包中获取info.plist文件,然后从macho文件中提取得到第一api集合,并从第一api集合提取出与用户隐私权限相关的api保存到第二api集合中,其中,如果检测到第二api集合中的api不在info.plist文件中,则说明第二api集合中存在未声明的api,则可以提示开发人员不在info.plist文件中的api未声明。96.在上述示例性实施例中,基于info.plist文件对应用程序的用户隐私权限进行检测,由于应用程序的用户隐私权限配置在info.plist文件中,因此基于info.plist文件进行用户隐私权限检测,检测准确度高且与能够苹果官方匹配,有利于提高对应用程序的用户隐私权限检测的准确性,提高在苹果官方的审核通过率。97.在一示例性实施例中,在所述步骤104、从所述可执行文件中提取出第一api集合之后,所述方法还可以包括如下步骤:98.确定所述第一api集合中的api与预设敏感字段库之间是否存在交集,若是则提示所述交集中的api存在敏感字段。99.在实际应用中,苹果官方对于应用程序的热更新是不允许的,如果在应用程序中检测到了敏感字段,那么苹果官方就会让这个应用程序下架或者审核不通过。100.针对上述问题,本发明实施例可以预先收集苹果官方不允许使用的敏感字段,然后将这些敏感字段收录到预设敏感字段库,在对应用程序的进行api检测时,可以确定第一api集合的api与预设敏感字段库之间是否存在交集,如果存在交集,则可以提示在应用程序中存在敏感字段,开发人员将基于提示对应修改应用程序的代码,从而避免在应用程序中有存在敏感字段而不能正常上线。101.举例来说,有一个三方库叫jspatch是苹果官方是不允许使用,则三方库的名称jspatch就是一个敏感字段,如果在第一api集合的api中存在该字段,则确定为检测到敏感字段,将提示开发人员在应用程序中存在敏感字段jspatch。102.在上述示例性实施例中,在对应用程序进行api检测时,除了进行私有库、私有api、用户隐私权限的检测之外,还可以进行敏感字段的检测,通过对应用程序进行全面完整的api检测,提高了对应用程序的api检测的准确度,开发人员可以在提交到苹果官方前对应用程序进行调整和修改,减少了应用程序的再开发次数,降低了应用程序的开发成本。103.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。104.参照图4,示出了本发明实施例中提供的一种api检测装置的结构框图,具体可以包括如下模块:105.可执行文件获取模块402,用于获取待检测的应用程序的可执行文件;106.api提取模块406,用于从所述可执行文件中提取出第一api集合;所述第一api集合中包括oc开发语言编写的api,和/或oc开发语言和swift开发语言混编写的api;107.私有api检测模块408,用于确定所述第一api集合与预设私有api库之间是否存在交集,若是则提示所述交集中的api为私有api。108.在一示例性实施例中,所述装置还可以包括:用户隐私权限检测模块,用于从所述第一api集合中提取出用户隐私权限对应的api组合为第二api集合;获取所述应用程序的info.plist文件;当检测到所述第二api集合中的api不在所述info.plist文件中时,提示不在所述info.plist文件中的api未声明。109.在一示例性实施例中,所述装置还可以包括:敏感字段检测模块,用于确定所述第一api集合中的api与预设敏感字段库之间是否存在交集,若是则提示所述交集中的api存在敏感字段。110.在一示例性实施例中,所述装置还可以包括:私有api库生成模块,用于从所述应用程序的框架文件中提取出全部api,所述全部api包括头文件和所述头文件的实现文件中的api;获取所述全部api中除所述头文件中的api以外的api,并保存为私有api库。111.在一示例性实施例中,所述可执行文件获取模块,用于当所述应用程序为oc开发语言编写时,从所述应用程序的所述可执行文件的__text段中提取出api并保存到第一api集合中。112.在一示例性实施例中,所述可执行文件获取模块,还用于当所述应用程序为oc开发语言和swift开发语言混编写时,从所述应用程序的所述可执行文件的__text段中提取出第一api;从所述应用程序的指定段中提取第二api;对所述第二api进行逆重排得到第三api;将所述第一api和所述第三api保存到第一api集合中。113.在一示例性实施例中,所述可执行文件为ios系统的macho文件。114.综上,在本发明实施例中,获取待检测的应用程序的可执行文件,并从可执行文件中提取出第一api集合,其中,第一api集合中包括oc开发语言编写的api和/或oc开发语言和swift开发语言混编写的api,通过比对第一api集合与预设私有api库,若第一api集合在预设api库中存在匹配的api,则可以确定应用程序中包含了私有api,则提示存在私有api。本发明实施例对于oc开发语言编写,或者oc开发语言和swift开发语言混编的应用程序均能够提取出api进行api检测,因此提高了对应用程序的api检测准确度。115.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。116.优选的,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述api检测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。117.本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述api检测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read‑onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等。118.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。119.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。120.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。121.本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。122.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。123.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。124.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。125.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。126.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。127.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域:
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页12当前第1页12