一种网络请求的处理方法及装置与流程

文档序号:14478783阅读:149来源:国知局

本发明涉及互联网技术领域,尤其涉及一种网络请求的处理方法及装置。



背景技术:

虚拟专用网络(virtualprivatenetwork,简称vpn)指的是在公用网络上建立专用网络的技术。vpn网络可以理解成是虚拟出来的企业内部专线。它可以通过特殊加密的通讯协议连接,在internet上的位于不同地方的两个或多个企业内部网之间建立一条专有的通讯线路。一般地,vpn网络中的终端在开启vpn服务后,在该终端内的所有应用的网络请求将由虚拟网卡获取并发送至vpn代理服务器,再由vpn代理服务器将网络请求转发至目标服务器。

然而这种由vpn代理服务器处理终端应用所有网络请求的方式,往往是终端在开启vpn服务后,会将所获取的网络请求全部发送至一个指定的vpn代理服务器,由vpn代理服务器对网络请求进行解析、转发并接收目标服务器反馈的请求结果。由于终端发出的数据只指向了一个功能单一代理服务器,所以往往不能满足用户的全部需求。例如,用户在使用android客户端时,需要连接两个代理服务器,公司的代理服务器和国外的代理服务器,以满足不同的访问需求。在这种情况下,使用常规的代理技术是难以实现的。



技术实现要素:

有鉴于此,本发明提供一种网络请求的处理方法及装置,主要目的在于在开启vpn服务时根据网络请求访问的目标服务器选择有效的代理服务器,以快速响应该网络请求。

为达到上述目的,本发明主要提供如下技术方案:

一方面,本发明提供了一种网络请求的处理方法,该方法包括:

在虚拟专用网络中获取终端应用的网络请求;

解析所述网络请求,得到所述网络请求访问的目标服务器;

判断是否存在向所述目标服务器成功转发过网络请求的代理服务器,所述代理服务器是与所述终端连接的多个虚拟专用网络服务器中的一个;

若存在,则将所述网络请求发送至所述代理服务器,以通过所述代理服务器将所述网络请求转发至所述目标服务器。

优选的,所述判断是否存在向所述目标服务器成功转发过网络请求的代理服务器包括:

获取与所述终端连接的多个代理服务器的转发列表,所述转发列表中记录有代理服务器成功转发网络请求的服务器信息;

逐一判断所述目标服务器是否在所述转发列表中。

优选的,当不存在向所述目标服务器成功转发过网络请求的代理服务器时,所述方法还包括:

将所述网络请求发送至目标服务器;

若发送至目标服务器失败,则将所述网络请求逐一发送至与终端连接的多个代理服务器,由代理服务器转发所述网络请求;

若代理服务器转发成功,则将所述网络请求访问的目标服务器添加至所述代理服务器的转发列表中;

若没有代理服务器转发成功,则提示所述网络请求发送失败。

优选的,在将所述网络请求发送至所述代理服务器后,所述方法还包括:

接收所述代理服务器发送的所述网络请求的反馈数据。

优选的,所述在虚拟专用网络中获取终端应用的网络请求包括:

利用终端中的虚拟网卡在虚拟专用网络中获取终端应用的网络请求;

提取所述虚拟网卡所获取的网络请求。

优选的,所述解析所述网络请求,得到所述网络请求访问的目标服务器包括:

解析所述网络请求,得到目标地址和目标端口号;

根据所述目标地址和目标端口号确定所述目标服务器。

另一方面,本发明还提供了一种网络请求的处理装置,该装置包括:

获取单元,用于在虚拟专用网络中获取终端应用的网络请求;

解析单元,用于解析所述获取单元获取的网络请求,得到所述网络请求访问的目标服务器;

判断单元,用于判断是否存在向所述解析单元得到的目标服务器成功转发过网络请求的代理服务器,所述代理服务器是与所述终端连接的多个虚拟专用网络服务器中的一个;

发送单元,用于当所述判断单元判断存在向所述目标服务器成功转发过网络请求的代理服务器时,将所述网络请求发送至所述代理服务器。

优选的,所述判断单元包括:

获取模块,用于获取与所述终端连接的多个代理服务器的转发列表,所述转发列表中记录有代理服务器成功转发网络请求的服务器信息;

判断模块,用于逐一判断所述目标服务器是否在所述获取模块获取的转发列表中。

优选的,所述装置还包括:

所述发送单元还用于,当所述判断单元判断不存在向所述目标服务器成功转发过网络请求的代理服务器时,将所述网络请求发送至目标服务器;

分发单元,用于当所述发送单元将所述网络请求向目标服务器发送失败时,将所述网络请求逐一发送至与终端连接的多个代理服务器,由代理服务器转发所述网络请求;

添加单元,用于当有代理服务器转发成功时,将所述网络请求访问的目标服务器信息添加至所述代理服务器的转发列表中;

提示单元,用于当没有代理服务器转发成功时,提示所述网络请求发送失败。

优选的,所述装置还包括:

接收单元,用于在所述发送单元将网络请求发送至所述代理服务器后,接收所述代理服务器发送的所述网络请求的反馈数据。

优选的,所述获取单元包括:

获取模块,用于利用终端中的虚拟网卡在虚拟专用网络中获取终端应用的网络请求;

提取模块,用于提取所述获取模块获取的网络请求。

优选的,所述解析单元包括:

解析模块,用于解析所述网络请求,得到目标地址和目标端口号;

确定模块,用于根据所述解析模块得到的目标地址和目标端口号确定所述目标服务器。

依据上述本发明所提出的一种网络请求的处理方法及装置,是在vpn服务开启的情况下,通过在终端本地获取并解析终端应用的网络请求来确定网络请求所访问的目标服务器,再通过判断访问该目标服务器是否需要由代理服务器转发该网络请求,来确定将网络请求直接发送至目标服务器或者是发送至多个代理服务器中的一个进行转发。相对于现有的只能将网络请求发送至指定的一个vpn代理服务器相比,本发明实现了在终端本地解析网络请求,并根据解析的结果来选择如何发送该网络请求能够得到最快的响应,特别是对于连接有多个vpn代理服务器需求的终端,本发明提供了一种在终端中智能选择vpn代理服务器的方法,实现了根据网络请求的内容来选择不同vpn代理服务器进行转发操作的方式,使得终端能够同时使用多个vpn代理服务器处理不同的网络请求。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了本发明实施例提出的一种网络请求的处理方法流程图;

图2示出了本发明实施例提出的另一种网络请求的处理方法流程图;

图3示出了本发明实施例提出的一种网络请求的处理装置组成框图;

图4示出了本发明实施例提出的另一种网络请求的处理装置组成框图。

具体实施方式

下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。

本发明实施例提供了一种网络请求的处理方法,如图1所示,该方法应用于能够使用vpn网络服务功能的终端内,实现有选择地发送终端应用的网络请求,对此本发明实施例提供以下具体步骤:

101、在vpn网络中获取终端应用的网络请求。

目前,使用vpn服务抓包的技术实现一般是在终端开启vpn服务后,系统将自动拦截该终端中所有应用产生的网络请求,并将这些网络请求发往指定的vpn代理服务器中进行处理。具体的,是在终端中创建虚拟网卡,用于终端与vpn代理服务器的通信连接,由该虚拟网卡获取该终端中的所有网络请求。

本步骤中,也是利用虚拟网卡在开启vpn服务时能够获取的所有网络请求的特性,在vpn服务开启的情况下,直接提取虚拟网卡所拦截的网络请求。这些网络请求包括终端系统自身的网络请求以及终端上安装的第三方应用的网络请求。

102、解析所获取的网络请求,得到该网络请求访问的目标服务器。

通过提取虚拟网卡中的网络请求,就可以实现在终端本地对终端应用的网络请求进行解析的操作,而对于解析的方式则需要根据网络请求的具体方式以及框架进行对应的解析操作,具体的解析方式不论是在终端侧或是在vpn代理服务器侧都是相同的,也是现有非常成熟的常规操作,因此,此处不再具体说明。通过解析网络请求所得到的结果,可以得到该网络请求中的目标地址和目标端口号,而目标地址和目标端口号决定了该网络请求所要访问的目标服务器,也就是该目标地址和目标端口号指向对应的目标服务器。通过在终端本地对网络请求的解析操作就可以确定出该网络请求所要访问的目标服务器。

103、判断是否存在向目标服务器成功转发过网络请求的代理服务器。

本步骤中主要是判断存在多个vpn代理服务器时,选择向哪一个vpn代理服务器来转发该网络请求,而判断标准是根据vpn代理服务器是否曾经向该目标服务器成功发送过网络请求。

在实际应用中,要确定一个服务器是否可以访问需要在终端本地保存能够访问或者曾经访问过的服务器信息,而由于目标服务器的数量众多,在终端维护这些服务器信息的方式并不实用,为此,本发明实施例所采用的是确定与该终端连接的所有vpn代理服务器能够向哪些服务器转发网络请求,若这些服务器中包含有目标服务器时,就确定该网络请求需要由vpn代理服务器进行转发,而当这些服务器中不包含该目标服务器时,则可以确定当前所连接的vpn代理服务器均没有向目标服务器发送过网络请求,也就是说vpn代理服务器不一定能够成功转发该网络请求,此时,就可以首先尝试向目标服务器直接发送该网络请求。

104、将网络请求发送至vpn代理服务器。

本步骤是在步骤103判断存在向目标服务器成功转发过网络请求的vpn代理服务器后所执行的发送操作。其中,在发送网络请求的同时还可以将在终端解析的结果一同发送给vpn代理服务器,以便vpn代理服务器能够根据解析结果直接将网络请求转发至目标服务器中。

此外,在向vpn代理服务器发送网络请求时,由于存在多个vpn代理服务器,因此,需要先确定能够转发网络请求的vpn代理服务器,再将网络请求发送至该vpn代理服务器中进行转发操作。

结合上述的实现方式可以看出,本发明实施例所采用的网络请求的处理方法,是在vpn服务开启的情况下,通过在终端本地获取并解析终端应用的网络请求来确定网络请求所访问的目标服务器,再通过判断访问该目标服务器是否需要由代理服务器转发该网络请求,来确定将网络请求直接发送至目标服务器或者是发送至多个代理服务器中的一个进行转发。相对于现有的只能将网络请求发送至指定的一个vpn代理服务器相比,本发明实施例实现了在终端本地解析网络请求,并根据解析的结果来选择如何发送该网络请求能够得到最快的响应,特别是对于连接有多个vpn代理服务器需求的终端,本发明实施例提供了一种在终端中智能选择vpn代理服务器的方法,实现了根据网络请求的内容来选择不同vpn代理服务器进行转发操作的方式,使得终端能够同时使用多个vpn代理服务器处理不同的网络请求。

以下为了更加详细地说明本发明提出的一种网络请求的处理方法,特别是在vpn服务开启后,终端在获取应用的网络请求后,如何选择该网络请求的发送路径进行具体说明,如图2所示,该方法所包括的步骤为:

201、在vpn网络中获取终端应用的网络请求。

利用终端中建立的虚拟网卡获取该终端所有的网络请求。本步骤的主要内容同上述实施例中的步骤101,具体可参见上述的步骤,此处不再赘述。

202、解析所获取的网络请求,得到该网络请求访问的目标服务器。

本步骤中,通过从解析结果中提取网络请求中的目标地址和目标端口号,来确定所要访问的目标服务器。例如,通过解析网络请求的报文,提取报文中记录目标地址和目标端口号字段的内容来确定目标服务器的访问地址以及访问端口号。

203、获取与终端连接的多个vpn代理服务器的转发列表,并逐一判断网络请求所访问的目标服务器是否在该转发列表中。

其中,转发列表是记录有vpn代理服务器成功转发网络请求的服务器信息的列表,该列表中记录的服务器信息包括:服务器的名称或ip地址。一般的,每个vpn代理服务器中都会保存有一个转发列表,用于记录该vpn代理服务器所能够访问的目标服务器。同时,终端中也会同步vpn代理服务器中的转发列表,以判断网络请求是否需要由vpn代理服务器进行转发操作。

在终端与多个vpn代理服务器相连接时,终端将获取所有vpn代理服务器的转发列表,并且,用步骤202中得到的目标服务器逐一地与转发列表中所保存的服务器进行匹配。若匹配成功,则说明该转发列表所对应的vpn代理服务器能够转发该网络请求。其中,若存在多个vpn代理服务器都能够转发该网络请求时,终端可以进一步的通过分析各个vpn代理服务器当前的具体状态来确定向哪一个vpn代理服务器发送该网络请求,例如,通过vpn代理服务器当前的负载,或者链路的数据传输速率等因素来选择最适合的vpn代理服务器。

204、将网络请求发送至vpn代理服务器。

在步骤203判断网络请求能够通过vpn代理服务器进行转发时,终端将向所确定的vpn代理服务器发送该网络请求,并且将所述解析的结果一同发送至给vpn代理服务器。

进一步的,在确定有vpn代理服务器转发该网络请求后,终端也将从该vpn代理服务器中获取目标服务器响应该网络请求的反馈数据,也就是说,反馈数据也是通过该vpn代理服务器由目标服务器转发至终端中。

205、将网络请求发送至目标服务器。

在步骤203判断不存在向所述目标服务器成功转发过网络请求的代理服务器时,终端向目标服务器直接发送该网络请求,此时,可能出现两种结果:

一种是发送成功,也就是目标服务器响应了该网络请求,此时,终端将直接得到目标服务器所反馈的响应数据。

另一种是发送失败,即目标服务器没有响应该网络请求,说明该终端不能够直接访问目标服务器,此时,终端可以直接提示该网络请求发送失败,也可以进一步地尝试使用vpn代理服务器进行转发网络请求来访问目标服务器,而对于存在多个vpn代理服务器的情况,终端将根据预置规则来逐一发送网络请求,直至该网路请求得到目标服务器的响应为止。其中,预置规则是根据vpn代理服务器当前的负载或链路的数据传输速率等因素设置的排序规则,用于对vpn代理服务器进行排序,以按顺序发送网络请求。

当与该终端相连接的vpn代理服务器中存在成功转发网络请求的代理服务器时,终端将通过该vpn代理服务器接收目标服务器反馈的响应数据,同时,会在该vpn代理服务器的转发列表中添加该目标服务器的相关信息,相对应的,vpn代理服务器端也会更新本地的转发列表。

而当与该终端相连接的所有vpn代理服务器都转发失败时,终端将提示该网络请求发送失败,以告知使用该终端的用户存在没有响应的网络请求。

进一步的,作为对上述方法的实现,本发明实施例提供了一种网络请求的处理装置,该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。该装置用于能够使用vpn网络服务功能的终端中,进行网络请求解析并根据具体的解析结果选择发送网络请求的路径,具体如图3所示,该装置包括:

获取单元31,用于在虚拟专用网络中获取终端应用的网络请求;

解析单元32,用于解析所述获取单元31获取的网络请求,得到所述网络请求访问的目标服务器;

判断单元33,用于判断是否存在向所述解析单元32得到的目标服务器成功转发过网络请求的代理服务器,所述代理服务器是与所述终端连接的多个虚拟专用网络服务器中的一个;

发送单元34,用于当所述判断单元33判断存在向所述目标服务器成功转发过网络请求的代理服务器时,将所述网络请求发送至所述代理服务器。

进一步的,如图4所示,所述判断单元33包括:

获取模块331,用于获取与终端连接的多个代理服务器的转发列表,所述转发列表中记录有代理服务器成功转发网络请求的服务器信息;

判断模块332,用于逐一判断所述目标服务器是否在所述获取模块331获取的转发列表中。

进一步的,如图4所示,所述装置还包括:

所述发送单元34还用于,当所述判断单元33判断不存在向所述目标服务器成功转发过网络请求的代理服务器时,将所述网络请求发送至目标服务器;

分发单元35,用于当所述发送单元34将所述网络请求向目标服务器发送失败时,将所述网络请求逐一发送至与终端连接的多个代理服务器,由代理服务器转发所述网络请求;

添加单元36,用于当有代理服务器转发成功时,将所述网络请求访问的目标服务器信息添加至所述代理服务器的转发列表中;

提示单元37,用于当没有代理服务器转发成功时,提示所述网络请求发送失败。

进一步的,如图4所示,所述装置还包括:

接收单元38,用于在所述发送单元34将网络请求发送至所述代理服务器后,接收所述代理服务器发送的所述网络请求的反馈数据。

进一步的,如图4所示,所述获取单元31包括:

第一获取模块311,用于利用终端中的虚拟网卡在vpn网络中获取终端应用的网络请求;

提取模块312,用于提取所述第一获取模块311获取的网络请求。

进一步的,如图4所示,所述解析单元32包括:

解析模块321,用于解析所述网络请求,得到目标地址和目标端口号;

确定模块322,用于根据所述解析模块321得到的目标地址和目标端口号确定所述目标服务器。

综上所述,本发明实施例所采用的网络请求的处理方法及装置,是在vpn服务开启的情况下,通过在终端本地获取并解析终端应用的网络请求来确定网络请求所访问的目标服务器,再通过判断访问该目标服务器是否需要由代理服务器转发该网络请求,来确定将网络请求直接发送至目标服务器或者是发送至多个代理服务器中的一个进行转发。相对于现有的只能将网络请求发送至指定的一个vpn代理服务器相比,本发明实施例实现了在终端本地解析网络请求,并根据解析的结果来选择如何发送该网络请求能够得到最快的响应,特别是对于连接有多个vpn代理服务器需求的终端,本发明实施例提供了一种在终端中智能选择vpn代理服务器的方法,实现了根据网络请求的内容来选择不同vpn代理服务器进行转发操作的方式,使得终端能够同时使用多个vpn代理服务器处理不同的网络请求。

所述网络请求的处理装置包括处理器和存储器,上述获取单元、解析单元、判断单元和发送单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现在开启vpn服务时根据网络请求访问的目标服务器选择有效的代理服务器,以快速响应该网络请求。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:在虚拟专用网络中获取终端应用的网络请求;解析所述网络请求,得到所述网络请求访问的目标服务器;判断是否存在向所述目标服务器成功转发过网络请求的代理服务器,所述代理服务器是与所述终端连接的多个虚拟专用网络服务器中的一个;若存在,则将所述网络请求发送至所述代理服务器,以通过所述代理服务器将所述网络请求转发至所述目标服务器。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1