CN114138518A - 一种数据抓取方法、装置、设备及存储介质 - Google Patents
一种数据抓取方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114138518A CN114138518A CN202111458752.9A CN202111458752A CN114138518A CN 114138518 A CN114138518 A CN 114138518A CN 202111458752 A CN202111458752 A CN 202111458752A CN 114138518 A CN114138518 A CN 114138518A
- Authority
- CN
- China
- Prior art keywords
- application
- target application
- starting
- packet capturing
- http
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/543—User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及数据处理领域,尤其涉及一种数据抓取方法、装置、设备及存储介质,用于简化抓包流程。本申请中可以获取目标应用的第一启动入口。创建抓包应用的主进程的子进程。根据第一启动入口,在抓包应用的子进程中启动目标应用。通过抓包应用获取子进程中运行的目标应用传输的消息。由于在抓包应用的子进程中启动目标应用,因此抓包应用对目标应用具有最高权限,因此抓包应用可以基于获取到的最高权限对目标应用传输的消息进行抓取。可以看出,该方案中无需使用笔记本电脑即可实现对目标应用的数据的抓取,过程较为简便。
Description
技术领域
本发明实施例涉及数据处理领域,尤其涉及一种数据抓取方法、装置、设备及存储介质。
背景技术
当应用开发完成后,通常需要对应用进行测试,以保证应用的正常可用。在对应用进行测试时,通信需要对应用传输的消息进行抓取,以便进行分析。
当前存在一种方案,用于实现对应用传输的消息进行抓取。该方案中要求在笔记本电脑上安装一个超文本传输协议(hyper text transfer protocol)代理软件,并且设置代理端口(如8888)。之后待测试手机和笔记本电脑接入同一个局域网,并在手机上设置代理服务器网际协议(internet protocol,IP)地址为笔记本电脑的ip地址,且设置代理端口为笔记本电脑中设置的端口(如8888)。之后还需要通过笔记本电脑的代理软件中下载证书,并在手机中安装证书。最后运行需要进行抓包的目标应用,此时如果目标应用未做HTTPs证书校验则可以在代理软件中抓取到HTTP报文。
通过上述方案可以看出,当前的方案中,笔记本电脑通过与手机连接同一网路,使用代理软件进行抓包,过程繁琐而且耗时耗力。
发明内容
本申请实施例提供一种数据抓取方法、装置、设备及存储介质,用于简化抓包流程。
一方面,本申请实施例提供一种数据抓取方法,该方法包括:获取目标应用的第一启动入口。创建抓包应用的主进程的子进程。根据第一启动入口,在抓包应用的子进程中启动目标应用。通过抓包应用获取子进程中运行的目标应用传输的消息。
由于在抓包应用的子进程中启动目标应用,因此抓包应用对目标应用具有最高权限,因此抓包应用可以基于获取到的最高权限对目标应用传输的消息进行抓取。可以看出,该方案中无需使用笔记本电脑即可实现对目标应用的数据的抓取,过程较为简便。
在一种可能的实施方中,根据第一启动入口,在抓包应用的子进程中启动目标应用,包括:
劫持目标应用的系统端在客户端的本地代理接口;
基于劫持的本地代理接口,以及第一启动入口,在抓包应用的子进程中启动目标应用。
在一种可能的实施方中,基于劫持的本地代理接口,以及第一启动入口,在抓包应用的子进程中启动目标应用,包括:
获取抓包应用的清单文件中已配置的第二启动入口;
向系统端请求在抓包应用的子进程中启动第二启动入口;
在系统端验证通过后,在抓包应用的子进程中启动目标应用的第一启动入口。
在一种可能的实施方中,向系统端请求在抓包应用的子进程中启动第二启动入口,包括:
通过劫持的本地代理接口,向系统端发送第二系统调用请求;
其中,第二系统调用请求用于请求在抓包应用中启动第二启动入口。
在一种可能的实施方中,在系统端验证通过后,在抓包应用的子进程中启动目标应用的第一启动入口,包括:
通过劫持的本地代理接口,接收系统端返回的第二系统验证通过消息,第二系统验证通过消息指示系统端允许在抓包应用中启动第二启动入口;
通过劫持的本地代理接口,基于接收到的第二系统验证通过消息,向目标应用的客户端发送第一系统验证通过消息,第一系统验证通过消息指示系统端允许在抓包应用中启动第一启动入口。
在一种可能的实施方中,通过劫持的本地代理接口,基于接收到的第二系统验证通过消息,向目标应用的客户端发送第一系统验证通过消息之前,还包括:
通过目标应用的客户端向本地代理接口发送第一系统调用请求;
其中,第一系统调用请求用于请求在抓包应用中启动第一启动入口。
在一种可能的实施方中,通过抓包应用获取子进程中运行的目标应用传输的消息,包括:
在超文本传输协议HTTP层抓取目标应用的客户端向系统端发送的第一HTTP消息;和/或,在HTTP层抓取目标应用的系统端向客户端发送的第二HTTP消息。
在一种可能的实施方中,在HTTP层抓取目标应用的客户端向系统端发送的第一HTTP消息;和/或,在HTTP层抓取目标应用的系统端向客户端发送的第二HTTP消息,包括:
劫持系统的HTTP模块;
基于劫持的HTTP模块,抓取第一HTTP消息和/或第二HTTP消息。
在一种可能的实施方中,获取目标应用的启动信息,包括:
获取目标应用的清单文件;
从目标应用的清单文件中获取目标应用的第一启动入口。
一方面,本申请实施例提供一种数据抓取装置,该装置包括处理模块和抓包模块。处理模块用于获取目标应用的第一启动入口,创建抓包应用的主进程的子进程,根据第一启动入口,在抓包应用的子进程中启动目标应用。抓包模块,用于通过抓包应用获取子进程中运行的目标应用传输的消息。
由于在抓包应用的子进程中启动目标应用,因此抓包应用对目标应用具有最高权限,因此抓包应用可以基于获取到的最高权限对目标应用传输的消息进行抓取。可以看出,该方案中无需使用笔记本电脑即可实现对目标应用的数据的抓取,过程较为简便。
在一种可能的实施方中,处理模块,具体用于:劫持目标应用的系统端在客户端的本地代理接口;基于劫持的本地代理接口,以及第一启动入口,在抓包应用的子进程中启动目标应用。
在一种可能的实施方中,处理模块,具体用于:获取抓包应用的清单文件中已配置的第二启动入口;向系统端请求在抓包应用的子进程中启动第二启动入口;在系统端验证通过后,在抓包应用的子进程中启动目标应用的第一启动入口。
在一种可能的实施方中,处理模块,具体用于:通过劫持的本地代理接口,向系统端发送第二系统调用请求;其中,第二系统调用请求用于请求在抓包应用中启动第二启动入口。
在一种可能的实施方中,处理模块,具体用于:通过劫持的本地代理接口,接收系统端返回的第二系统验证通过消息,第二系统验证通过消息指示系统端允许在抓包应用中启动第二启动入口;通过劫持的本地代理接口,基于接收到的第二系统验证通过消息,向目标应用的客户端发送第一系统验证通过消息,第一系统验证通过消息指示系统端允许在抓包应用中启动第一启动入口。
在一种可能的实施方中,处理模块,还用于:通过目标应用的客户端向本地代理接口发送第一系统调用请求;其中,第一系统调用请求用于请求在抓包应用中启动第一启动入口。
在一种可能的实施方中,抓包模块,具体用于:在超文本传输协议HTTP层抓取目标应用的客户端向系统端发送的第一HTTP消息;和/或,在HTTP层抓取目标应用的系统端向客户端发送的第二HTTP消息。
在一种可能的实施方中,抓包模块,具体用于:劫持系统的HTTP模块;基于劫持的HTTP模块,抓取第一HTTP消息和/或第二HTTP消息。
在一种可能的实施方中,处理模块,具体用于:获取目标应用的清单文件;从目标应用的清单文件中获取目标应用的第一启动入口。
一方面,本申请实施例提供一种电子设备,其包括处理器和存储器,其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行上述任一种数据抓取方法的步骤。
一方面,本申请实施例提供一种计算机存储介质,计算机存储介质存储有计算机指令,当计算机指令在计算机上运行时,使得计算机执行上述任一种数据抓取方法的步骤。
一方面,本申请实施例提供一种计算机程序产品,计算机程序产品中包括计算机程序/指令,当所述计算机程序/指令在计算机上运行时,使得计算机执行上述任一种数据抓取方法的步骤。
由于本申请实施例采用上述技术方案,至少具有如下技术效果:
由于在抓包应用的子进程中启动目标应用,因此抓包应用对目标应用具有最高权限,因此抓包应用可以基于获取到的最高权限对目标应用传输的消息进行抓取。可以看出,该方案中无需使用笔记本电脑即可实现对目标应用的数据的抓取,过程较为简便。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种可能的系统架构图;
图2为本申请实施例提供的一种数据抓取方法的流程示意图;
图3为本申请实施例提供的Android系统沙箱机制的示意图;
图4为本申请实施例提供的一种可能的在抓包应用的子进程中启动目标应用的方法流程示意图;
图5为本申请实施例提供的又一种可能的在抓包应用的子进程中启动目标应用的方法流程示意图;
图6为本申请实施例中抓包应用的抓取目标应用传输的消息的位置的示意图;
图7为本申请实施例提供的一种数据抓取装置的结构框图;
图8为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
参考图1,其为本申请实施例适用的一种可能的系统架构图,该系统架构至少包括终端设备100。终端设备100上可以运行抓包应用和目标应用。
终端设备100可以采用安卓(Android)系统,终端设备100可以采用C/S架构,即客户端/系统端(Client/Server)架构。该C/S架构中,应用的运行及访问系统资源可以通过系统服务提供的本地代理来实现的,每个应用可以在自己的进程中初始化一个系统服务的本地代理,通过进程间通信或者跨进程通信(Inter-Process Communication,IPC)技术实现系统服务的通信。
如图1所示,终端设备100中可以包括客户端(client)101和系统端(server)102。客户端101和系统端102之间可以通过本地代理接口103进行信令交互。本地代理接口103可以理解为上述系统服务提供的本地代理,也可以称为系统端在客户端的本地代理接口。
其中,客户端101、系统端103、和本地代理接口103中的任一项可以理解为终端设备100中的模块、单元、芯片或电路等。
终端设备100可以包括具有无线连接功能的手持式设备、或连接到无线调制解调器的处理设备。该终端设备100可以包括手机,平板电脑(tablet computer)、笔记本电脑等可以运行应用的设备。
本申请实施例中,终端设备100可以运行抓包应用,并且将目标应用运行在抓包应用的子进程中,从而使抓包应用对目标应用具有最高权限,因此抓包应用可以基于获取到的最高权限对目标应用传输的消息进行抓取。可以看出,该方案中无需使用笔记本电脑即可实现对目标应用的数据的抓取,过程较为简便。
下面结合附图对本申请实施例进行进一步的描述。下文中所用的词语“示例性”的意思为“用作例子、实施例或说明性”。作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
文中的术语“第一”、“第二”仅用于描述目的,而不能理解为明示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
基于图1的系统架构图,图2示例性示出了本申请实施例提供了一种数据抓取方法的流程示意图,如图2所示,该方法的流程由图1所示的终端设备100执行,比如可以有终端设备内部的单元、模块、电路或芯片执行。该方法包括以下步骤:
S201,获取目标应用的第一启动入口。
S202,创建抓包应用的主进程的子进程。
S203,根据第一启动入口,在抓包应用的子进程中启动目标应用。
S204,通过抓包应用获取子进程中运行的目标应用传输的消息。
通过上述方案可以看出,由于在抓包应用的子进程中启动目标应用,因此抓包应用对目标应用具有最高权限,因此抓包应用可以基于获取到的最高权限对目标应用传输的消息进行抓取。可以看出,该方案中无需使用笔记本电脑即可实现对目标应用的数据的抓取,过程较为简便。
需要注意的是,本申请实施例中抓包应用是指用于抓取目标应用对应的数据的应用,该应用也可以称为其他名称,比如测试应用、数据抓取应用或第一应用等。本申请实施例中的目标应用是指测试应用,目标应用可以为终端设备上安装的一个或多个应用的中的一个,该目标应用也可以称为其他名称,比如被测试应用或第二应用等。
在上述S201中可以基于Android系统沙箱机制获取目标应用的第一启动入口。比如可以获取目标应用的清单文件,从目标应用的清单文件中获取目标应用的第一启动入口。
图3示例性示出了Android系统沙箱机制的示意图,如图3所示,Android系统中的应用(比如图3中示出的应用_1和应用_2)可以基于4大组件作为运行单位,它们所在进程是可以在清单文件(比如Androidmainfest.xml)文件中指定。此外应用的需要被运行的组件也需要在清单文件中配置。
Android的一个应用的启动可以理解为:将一个配置在清单文件中启动入口(也可以称为activity)运行在指定的进程中。
基于上述内容,在上述S201中,终端设备(比如终端设备的抓包应用中的处理模块)可以通过xml协议解析到目标应用的清单文件,并从目标应用的清单文件中获取到目标应用的启动入口。为了区分,本申请实施例中将目标应用的启动入口称为第一启动入口。
Android系统是基于linux的用户操作系统,系统可以为每一个已安装的应用分配一个唯一标识,该标识可以称为uid,可以根据用户标识和应用标识生成。比如图3中的应用_1的uid为1111,应用_2的uid为2222,。不同应用之间相互隔离互不影响,所以拥有不同uid的应用不能相互访问其资源(包括内存中的文件、内存数据、磁盘数据、应用组件等),(注:拥有root权限的应用除外)。比如图3中应用_1和应用_2不能互相访问对方的内存中的文件和组件,但是应用_1的主进程可以访问该主进程下的各个子进程的内存中的文件和组件。图3中仅仅是以两个应用进行举例,图3中以应用_1和应用_2均fork出n个子进程为例进行展示,n为正整数,实际应用中两个应用fork出的子进程的数量可以相同个,也可以不同,每个子进程可以对应一块内存。同一个uid下面可以fork出多个进程,主进程可以操作fork出来的子进程的内存数据。基于此,当目标应用运行在抓包应用fork出的子进程中,目标应用可以操作运行在子进程中的目标应用的内存数据,抓包应用对目标应用可以具有最高权限。
针对上述S203,比如可以利用Android系统的多进程机制、应用运行机制、反射、动态代理技术、Android系统的沙箱机制或类加载机制等中的一项或多项将目标应用运行在抓包应用的主进程的子进程中。下面提供一种可能的在抓包应用的子进程中启动目标应用的实施方式。该实施方式中,终端设备可以通过抓包应用劫持目标应用的系统端在客户端的本地代理接口。比如可以通过反射技术劫持目标应用的系统端在客户端的本地代理接口。Java反射技术可以支持通过类名、方法名获取对象实例和运行时数据,并提供修改这些数据内容的能力。由于目标应用的客户端和系统端传输的信令均通过本地代理接口,因此可以基于劫持的本地代理接口,以及第一启动入口,在抓包应用的子进程中启动目标应用。
在一种可能的实施方式中,由于Android系统在一个应用中启动一个组件的一个前提是:在该应用的清单文件中配置有该组件。当抓包应用的清单文件中配置有目标应用的第一启动入口的情况下,系统端可以运行抓包应用的子进程中启动该第一启动入口,从而达到在抓包应用的子进程中启动目标应用的目的。
又一种可能的实施方式中,抓包应用的清单文件中可能没有事先配置目标应用的第一启动入口,针对这种情况,终端设备可以获取抓包应用的清单文件中已配置的第二启动入口,通过抓包应用向系统端请求在抓包应用的子进程中启动第二启动入口。由于抓包应用的清单文件中已经配置了第二启动入口,因此抓包应用向系统端请求在抓包应用的子进程中启动第二启动入口,系统端可以验证通过。进一步,抓包应用可以在系统端验证通过后,在抓包应用的子进程中启动目标应用的第一启动入口,比如可以在系统验证通过后将子进程中第二启动入口修改为第一启动入口。比如Java动态代理技术可以支持对java中的接口进行动态代理,在程序运行时替换原有的实现逻辑,进而可以基于此原理,在系统验证通过后将子进程中第二启动入口修改为第一启动入口,从而实现在抓包应用的子进程中启动目标应用的目的。
图4示例性示出了一种可能的在抓包应用的子进程中启动目标应用的方法流程示意图,如图4所示,该方法包括:
S401,通过目标应用的客户端向本地代理接口发送第一系统调用请求。
其中,第一系统调用请求用于请求在抓包应用中启动第一启动入口。
S402,通过劫持的本地代理接口,接收第一系统调用请求;并基于接收到的第一系统调用请求向系统端发送第二系统调用请求;
其中,第二系统调用请求用于请求在抓包应用中启动第二启动入口。
S403,通过劫持的本地代理接口,接收系统端返回的第二系统验证通过消息,第二系统验证通过消息指示系统端允许在抓包应用中启动第二启动入口;
S404,通过劫持的本地代理接口,基于接收到的第二系统验证通过消息,向目标应用的客户端发送第一系统验证通过消息,第一系统验证通过消息指示系统端允许在抓包应用中启动第一启动入口。
图5示例性示出了又一种可能的在抓包应用的子进程中启动目标应用的方法流程示意图,如图5所示,该方法包括:
S501,抓包应用的主进程可以复制目标应用。
S502,抓包应用的主进程并解析目标应用的清单文件,从而获取到目标应用的第一启动入口。
S503,抓包应用的主进程还可以创建(fork)出子进程p1。
由于抓包应用的主进程可以创建出一个或多个子进程,为了区分,可以将该子进程称为子进程p1。该子进程p1即为用于启动目标应用的子进程。
S504,抓包应用可以启动抓包应用的清单文件中预先配置的第二启动入口,并将其的进程配置为该子进程p1。
S505,抓包应用的子进程劫持本地代理接口。
S506,当系统验证通过后,抓包应用可以将子进程p1拦截启动回调,并修改为目标应用的真实的第一启动入口。
本申请实施例中由于抓包应用的清单文件中提前配置有第二启动入口,因此当向系统端请求在该抓包应用的子进程p1中启动第二启动入口的情况下,系统端可以验证通过。当系统验证通过后,抓包应用可以将子进程p1拦截启动回调,并修改为目标应用的真实的第一启动入口,即将子进程p1中原本应启动的第二启动入口修改为目标应用的第一启动入口,从而可以实现在抓包应用的子进程p1中启动目标应用的效果。
进一步,为了能创建正确的目标应用的其他组件,还可以在将第二启动入口修改为第一启动入口之后调用系统方法启动第一启动入口的相关组件。此时目标应用将会运行在抓包应用的子进程p1中,由于子进程p1由我们的抓包应用fork而出,因此抓包应用对该子进程p1中运行的目标应用具有最高权限。
在上述S204中,由于抓包应用对该子进程p1中运行的目标应用具有最高权限,因此抓包应用可以获取到目标应用传输的消息。在一种可能的实施方式中,终端设备可以通过抓包应用在HTTP层抓取目标应用的客户端向系统端发送的第一HTTP消息。第一HTTP消息也可以称为第一HTTP报文。在又一种可能的实施方式中,终端设备可以通过抓包应用在HTTP层抓取目标应用的系统端向客户端发送的第二HTTP消息。第二HTTP消息也可以称为第二HTTP报文。
在一种可能的实施方式中,抓包应用可以劫持系统的HTTP模块。基于劫持的HTTP模块,抓取第一HTTP消息和/或第二HTTP消息。比如可以利用Android系统的沙箱机制或反射技术等中的一项或多项对目标应用的HTTP模块进行劫持和/或替换,以便获取来自目标应用基于HTTP协议传输的消息。
通过上述内容可以看出,本申请实施例中可以基于抓包应用获取到的对目标应用拥有的最高权限,以及结合Android中HTTP模块的实现方式,抓包应用可以通过反射技术劫持(或替换)系统的HTTP模块。由于目标应用发送的第一HTTP消息都会发送至系统的HTTP模块,而抓包应用劫持了系统的HTTP模块,因此抓包应用可以劫持目标应用发送出的第一HTTP消息。进一步,抓包应用还可以将劫持的第一HTTP消息格式化输出,达到抓取第一HTTP消息的目的。
又一方面,由于系统端发送至客户端的第二HTTP消息都会先传输至系统的HTTP模块,因此抓包应用可以劫持系统端发送给客户端的第二HTTP消息。进一步,抓包应用还可以将劫持的第二HTTP消息格式化输出,达到抓取第二HTTP消息的目的。
图6示例性示出了本申请实施例中抓包应用的抓取目标应用传输的消息的位置的示意图。
如图6所示,客户端发送的第一HTTP请求交给HTTP处理栈进行添加HTTP协议头等处理,处理之后交由安全套接字协议(Secure Sockets Layer,SSL)处理栈。SSL处理栈可以对第一HTTP请求添加SSL头,并对第一HTTP请求进行加密处理,处理后的第一HTTP请求交由传输控制/网际协议(transfer controln protocol/internet protocol,TCP/IP)处理栈继续处理。TCP/IP处理栈可以对接收到的第一HTTP请求添加TCP/IP协议头,并将处理后的第一HTTP请求交由网络层处理栈。进一步由网络层处理栈发送给系统端。
从图6可以看出,客户端发送的第一HTTP请求在交给HTTP处理栈处理之前,被抓包应用劫持。由于抓包应用劫持第一HTTP消息的时机较早,即第一HTTP消息还未加密前便被抓包应用劫持,因此可以不用导入证书即可获取到第一HTTP消息的原始请求消息。进一步,抓包应用可以基于Android中HTTP实现原理,提取第一HTTP消息展示并输出。另一方面,抓包应用还会将劫持的第一HTTP消息交给系统的HTTP模块进行处理,不会对第一HTTP消息的处理进程造成其他影响。
另一方面,从图6可以看出,系统端发送给客户端的第二HTTP消息经过网络层处理栈的处理之后,可以交给TCP/IP处理栈继续处理,以便解析TCP/IP协议头并解析该数据包。进一步TCP/IP处理栈处理后的数据可以继续交给SSL处理栈进行处理,且第二HTTP消息还会在SSL处理栈中解析SSL头,并进行第二HTTP消息的解密。解密后的第二HTTP消息可以继续发送给HTTP处理栈,由HTTP处理栈解析HTTP协议头并进行解包处理。之后,抓包应用劫持到HTTP处理栈处理后的第二HTTP消息,由于该第二HTTP消息已经被解密,因此抓包应用无需导入证书即可得到第二HTTP消息解密后的数据。进一步,抓包应用可以基于Android中HTTP实现原理,提取第二HTTP消息展示并输出。另一方面,抓包应用还可以将劫持的解密后的第二HTTP消息交给目标应用继续处理,不会对第二HTTP消息的处理进程造成其他影响。
上述内容介绍了一种通过劫持HTTP模块对目标应用传输的消息进行抓取的方案,又一种可能的实施方式中,终端设备可以通过抓包应用对系统代理服务创建虚拟网卡,以此来代理终端设备的所有流量。
通过上述内容可以看出,目前对目标应用实现抓包的方案存在以下问题:重依赖外部环境,前置条件繁多且操作复杂。比如必须借助笔记本电脑安装一个HTTP代理软件,终端设备和笔记本电脑必须接入通一个局域网,终端设备必须设置代理服务器为笔记本电脑的IP地址,对于HTTPs的数据包必须在终端设备和笔记本电脑上安装证书。目前对目标应用实现抓包的方案还存在一个问题:对于做了证书校验的目标应用无法抓取其传输的消息。
而本申请实施例中由于可以单独通过终端设备的抓包应用来实现对目标应用的抓包,因此该实现方式可以不依赖笔记本电脑,不依赖手机网络类型,也不需要借助代理软件。另一方面,由于本申请实施例提供的方案中可以劫持加密前的消息以及解密后的消息,因此对于HTTPs协议不需要导入证书,对于做了证书校验的目标应用也可以抓取HTTPs数据包。可以看出,本申请实施例提供的方案在不修改apk包不任何依赖外部条件的前提下,可以更加方便的对基于Android系统开发的应用中所有通过HTTP/HTTPs协议传输的消息(或者称数据包)进行抓取,以便后续分析。
基于相同的技术构思,图7示例性示出了本申请实施例提供的一种数据抓取装置的结构框图,如图7所示,该装置700包括:
处理模块701,用于获取目标应用的第一启动入口,创建抓包应用的主进程的子进程,根据第一启动入口,在抓包应用的子进程中启动目标应用。
抓包模块702,用于通过抓包应用获取子进程中运行的目标应用传输的消息。
在一种可能的实施方式中,处理模块701,具体用于:劫持目标应用的系统端在客户端的本地代理接口;基于劫持的本地代理接口,以及第一启动入口,在抓包应用的子进程中启动目标应用。
在一种可能的实施方式中,处理模块701,具体用于:获取抓包应用的清单文件中已配置的第二启动入口;向系统端请求在抓包应用的子进程中启动第二启动入口;在系统端验证通过后,在抓包应用的子进程中启动目标应用的第一启动入口。
在一种可能的实施方式中,处理模块701,具体用于:通过劫持的本地代理接口,向系统端发送第二系统调用请求;其中,第二系统调用请求用于请求在抓包应用中启动第二启动入口。
在一种可能的实施方式中,处理模块701,具体用于:通过劫持的本地代理接口,接收系统端返回的第二系统验证通过消息,第二系统验证通过消息指示系统端允许在抓包应用中启动第二启动入口;通过劫持的本地代理接口,基于接收到的第二系统验证通过消息,向目标应用的客户端发送第一系统验证通过消息,第一系统验证通过消息指示系统端允许在抓包应用中启动第一启动入口。
在一种可能的实施方式中,处理模块701,具体用于:通过目标应用的客户端向本地代理接口发送第一系统调用请求;其中,第一系统调用请求用于请求在抓包应用中启动第一启动入口。
在一种可能的实施方式中,抓包模块702,具体用于:在超文本传输协议HTTP层抓取目标应用的客户端向系统端发送的第一HTTP消息;和/或,在HTTP层抓取目标应用的系统端向客户端发送的第二HTTP消息。
在一种可能的实施方式中,抓包模块702,具体用于:劫持系统的HTTP模块;基于劫持的HTTP模块,抓取第一HTTP消息和/或第二HTTP消息。
在一种可能的实施方式中,处理模块701,具体用于:获取目标应用的清单文件;从目标应用的清单文件中获取目标应用的第一启动入口。
该实施例的其他相关内容可参见前述实施例的相关描述,在此不再赘述。
基于相同的技术构思,本申请实施例提供了一种计算机设备,计算机设备可以是终端或服务器,如图8所示,包括至少一个处理器801,以及与至少一个处理器连接的存储器802,本申请实施例中不限定处理器801与存储器802之间的具体连接介质,图8中处理器801和存储器802之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本申请实施例中,存储器802存储有可被至少一个处理器801执行的指令,至少一个处理器801通过执行存储器802存储的指令,可以执行上述数据抓取方法中所包括的步骤。
其中,处理器801是计算机设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器802内的指令以及调用存储在存储器802内的数据,从而进行测试。可选的,处理器801可包括一个或多个处理单元,处理器801可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器801中。在一些实施例中,处理器801和存储器802可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器801可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器802作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器802可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器802是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器802还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于同一发明构思,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当程序在计算机设备上运行时,使得计算机设备执行上述数据抓取方法的步骤。
基于同一发明构思,本申请实施例提供了一种计算机程序产品,所述计算机程序产品中包括计算机程序/指令,当所述计算机程序/指令在计算机上运行时,使得计算机设备执行上述数据抓取方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (13)
1.一种数据抓取方法,其特征在于,包括:
获取目标应用的第一启动入口;
创建抓包应用的主进程的子进程;
根据所述第一启动入口,在所述抓包应用的所述子进程中启动所述目标应用;
通过所述抓包应用获取所述子进程中运行的所述目标应用传输的消息。
2.如权利要求1所述的方法,其特征在于,所述根据所述第一启动入口,在所述抓包应用的所述子进程中启动所述目标应用,包括:
劫持所述目标应用的系统端在客户端的本地代理接口;
基于劫持的所述本地代理接口,以及所述第一启动入口,在所述抓包应用的所述子进程中启动所述目标应用。
3.如权利要求2所述的方法,其特征在于,所述基于劫持的所述本地代理接口,以及所述第一启动入口,在所述抓包应用的所述子进程中启动所述目标应用,包括:
获取所述抓包应用的清单文件中已配置的第二启动入口;
向系统端请求在所述抓包应用的所述子进程中启动所述第二启动入口;
在系统端验证通过后,在所述抓包应用的所述子进程中启动所述目标应用的所述第一启动入口。
4.如权利要求3所述的方法,其特征在于,所述向系统端请求在所述抓包应用的所述子进程中启动所述第二启动入口,包括:
通过劫持的所述本地代理接口,向系统端发送第二系统调用请求;
其中,所述第二系统调用请求用于请求在所述抓包应用中启动第二启动入口。
5.如权利要求4所述的方法,其特征在于,所述在系统端验证通过后,在所述抓包应用的所述子进程中启动所述目标应用的所述第一启动入口,包括:
通过劫持的所述本地代理接口,接收系统端返回的第二系统验证通过消息,所述第二系统验证通过消息指示系统端允许在所述抓包应用中启动所述第二启动入口;
通过劫持的所述本地代理接口,基于接收到的所述第二系统验证通过消息,向所述目标应用的客户端发送第一系统验证通过消息,所述第一系统验证通过消息指示系统端允许在所述抓包应用中启动所述第一启动入口。
6.如权利要求5所述的方法,其特征在于,所述通过劫持的所述本地代理接口,基于接收到的所述第二系统验证通过消息,向所述目标应用的客户端发送第一系统验证通过消息之前,还包括:
通过所述目标应用的客户端向所述本地代理接口发送第一系统调用请求;
其中,所述第一系统调用请求用于请求在所述抓包应用中启动所述第一启动入口。
7.如权利要求1-6任一项所述的方法,其特征在于,所述通过所述抓包应用获取所述子进程中运行的所述目标应用传输的消息,包括:
在超文本传输协议HTTP层抓取所述目标应用的客户端向系统端发送的第一HTTP消息;和/或,
在所述HTTP层抓取所述目标应用的所述系统端向所述客户端发送的第二HTTP消息。
8.如权利要求7所述的方法,其特征在于,所述在HTTP层抓取所述目标应用的客户端向系统端发送的第一HTTP消息;和/或,在所述HTTP层抓取所述目标应用的所述系统端向所述客户端发送的第二HTTP消息,包括:
劫持系统的HTTP模块;
基于劫持的所述HTTP模块,抓取所述第一HTTP消息和/或所述第二HTTP消息。
9.如权利要求1-6任一项所述的方法,其特征在于,所述获取目标应用的启动信息,包括:
获取所述目标应用的清单文件;
从所述目标应用的清单文件中获取所述目标应用的第一启动入口。
10.一种数据抓取装置,其特征在于,包括:
处理模块,用于获取目标应用的第一启动入口;创建抓包应用的主进程的子进程;根据所述第一启动入口,在所述抓包应用的所述子进程中启动所述目标应用;
抓包模块,用于通过所述抓包应用获取所述子进程中运行的所述目标应用传输的消息。
11.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行权利要求1~9中任一所述方法的步骤。
12.一种计算机可读存储介质,其特征在于,其包括程序代码,当所述程序代码在电子设备上运行时,所述程序代码用于使所述电子设备执行权利要求1~9中任一所述方法的步骤。
13.一种计算机程序产品,所述计算机程序产品中包括计算机程序/指令,其特征在于,当所述计算机程序/指令在计算机上运行时,使得计算机实现权利要求1~9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111458752.9A CN114138518A (zh) | 2021-12-02 | 2021-12-02 | 一种数据抓取方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111458752.9A CN114138518A (zh) | 2021-12-02 | 2021-12-02 | 一种数据抓取方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114138518A true CN114138518A (zh) | 2022-03-04 |
Family
ID=80386769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111458752.9A Pending CN114138518A (zh) | 2021-12-02 | 2021-12-02 | 一种数据抓取方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138518A (zh) |
-
2021
- 2021-12-02 CN CN202111458752.9A patent/CN114138518A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9928499B2 (en) | Method and system for payment through mobile devices | |
CN111193768B (zh) | 网络数据处理方法、装置、计算机设备和存储介质 | |
CN112243002B (zh) | 数据转发方法、装置、电子设备以及计算机可读介质 | |
CN111090581B (zh) | 智能合约测试方法、装置、计算机设备和存储介质 | |
CN111163095B (zh) | 网络攻击分析方法、网络攻击分析装置、计算设备和介质 | |
CN111818035B (zh) | 一种基于api网关的权限验证的方法及设备 | |
WO2021082661A1 (zh) | 网页截图方法、装置及设备 | |
CN111259364B (zh) | 一种使用国密加密卡的方法、装置、设备及存储介质 | |
CN113672403B (zh) | 信息系统中的接口调用方法及接口调用装置、管理信息系统 | |
EP4224316A1 (en) | Mirror image management method and apparatus | |
CN109725887B (zh) | 基于消息研发框架的数据交互方法、装置及终端设备 | |
CN112100689B (zh) | 一种可信数据处理方法、装置及设备 | |
CN111447273B (zh) | 云处理系统及基于云处理系统的数据处理方法 | |
CN113206850A (zh) | 恶意样本的报文信息获取方法、装置、设备及存储介质 | |
CN110602051B (zh) | 基于共识协议的信息处理方法及相关装置 | |
CN114138518A (zh) | 一种数据抓取方法、装置、设备及存储介质 | |
CN106648770B (zh) | 一种应用程序安装包的生成方法、加载方法及装置 | |
CN114996730A (zh) | 一种数据加解密系统、方法、计算机设备及存储介质 | |
CN111984963B (zh) | 绕过自签证书校验的方法和装置 | |
CN115374207A (zh) | 业务处理方法及装置、电子设备和计算机可读存储介质 | |
CN115277210B (zh) | 令牌获取方法、装置、电子设备和存储介质 | |
CN111506503B (zh) | 基于JMeter的接口签名验证方法及装置、计算设备、存储介质 | |
WO2023159900A1 (zh) | 远程开发的方法及装置 | |
CN116339760A (zh) | 安全控件安装包的获取方法、装置、处理器及电子设备 | |
CN116051218A (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 |