CN108595178B - 一种基于hook的数据采集方法、装置及设备 - Google Patents
一种基于hook的数据采集方法、装置及设备 Download PDFInfo
- Publication number
- CN108595178B CN108595178B CN201810421126.4A CN201810421126A CN108595178B CN 108595178 B CN108595178 B CN 108595178B CN 201810421126 A CN201810421126 A CN 201810421126A CN 108595178 B CN108595178 B CN 108595178B
- Authority
- CN
- China
- Prior art keywords
- data acquisition
- response method
- control
- hook
- code
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明实施例提供一种基于hook的数据采集方法、装置及设备。所述方法包括:在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法;所述预设hook清单用于指示需要进行数据采集的界面交互控件及其交互响应方法;根据所述界面交互控件对应的预设采集内容及采集控制策略,生成数据采集代码;基于所述数据采集代码,对所述交互响应方法进行hook操作,以使所述交互响应方法被调用时,通过所述数据采集代码自动进行数据采集。本发明实施例一次性的自动埋点数据采集的实现代码,有效减少了根据场景进行人工埋点时终端开发者的工作量,自动埋点更易于维护和后期迭代。
Description
技术领域
本发明实施例涉及计算机领域,尤其涉及一种基于hook的数据采集方法、装置及设备。
背景技术
在计算机广泛应用的今天,各种计算机***、网络***中会产生大量的数据,包括业务数据、用户操作数据、日志数据等等。为了对计算机***、网络***进行监控统计分析,或者对用户行为进行监控统计分析等,常常需要在不同的业务场景中进行数据采集。随着计算机应用越来越丰富,数据采集的重要性越来越显著。
目前,对于一个计算机应用产品,当需要统计相应的计算机应用产品运营数据或者技术方面需要监控相应的数据的时候,需要让开发人员在开发阶段,将相应的统计或者处理代码额外添加到想要分析的计算机应用产品的具体场景里,然后结合网络模块完成数据的采集和提交。这种方式通常被称为“手动埋点”或者“人工打点”。
但是产品实际迭代过程中,这样需要的分析的“具体场景”不断变化,手动或人工操作难以满足产品需求的灵活变化,且工作量巨大。这种方案下,产品运营和开发部门存在大量的跨部门的沟通,容易导致人为出错。此外,因为这种方案是在具体场景下的操作,导致大量分类和标记工作需要在终端产品的开发阶段完成,在后期迭代中也不易于维护和迭代。
发明内容
针对现有技术存在的问题,本发明实施例提供一种基于hook的数据采集方法、装置及设备,避免了终端数据采集时“手动埋点”或“人工大点”,实现自动埋点的数据采集,减轻了终端开发的工作量,且更易于维护和后期迭代。
第一方面,本发明实施例提供一种基于hook的数据采集方法,包括:
在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法;所述预设hook清单用于指示需要进行数据采集的界面交互控件及其交互响应方法;
根据所述界面交互控件对应的预设采集内容及采集控制策略,生成数据采集代码;
基于所述数据采集代码,对所述交互响应方法进行hook操作,以使所述交互响应方法被调用时,通过所述数据采集代码自动进行数据采集。
第二方面,本发明实施例提供一种基于hook的数据采集装置,包括:
交互响应方法获取模块,用于在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法;所述预设hook清单用于指示需要进行数据采集的界面交互控件及其交互响应方法;
数据采集代码生成模块,用于根据所述界面交互控件对应的预设采集内容及采集控制策略,生成数据采集代码;
hook操作模块,用于基于所述数据采集代码,对所述交互响应方法进行hook操作,以使所述交互响应方法被调用时,通过所述数据采集代码自动进行数据采集。
第三方面,本发明实施例提供了一种基于hook的数据采集设备,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行本发明实施例第一方面所述基于hook的数据采集方法及其任一可选实施例所述的方法。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令执行本发明实施例第一方面所述基于hook的数据采集方法及其任一可选实施例的方法。
本发明实施例提供的一种基于hook的数据采集方法,预先确定需要进行数据采集的界面交互控件及其交互响应方法,根据界面交互控件对应的预设采集内容及采集控制策略,自动生成数据采集代码;在应用程序启动时,通过hook操作将包含数据采集代码的实现自动替换需要进行数据采集的界面交互控件的对应函数或方法实现,一次性的自动埋点数据采集的实现代码,有效减少了根据场景进行人工埋点时终端开发者的工作量,自动埋点更易于维护和后期迭代。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一种基于hook的数据采集方法流程图;
图2为本发明实施例一种基于hook的数据采集装置示意图;
图3为本发明实施例一种基于hook的数据采集设备的框架示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例一种基于hook的数据采集方法流程图。为了减轻客户端开发过程中的“手动埋点”或“人工打点”工作量,避免“手动”或“人工”出错,本发明实施例提供一种基于hook的数据采集方法,包括:
S100,在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法;所述预设hook清单用于指示需要进行数据采集的界面交互控件及其交互响应方法;
需要说明的是,本发明实施例所述预设hook清单中,可以指示1个或多个需要进行数据采集的界面交互控件,每个需要进行数据采集的界面交互控件对应一个交互响应方法。即应用程序中,所有需要进行数据采集的界面交互控件及其对应的交互响应方法可以在预设hook清单提前设置,一个界面交互控件,对应一个交互响应方法,即预设hook清单中的界面交互控件和交互响应方法具有一一对应的关系。
具体的,所述预设hook清单,可以在应用程序中通过代码指定,也可以通过外部文件指定,此处称为第一外部文件,应用程序启动时读取第一外部文件的内容,获取所述预设hook清单。第一外部文件可以存储在本地,也可以存储在服务器端,应用程序启动从本地或服务器端获取第一外部文件,进一步读取该外部文件的内容,根据第一外部文件指定的内容获取预设hook清单。
具体的,所述界面交互控件包括按钮类控件、滑动页面控件、列表控件、网格控件、标签栏控件、搜索控件及webview控件中的一种或多种。
可以理解,在不同的应用场景下,若需要在不同的界面交互控件中采集数据,则指需要修改预设hook清单即可,不需要对每个需要采集数据的场景进行代码修改,保持了应用程序代码的稳定性,使得应用程序代码更易于维护。
S101,根据所述界面交互控件对应的预设采集内容及采集控制策略,生成数据采集代码;
本发明实施例预设采集内容及采集控制策略,用于指定对应的界面交互控件中需要采集的数据内容,采集的频次,采集的时机,采集开始时间或采集接收时间等。应用程序根据预设采集内容及采集控制策略,为对应的界面交互控件自动生成数据采集代码。
具体的,可以为不同的界面交互控件配置不同的采集内容及采集控制策略,使得需要采集数据的界面交互控件与采集内容及采集控制策略一一对应,极大的提高了数据采集的灵活性和适配性。
与步骤S100中的预设hook清单类似,本发明实施例预设采集内容及采集控制策略,可以在应用程序中通过代码指定,也可以通过外部文件指定,此处称为第二外部文件,应用程序启动时读取第二外部文件的内容,获取所述预设采集内容及采集控制策略。该外部文件可以存储在本地,也可以存储在服务器端,应用程序启动从本地或服务器端获取该外部文件,进一步读取该外部文件的内容,根据该外部文件指定的内容获取预设采集内容及采集控制策略。
S102,基于所述数据采集代码,对所述交互响应方法进行hook操作,以使所述交互响应方法被调用时,通过所述数据采集代码自动进行数据采集。
需要说明的是,本发明实施例所述hook操作,不限于windows***的hook操作,还包括类似hook机制的处理方法。通过hook操作,使包含数据采集代码的实现替换原始的交互响应方法的实现,从而在交互响应方法被调用时,可以通过所述数据采集代码自动进行数据采集。
需要说明的是,上述包含数据采集代码的实现,一般是在原始的交互响应方法的实现基础上,添加数据采集代码,从而在原有的实现逻辑的基础上,增加了数据采集功能,即不影响交互响应方法原有的功能,实现了数据采集。
本发明实施例所述基于hook的数据采集方法,可以通过任意终端来执行,例如客户端与服务端一体的终端,也可以是客户端与服务端分离的客户端终端。
本发明实施例预先确定需要进行数据采集的界面交互控件及其交互响应方法,根据界面交互控件对应的预设采集内容及采集控制策略,自动生成数据采集代码;在应用程序启动时,通过hook操作将包含数据采集代码的实现自动替换需要进行数据采集的界面交互控件的对应函数或方法实现,一次性的自动埋点数据采集的实现代码,有效减少了根据场景进行人工埋点时终端开发者的工作量,自动埋点更易于维护和后期迭代。
基于上述实施例,所述基于hook的数据采集方法还包括:
在应用程序启动时,通过单例模式创建基本数据采集实例,所述基本数据采集实例用于采集***信息和/或设备环境数据。
本发明实施例通过单例的基本数据采集实例对***信息和/或设备环境数据进行采集,实现了通用的数据采集;前述实施例基于hook技术对需要进行数据采集的界面交互控件进行数据采集,实现了个性化的数据采集。
需要说明的是,不论是***信息和/或设备环境数据,还是不同的界面交互控件的采集数据,本发明实施例可以进一步将采集到的数据进行缓存,或存储在本地。当本地的数据累计到预设的数量,可以将采集数据进行打包、加密、压缩等处理,并将处理后的数据包发送到指定的服务器,从而减轻了终端的数据存储压力。
基于上述实施例,所述步骤100,所述在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法,具体包括:
在应用程序启动时,对所述应用程序中的控件对象进行检测;
若判断获知所述控件对象为所述预设hook清单指示的界面交互控件,则根据所述预设hook清单中指示的所述控件对象的交互响应方法,获取对应的交互响应方法。
本发明实施例按需求在不同的界面交互控件中进行数据采集,在应用程序启动时,对所述应用程序中的所有的控件对象进行检测,以确定哪些控件对象是需要进行自动埋点的。具体的,确定哪些控件对象是需要进行自动埋点的,其依据是预设hook清单,若当前检测的控件对象在预设hook清单中,则所述当前检测的控件对象是需要进行自动埋点的解码交互控件,则进一步根据预设hook清单中指示的所述控件对象的交互响应方法定位到对应的交互响应方法,以便后续进行自动埋点。
所述自动埋点是指,根据所述界面交互控件对应的预设采集内容及采集控制策略,生成数据采集代码,将包含数据采集代码的实现替换原有的交互响应方法的实现,从而实现自动埋点。
基于上述实施例,所述步骤102,所述基于所述数据采集代码,实现对所述交互响应方法的hook操作,具体包括:
若所述界面交互控件持有所述交互响应方法,则基于所述数据采集代码和所述交互响应方法的实现代码,生成新实现方法;通过所述新实现方法替换所述交互响应方法,以实现hook操作;
若代理对象持有所述交互响应方法且存在所述交互响应方法的实现代码,则基于所述数据采集代码和所述交互响应方法的实现代码,生成新实现方法;通过所述新实现方法替换所述交互响应方法,以实现hook操作。
需要说明的是,在步骤S100获取了界面交互控件的交互响应方法后,需要判断所述交互响应方法是界面交互控件直接持有还是间接持有,不同的持有方式的处理不相同。
本实施例可以通过判断所述交互响应方法是否存在代理对象来确定所述交互响应方法是所述界面交互控件直接持有还是间接持有。若所述交互响应方法不存在代理对象,则所述交互响应方法为所述界面交互控件直接持有;若所述交互响应方法存在代理对象,则所述交互响应方法为代理对象直接持有,为所述界面交互控件间接持有。
代理对象持有所述交互响应方法包括两种情况,一种是所述交互响应方法存在实现代码,另一种是所述交互响应方法不存在实现代码。对于代理对象持有所述交互响应方法且存在所述交互响应方法的实现代码的情况,与所述界面交互控件直接持有所述交互响应方法的hook操作是相同的。
即,所述交互响应方法为所述界面交互控件直接持有、或代理对象持有所述交互响应方法且存在所述交互响应方法的实现代码,则基于所述数据采集代码和所述交互响应方法的实现代码,生成新实现方法;通过所述新实现方法替换所述交互响应方法,以实现hook操作。
基于上述实施例,所述步骤102所述基于所述数据采集代码,实现对所述交互响应方法的hook操作,具体还包括:
若所述界面交互控件持有所述交互响应方法,基于所述数据采集代码生成新选择器,在所述新选择器中调用所述交互响应方法;
利用所述新选择器实现对所述交互响应方法的原始选择器的hook操作。
具体的,在Objective-C中选择器有两个含义。一种是用在代码中向对象发送消息时简单的代表了一个方法名。另一种是当源代码被编译时选择器会指向一个唯一标识以代替方法名,被编译后的选择器类型为SEL。所有相同名字的方法会有相同的选择器。出于运行效率的考虑,在编译后的代码中不会使用由ASCII码组成的方法名。取而代之的是,编译器会将每个方法名写到一个表中,然后为每个方法名分配一个唯一标识用于在运行时标识一个方法。运行时***会确保每个标识都是唯一的:不会出现两个相同的选择器,并且所有相同名字的方法都使用相同的选择器。
本实施例中,所述交互响应方法对应一个原始选择器;基于所述数据采集代码生成新选择器,并且在所述新选择器中调用所述交互响应方法,则新选择中包括原交互响应方法的功能和数据采集的功能,然后利用新选择器替换原始选择器,则在原交互响应方法的功能的基础上实现了数据采集。
进一步,可以调整新选择器内数据采集功能和原交互响应方法的功能的执行顺序,可根据实际需要在原交互响应方法的功能之前或之后执行数据采集功能,本发明实施例对此不作具体限定。
基于上述实施例,所述步骤102所述基于所述数据采集代码,实现对所述交互响应方法的hook操作,具体还包括:
若代理对象持有所述交互响应方法且不存在所述交互响应方法的实现代码,则增加所述交互响应方法的空实现;
基于所述数据采集代码生成新实现方法,通过所述新实现方法替换所述交互响应方法,以实现hook操作。
前述实施例已经指出,代理对象持有所述交互响应方法包括两种情况,一种是所述交互响应方法存在实现代码,另一种是所述交互响应方法不存在实现代码。对于代理对象持有所述交互响应方法且存在所述交互响应方法的实现代码的情况,与所述界面交互控件直接持有所述交互响应方法的hook操作是相同的。
对代理对象持有所述交互响应方法且不存在所述交互响应方法的实现代码的情况,本实施例首先增加所述交互响应方法的空实现,这样相当于代理对象持有所述交互响应方法且存在所述交互响应方法的实现代码的情况,则再通过数据采集代码生成的新实现方法替换所述交互响应方法的空实现,这样就实现了类似的实现hook操作。
综上所述,本发明实施例提供一种基于hook的数据采集方法,在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法;所述预设hook清单用于指示需要进行数据采集的界面交互控件及其交互响应方法;根据所述界面交互控件对应的预设采集内容及采集控制策略,生成数据采集代码;基于所述数据采集代码,实现对所述交互响应方法的hook操作,以使所述交互响应方法被调用时,通过所述数据采集代码自动进行数据采集。在应用程序启动运行时,针对关心的交互控件相关的方法(函数)动态增加的数据采集实现,一次性的自动埋点数据采集的实现代码,从而实现更高效的数据采集方案,有效减少了根据场景进行人工埋点时终端开发者的工作量,自动埋点更易于维护和后期迭代。相对于手动埋点,本发明实施例所述方法可以减少人力输出;通过hook清单及预设采集内容及采集控制策略,提供一套抽象机制,支持自定义切入点支持采集内容的自定义,增强了方案的弹性,提高方案扩展性。
本发明实施例还提供一种基于hook的数据采集装置,包括:
交互响应方法获取模块200,用于在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法;所述预设hook清单用于指示需要进行数据采集的界面交互控件及其交互响应方法;
数据采集代码生成模块201,用于根据所述界面交互控件对应的预设采集内容及采集控制策略,生成数据采集代码;
hook操作模块202,用于基于所述数据采集代码,对所述交互响应方法进行hook操作,以使所述交互响应方法被调用时,通过所述数据采集代码自动进行数据采集。
本发明实施例的装置,可用于执行图1所示的基于hook的数据采集方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图3为本发明实施例基于hook的数据采集设备的框架示意图。请参考图3,本发明实施例提供一种基于hook的数据采集设备,包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和总线340,其中,处理器310,通信接口320,存储器330通过总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行如下方法,包括:在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法;所述预设hook清单用于指示需要进行数据采集的界面交互控件及其交互响应方法;根据所述界面交互控件对应的预设采集内容及采集控制策略,生成数据采集代码;基于所述数据采集代码,对所述交互响应方法进行hook操作,以使所述交互响应方法被调用时,通过所述数据采集代码自动进行数据采集。
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法;所述预设hook清单用于指示需要进行数据采集的界面交互控件及其交互响应方法;根据所述界面交互控件对应的预设采集内容及采集控制策略,生成数据采集代码;基于所述数据采集代码,对所述交互响应方法进行hook操作,以使所述交互响应方法被调用时,通过所述数据采集代码自动进行数据采集。
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法;所述预设hook清单用于指示需要进行数据采集的界面交互控件及其交互响应方法;根据所述界面交互控件对应的预设采集内容及采集控制策略,生成数据采集代码;基于所述数据采集代码,对所述交互响应方法进行hook操作,以使所述交互响应方法被调用时,通过所述数据采集代码自动进行数据采集。
本领域普通技术人员可以理解:实现上述设备实施例或方法实施例仅仅是示意性的,其中所述处理器和所述存储器可以是物理上分离的部件也可以不是物理上分离的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如U盘、移动硬盘、ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (6)
1.一种基于hook的数据采集方法,其特征在于,包括:
在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法;所述预设hook清单用于指示需要进行数据采集的界面交互控件及其交互响应方法;所述在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法,具体包括:在应用程序启动时,对所述应用程序中的控件对象进行检测;若判断获知所述控件对象为所述预设hook清单指示的界面交互控件,则根据所述预设hook清单中指示的所述控件对象的交互响应方法,获取对应的交互响应方法;所述预设hook清单通过第一外部文件获取;
根据所述界面交互控件对应的预设采集内容及采集控制策略,生成数据采集代码;所述预设采集内容及所述采集控制策略通过第二外部文件获取;
基于所述数据采集代码,对所述交互响应方法进行hook操作,以使所述交互响应方法被调用时,通过所述数据采集代码自动进行数据采集;
所述基于所述数据采集代码,对所述交互响应方法的hook操作,具体包括:
若所述界面交互控件持有所述交互响应方法,则基于所述数据采集代码和所述交互响应方法的实现代码,生成新实现方法;通过所述新实现方法替换所述交互响应方法,以实现hook操作;
若代理对象持有所述交互响应方法且存在所述交互响应方法的实现代码,则基于所述数据采集代码和所述交互响应方法的实现代码,生成新实现方法;通过所述新实现方法替换所述交互响应方法,以实现hook操作;
若所述界面交互控件持有所述交互响应方法,基于所述数据采集代码生成新选择器,在所述新选择器中调用所述交互响应方法;
利用所述新选择器实现对所述交互响应方法的原始选择器的hook操作;
若代理对象持有所述交互响应方法且不存在所述交互响应方法的实现代码,则增加所述交互响应方法的空实现;
基于所述数据采集代码生成新实现方法,通过所述新实现方法替换所述交互响应方法,以实现hook操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在应用程序启动时,通过单例模式创建基本数据采集实例,所述基本数据采集实例用于采集***信息和/或设备环境数据。
3.根据权利要求1所述的方法,其特征在于,所述界面交互控件包括按钮类控件、滑动页面控件、列表控件、网格控件、标签栏控件、搜索控件及webview控件中的一种或多种。
4.一种基于hook的数据采集装置,其特征在于,包括:
交互响应方法获取模块,用于在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法;所述预设hook清单用于指示需要进行数据采集的界面交互控件及其交互响应方法;所述在应用程序启动时,根据预设hook清单,获取相应的界面交互控件的交互响应方法,具体包括:在应用程序启动时,对所述应用程序中的控件对象进行检测;若判断获知所述控件对象为所述预设hook清单指示的界面交互控件,则根据所述预设hook清单中指示的所述控件对象的交互响应方法,获取对应的交互响应方法;所述预设hook清单通过第一外部文件获取;
数据采集代码生成模块,用于根据所述界面交互控件对应的预设采集内容及采集控制策略,生成数据采集代码;所述预设采集内容及所述采集控制策略通过第二外部文件获取;
hook操作模块,用于基于所述数据采集代码,对所述交互响应方法进行hook操作,以使所述交互响应方法被调用时,通过所述数据采集代码自动进行数据采集;
所述基于所述数据采集代码,对所述交互响应方法的hook操作,具体包括:
若所述界面交互控件持有所述交互响应方法,则基于所述数据采集代码和所述交互响应方法的实现代码,生成新实现方法;通过所述新实现方法替换所述交互响应方法,以实现hook操作;
若代理对象持有所述交互响应方法且存在所述交互响应方法的实现代码,则基于所述数据采集代码和所述交互响应方法的实现代码,生成新实现方法;通过所述新实现方法替换所述交互响应方法,以实现hook操作;
若所述界面交互控件持有所述交互响应方法,基于所述数据采集代码生成新选择器,在所述新选择器中调用所述交互响应方法;
利用所述新选择器实现对所述交互响应方法的原始选择器的hook操作;
若代理对象持有所述交互响应方法且不存在所述交互响应方法的实现代码,则增加所述交互响应方法的空实现;
基于所述数据采集代码生成新实现方法,通过所述新实现方法替换所述交互响应方法,以实现hook操作。
5.一种基于hook的数据采集设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至3任一所述的方法。
6.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使计算机执行如权利要求1至3任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810421126.4A CN108595178B (zh) | 2018-05-04 | 2018-05-04 | 一种基于hook的数据采集方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810421126.4A CN108595178B (zh) | 2018-05-04 | 2018-05-04 | 一种基于hook的数据采集方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108595178A CN108595178A (zh) | 2018-09-28 |
CN108595178B true CN108595178B (zh) | 2021-10-15 |
Family
ID=63620865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810421126.4A Active CN108595178B (zh) | 2018-05-04 | 2018-05-04 | 一种基于hook的数据采集方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108595178B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026732B (zh) * | 2019-12-03 | 2023-11-17 | 深圳块织类脑智能科技有限公司 | 动态化巡采巡查方法和*** |
CN111290798A (zh) * | 2020-01-20 | 2020-06-16 | 北京无限光场科技有限公司 | 数据采集方法、装置和电子设备 |
CN112764729B (zh) * | 2021-01-08 | 2024-02-06 | 深圳依时货拉拉科技有限公司 | 应用软件开发方法、装置、计算机设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8874789B1 (en) * | 2007-09-28 | 2014-10-28 | Trend Micro Incorporated | Application based routing arrangements and method thereof |
CN106325945A (zh) * | 2016-08-26 | 2017-01-11 | 北京北信源软件股份有限公司 | 利用视窗操作***的ie浏览器进行网络数据采集方法 |
CN107391115A (zh) * | 2017-06-28 | 2017-11-24 | 武汉斗鱼网络科技有限公司 | 一种实现弹窗交互事件的方法、装置及计算机设备 |
CN107423048A (zh) * | 2017-04-14 | 2017-12-01 | 网易乐得科技有限公司 | 数据收集的方法、装置、介质和计算设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7685132B2 (en) * | 2006-03-15 | 2010-03-23 | Mog, Inc | Automatic meta-data sharing of existing media through social networking |
US20080201778A1 (en) * | 2007-02-21 | 2008-08-21 | Matsushita Electric Industrial Co., Ltd. | Intrusion detection using system call monitors on a bayesian network |
US20140075567A1 (en) * | 2009-01-28 | 2014-03-13 | Headwater Partners I Llc | Service Processor Configurations for Enhancing or Augmenting System Software of a Mobile Communications Device |
US20160328219A1 (en) * | 2015-05-07 | 2016-11-10 | Microsoft Technology Licensing, Llc | Mobile application development collaboration system |
CN105354040B (zh) * | 2015-12-10 | 2019-05-17 | 网易(杭州)网络有限公司 | 双引擎游戏内置工具栏的方法、装置及终端 |
CN107332811A (zh) * | 2016-04-29 | 2017-11-07 | 阿里巴巴集团控股有限公司 | 入侵检测的方法、装置和*** |
CN107196788B (zh) * | 2017-05-02 | 2020-12-18 | 创新先进技术有限公司 | 一种埋点数据的处理方法、装置、服务器及客户端 |
-
2018
- 2018-05-04 CN CN201810421126.4A patent/CN108595178B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8874789B1 (en) * | 2007-09-28 | 2014-10-28 | Trend Micro Incorporated | Application based routing arrangements and method thereof |
CN106325945A (zh) * | 2016-08-26 | 2017-01-11 | 北京北信源软件股份有限公司 | 利用视窗操作***的ie浏览器进行网络数据采集方法 |
CN107423048A (zh) * | 2017-04-14 | 2017-12-01 | 网易乐得科技有限公司 | 数据收集的方法、装置、介质和计算设备 |
CN107391115A (zh) * | 2017-06-28 | 2017-11-24 | 武汉斗鱼网络科技有限公司 | 一种实现弹窗交互事件的方法、装置及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN108595178A (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704518B (zh) | 基于Flink引擎的业务数据处理方法及装置 | |
CN108804215B (zh) | 一种任务处理方法、装置以及电子设备 | |
US20190370107A1 (en) | Data processing platform monitoring | |
CN108595178B (zh) | 一种基于hook的数据采集方法、装置及设备 | |
CN110442502B (zh) | 一种埋点的方法、装置、设备及存储介质 | |
CN107644075B (zh) | 收集页面信息的方法和装置 | |
CN110716848A (zh) | 数据收集方法、装置、电子设备及存储介质 | |
CN110851324B (zh) | 基于日志的巡检处理方法、装置以及电子设备、存储介质 | |
CN109828859B (zh) | 移动终端内存分析方法、装置、存储介质及电子设备 | |
CN112035344A (zh) | 多场景测试方法、装置、设备和计算机可读存储介质 | |
CN108509322B (zh) | 避免过度回访的方法、电子装置及计算机可读存储介质 | |
CN109828759B (zh) | 代码编译方法、装置、计算机装置及存储介质 | |
CN111046245A (zh) | 多源异构数据源融合计算方法、***、设备和存储介质 | |
CN110716804A (zh) | 无用资源的自动删除方法、装置、存储介质及电子设备 | |
CN107741891B (zh) | 对象的析构方法、介质、装置和计算设备 | |
CN112540837B (zh) | 业务处理组件调用方法、***、电子设备和存储介质 | |
CN111382259A (zh) | 一种app崩溃日志的解析方法及装置 | |
CN110045952B (zh) | 代码调用方法与装置 | |
CN109508193B (zh) | 一种应用部署运行方法、装置、终端设备和介质 | |
US20180373512A1 (en) | Method and device for simulating synchronous blocking in asynchronous environment, storage medium, server and terminal | |
CN112181695A (zh) | 异常应用处理方法、装置、服务器及存储介质 | |
CN115705294B (zh) | 用于获取函数调用信息的方法、装置、电子设备和介质 | |
CN113141407B (zh) | 一种页面资源加载方法、装置和电子设备 | |
CN115826980A (zh) | 数据处理方法、装置、存储介质及电子设备 | |
CN111080250B (zh) | 流程回退补偿方法、装置、存储介质及电子设备 |
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 |