网络数据拦截方法、装置、电子设备及存储介质与流程

文档序号:17071770发布日期:2019-03-08 23:22阅读:204来源:国知局
本发明涉及计算机
技术领域
:,尤其涉及一种网络数据拦截方法、装置、电子设备及存储介质。
背景技术
::随着智能移动终端的快速发展,在移动开发中移动终端需要对后台进行网络请求,在进行网络请求时,无论是进行网络抓包还是网路数据更改,首先都需要拦截网络请求。在现有技术中,为了实现网络请求的拦截,通常需要借助第三方的拦截软件,在同一局域网下,利用拦截软件来修改ip、设置代理,从而实现网络请求的拦截,条件限制多,过程繁琐。技术实现要素:本发明的主要目的在于提供一种网络数据拦截方法、装置、电子设备及存储介质,无需利用第三方拦截软件来拦截网络请求。为实现上述目的,本发明实施例第一方面提供一种网络数据拦截方法,包括:当目标函数接收到网络请求时,获取系统中网络请求方法的子方法,所述目标函数用于接收应用程序发起的网络请求;通过预设转换规则,根据所述子方法得到新子方法,并将所述新子方法添加至所述子方法,以使所述子方法被触发时,所述新子方法跟随所述子方法被触发,所述新子方法的返回参数包括所述网络请求的请求数据,和/或,服务器响应于所述网络请求发送的响应数据;当收到网络数据拦截指令时,所述新子方法跟随所述子方法被触发,拦截所述网络请求的请求数据,和/或,服务器响应于所述网络请求发送的响应数据。本发明实施例第二方面提供一种的装置,包括:获取模块,用于当目标函数接收到网络请求时,获取系统中网络请求方法的子方法,所述目标函数用于接收应用程序发起的网络请求;转换模块,用于通过预设转换规则,根据所述子方法得到新子方法,所述新子方法的返回参数包括所述网络请求的请求数据,和/或,服务器响应于所述网络请求发送的响应数据;添加模块,用于将所述新子方法添加至所述子方法,以使所述子方法被触发时,所述新子方法跟随所述子方法被触发;拦截模块,用于当收到网络数据拦截指令时,所述新子方法跟随所述子方法被触发,拦截所述网络请求的请求数据,和/或,服务器响应于所述网络请求发送的响应数据。本发明实施例第三方面提供了一种电子设备,包括:存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现本发明实施例第一方面提供的网络数据拦截方法。本发明实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例第一方面提供的网络数据拦截方法。从上述本发明实施例可知,本发明提供的网络数据拦截方法、装置、电子设备及存储介质,当目标函数接收到网络请求时,获取系统中网络请求方法的子方法,目标函数用于接收应用程序发起的网络请求,然后,通过预设转换规则,根据该子方法得到新子方法,并将新子方法添加至子方法,只需通过对网络请求方法的子方法进行交换,即可实现对网络的监听,当收到网络数据拦截指令时,新子方法跟随子方法被触发,拦截网络请求的请求数据,和/或,服务器响应于网络请求发送的响应数据,成功进行网络数据拦截,过程简便。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明第一实施例提供的网络数据拦截方法的流程示意图;图2为本发明第二实施例提供的网络数据拦截方法的流程示意图;图3为本发明第三实施例提供的网络数据拦截装置的结构示意图;图4示出了一种电子设备的硬件结构图。具体实施方式为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。请参阅图1,图1为本发明第一实施例提供的网络数据拦截方法的流程示意图,本方法可应用于电子设备中,该电子设备可以是手机、平板电脑(portableandroiddevice,pad),笔记本电脑以及个人数字助理(personaldigitalassistant,pda)等设备,在此不做限制。该方法包括:s101、当目标函数接收到网络请求时,获取系统中网络请求方法的子方法,该目标函数用于接收应用程序发起的网络请求;在操作系统中会通过其提供的接口(api)函数对要运行的程序给予相应的引擎,然后通过该引擎运行程序。对于应用程序发送的网络连接请求,也是要通过特定的目标函数对该网络连接请求进行处理。其中,该操作系统所依托的终端可以为智能手机、平板电脑等,其内部安装有管理和控制终端内硬件与软件资源的操作系统程序,操作系统是保证终端可以进行数据交互的最基本的系统软件,任何其他应用程序都必须在操作系统的支持下才能运行。终端内的应用程序如果需要通过网络(包括无线保真wifi网络、无线广域通信网络如cdma、gprs、3g、4g等网络)发送网络连接请求,则都需要调用终端操作系统所提供的相关目标函数予以实现网络连接请求的发送。当系统发起网络请求时,通过目标函数获取异步网络请求方法的子方法。示例性的,该目标函数为@selector函数。s102、通过预设转换规则,根据该子方法得到新子方法,并将该新子方法添加至子方法,以使该子方法被触发时,该新子方法跟随该子方法被触发,该新子方法的返回参数包括网络请求的请求数据,和/或,服务器响应于网络请求发送的响应数据;将该子方法作为参数来创建一个新的子方法。具体的,将该子方法使用转化为字符换的方法,将子方法转化为字符串。然后,将该字符串随机拼接形成随机字符串,然后,将该随机字符串使用字符串转化方法的方法,将该随机字符串转化为新子方法。其中,该新子方法的返回参数包括网络请求的请求数据,和/或,服务器响应于网络请求发送的响应数据。s103、当收到网络数据拦截指令时,该新子方法跟随子方法被触发,拦截该网络请求的请求数据,和/或,服务器响应于网络请求发送的响应数据。在本发明实施例中,当目标函数接收到网络请求时,获取系统中网络请求方法的子方法,目标函数用于接收应用程序发起的网络请求,然后,通过预设转换规则,根据该子方法得到新子方法,并将新子方法添加至子方法,只需通过对网络请求方法的子方法进行交换,即可实现对网络的监听,当收到网络数据拦截指令时,新子方法跟随子方法被触发,拦截网络请求的请求数据,和/或,服务器响应于网络请求发送的响应数据,成功进行网络数据拦截,过程简便。请参阅图2,图2为本发明第二实施例提供的网络数据拦截方法的流程示意图,本方法可应用于电子设备中,该电子设备可以是手机、平板电脑(portableandroiddevice,pad),笔记本电脑以及个人数字助理(personaldigitalassistant,pda)等设备,在此不做限制。该方法包括:s201、定义一个网络观察类,该网络观察类内包括目标函数;定义一个网络观察类,该网络观察类可以为observe,该网络观察类的主要的作用就是对网络进行监听,包括目标函数、inject函数、dispatch_once_t函数等。可以在网络观察类中设置一个开关,当开关打开的时候进行网络数据拦截,当开关关闭的时候取消网络数据拦截。当开关打开进行网络数据拦截时,则调用inject函数,该函数为自定义函数,用于实现网络数据拦截,dispatch_once_t函数、目标函数等均在该inject函数内实现,实现过程如下述本实施例所述。进一步地,在inject函数内部,首先使用dispatch_once_t函数,创建一个代码块,该函数可保证代码块内的代码在应用程序启动的时候只执行一次,避免代码块被重复执行。s202、当目标函数接收到网络请求时,获取系统中网络请求方法的子方法,该目标函数用于接收应用程序发起的网络请求;当发起网络请求时,示例性的,目标函数为@selector函数,@selector函数接收到网络请求。然后,拿到网络请求方法sendasynchronousrequest,该请求方法是系统发起网络请求方法,再通过@selector函数获取sendasynchronousrequest方法的子方法,该子方法即为selector。s203、通过预设转换规则,根据该子方法得到新子方法;通过预设转换规则,根据子方法selector,得到新子方法asynswizselector。具体的,示例性的,首先使用方法转化为字符串的方法nsstringfromselector,将子方法selector转化为字符串,该字符串可以是一个方法名,例如,pushtoanotherview。然后,随机拼接该字符串pushtoanotherview,得到随机字符串selectorstr,然后使用字符串转化为方法的方法nsselectorfromstring,将该随机字符串selectorstr转化为新子方法asynswizselector。s204、调用方法交换的方法,交换子方法与新子方法;通过nsurlconnection的class方法,拿到nsurlconnection的类名。再通过拿到类的方法objc_getmetaclass,拿到class类。调用函数的增加方法class_addmethod,该函数包括多个参数,参数1:需要增加的类所在的类名class,参数2:新子方法asynswizselector。然后,调用获得函数的方法class_getinstaneemethod,该函数包括参数子方法selector。然后调用方法交换的方法,完成子方法selector和新子方法asynswizselector之间的交换,以使该子方法selector被触发时,该子方法asynswizselector跟随该子方法selector被触发,该子方法asynswizselector的返回参数包括该网络请求的设备标识、响应、获得的数据。其中,nsurlconnection是一个网络访问类,用于发送网络请求。示例性的,方法交换的方法为method_exchangeimplementations,用于方法交换。调用method_exchangeimplementations方法,完成子方法selector和新子方法asynswizselector之间的交换。s205、当收到网络数据拦截指令时,新子方法跟随子方法被触发,拦截网络请求的请求数据,和/或,服务器响应于网络请求发送的响应数据;网络请求的标识requestid与发送网络请求的设备关联,由该设备的标识构成网络请求的标识requestid。更多的,发送完毕之后,为了保证请求是认证的请求,需要构建一个事务凭证transaction,并将这个transaction保存。s206、调用传递函数,将网络请求的请求数据,和/或,服务器响应于网络请求发送的响应数据传递给应用程序。收到网络请求的响应之后,则定义一个代码块,该代码块为sendcompletion,用于发送服务器响应于网络请求发送的响应数据。将网络请求的请求数据,和/或,服务器响应于网络请求发送的响应数据传递给应用程序。具体的,当网络请求发送成功,则在接收到服务器响应于网络请求发送的响应数据之后,在sendcompletion内部调用传递函数recordreceived通知应用程序收到服务器返回的响应。当网络请求发送失败,则将失败的消息使用传递函数recordfail传递给应用程序。在本发明实施例中,当目标函数接收到网络请求时,获取系统中网络请求方法的子方法,目标函数用于接收应用程序发起的网络请求,然后,通过预设转换规则,根据该子方法得到新子方法,并将新子方法添加至子方法,只需通过对网络请求方法的子方法进行交换,即可实现对网络的监听,当收到网络数据拦截指令时,新子方法跟随子方法被触发,拦截网络请求的请求数据,和/或,服务器响应于网络请求发送的响应数据,成功进行网络数据拦截,过程简便。请参阅图3,图3为本发明第三实施例提供的网络数据拦截装置的结构示意图,该装置包括:获取模块301、转换模块302、添加模块303和拦截模块304。获取模块301,用于当目标函数接收到网络请求时,获取系统中网络请求方法的子方法,该目标函数用于接收应用程序发起的网络请求。在操作系统中会通过其提供的接口(api)函数对要运行的程序给予相应的引擎,然后通过该引擎运行程序。对于应用程序发送的网络连接请求,也是要通过特定的目标函数对该网络连接请求进行处理。其中,该操作系统所依托的终端可以为智能手机、平板电脑等,其内部安装有管理和控制终端内硬件与软件资源的操作系统程序,操作系统是保证终端可以进行数据交互的最基本的系统软件,任何其他应用程序都必须在操作系统的支持下才能运行。终端内的应用程序如果需要通过网络(包括无线保真wifi网络、无线广域通信网络如cdma、gprs、3g、4g等网络)发送网络连接请求,则都需要调用终端操作系统所提供的相关目标函数予以实现网络连接请求的发送。当系统发起网络请求时,通过目标函数获取异步网络请求方法的子方法。示例性的,该目标函数为@selector函数。转换模块302,用于通过预设转换规则,根据该子方法得到新子方法,该新子方法的返回参数包括该网络请求的请求数据,和/或,服务器响应于该网络请求发送的响应数据。将该子方法作为参数来创建一个新的子方法。具体的,将该子方法使用转化为字符换的方法,将子方法转化为字符串。然后,将该字符串随机拼接形成随机字符串,然后,将该随机字符串使用字符串转化方法的方法,将该随机字符串转化为新子方法。其中,该新子方法的返回参数包括网络请求的请求数据,和/或,服务器响应于网络请求发送的响应数据。示例性的,通过预设转换规则,根据子方法selector,得到子方法asynswizselector。具体的,首先使用方法转化为字符串的方法nsstringfromselector,将子方法selector转化为字符串,然后,随机拼接该字符串,得到随机字符串selectorstr,然后使用字符串转化为方法的方法nsselectorfromstring,将该随机字符串selectorstr转化为新子方法asynswizselector。通过nsurlconnection的class方法,拿到nsurlconnection的类名。再通过拿到类的方法objc_getmetaclass,拿到class类。调用函数的增加方法class_addmethod,该函数包括多个参数,参数1:需要增加的类所在的类名class,参数2:新子方法asynswizselector。然后,调用获得函数的方法class_getinstancemethod,该函数包括参数子方法selector。然后调用方法交换的方法,完成子方法selector和新子方法asynswizselector之间的交换,以使该子方法selector被触发时,该子方法asynswizselector跟随该子方法selector被触发,该子方法asynswizselector的返回参数包括该网络请求的设备标识、响应、获得的数据。添加模块303,用于将该新子方法添加至该子方法,以使该子方法被触发时,该新子方法跟随该子方法被触发。拦截模块304,用于当收到网络数据拦截指令时,该新子方法跟随该子方法被触发,拦截该网络请求的请求数据,和/或,服务器响应于该网络请求发送的响应数据。在本发明实施例中,当目标函数接收到网络请求时,获取系统中网络请求方法的子方法,目标函数用于接收应用程序发起的网络请求,然后,通过预设转换规则,根据该子方法得到新子方法,并将新子方法添加至子方法,只需通过对网络请求方法的子方法进行交换,即可实现对网络的监听,当收到网络数据拦截指令时,新子方法跟随子方法被触发,拦截网络请求的请求数据,和/或,服务器响应于网络请求发送的响应数据,成功进行网络数据拦截,过程简便。请参见图4,图4示出了一种电子设备的硬件结构图。本实施例中所描述的电子设备,包括:存储器41、处理器42及存储在存储器41上并可在处理器上运行的计算机程序,处理器执行该程序时实现前述图1~图4所示实施例中描述的头像列表展示方法。进一步地,该电子设备还包括:至少一个输入设备43;至少一个输出设备44。上述存储器41、处理器42输入设备43和输出设备44通过总线45连接。其中,输入设备43具体可为摄像头、触控面板、物理按键或者鼠标等等。输出设备44具体可为显示屏。存储器41可以是高速随机存取记忆体(ram,randomaccessmemory)存储器,也可为非不稳定的存储器(non-volatilememory),例如磁盘存储器。存储器41用于存储一组可执行程序代码,处理器42与存储器41耦合。进一步地,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是设置于上述各实施例中的终端中,该计算机可读存储介质可以是前述图4所示实施例中的存储器。该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现前述图1或图2所示实施例中描述的网络数据拦截方法。进一步地,该计算机可存储介质还可以是u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来。需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。以上为对本发明所提供的一种网络数据拦截方法、装置、电子设备及存储介质的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1