一种传输层代理的代理方法及装置与流程

文档序号:18868321发布日期:2019-10-14 18:53阅读:303来源:国知局
一种传输层代理的代理方法及装置与流程

本发明涉及传输层代理技术领域,特别涉及一种传输层代理的代理方法及装置。



背景技术:

客户端与服务器之间可以由代理服务器作为中转站进行数据传输。例如,客户端发送的访问请求经过代理服务器发送给待访问的服务器。如果客户端发送的访问请求符合代理条件,则由代理服务器发送给待访问的服务器,否则直接发送给服务器。tcp/udp传输层代理所代理的数据若要进行过滤或分发,则利用ip地址和端口的正则匹配方法设置代理条件。由于在传输层代理过程中,传输层只能获取到待访问的服务器的ip地址和端口,如果只使用ip地址和端口的正则匹配,只能支持简单的ip请求,不能适用于域名请求。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种传输层代理方法及装置。所述技术方案如下:

第一方面,提供了一种传输层代理的代理方法,所述方法应用于客户端,所述方法包括:

在应用层发起访问请求之后,获取所述访问请求中的ip地址;

确定所述访问请求中的ip地址对应的域名;

基于所述域名判断所述访问请求是否符合代理条件;

如果符合,则向代理服务器发送所述访问请求。

可选的,所述方法还包括:

应用层发起dns请求,并通过代理接口发送所述dns请求;

通过所述代理接口接收dns服务器基于所述dns请求发送的ip地址;

从所述代理接口获取所述dns请求中的域名以及所述dns服务器发送的ip地址;

建立域名与ip地址的映射关系;

相应的,所述确定所述访问请求中的ip地址对应的域名的步骤,包括:

基于所建立的域名与ip地址的映射关系,确定所述访问请求中的ip地址对应的域名。

可选的,所述通过代理接口发送所述dns请求的步骤,包括:

若操作系统是ios系统,选择oc层的原始dns请求接口,并利用iosmethodswizzling技术,由代理接口接管该原始dns请求接口,通过所述代理接口发送所述dns请求;

若操作系统是android系统,选择java层的原始dns请求接口,并利用java反射技术,由代理接口接管该原始dns请求接口,通过所述代理接口发送所述dns请求;

若采用自定义dns请求,选择native层的原始dns请求接口,并利用函数劫持技术,由代理接口接管该原始dns请求接口,通过所述代理接口发送所述dns请求。

可选的,所述建立域名与ip地址的映射关系的步骤之后,包括:

判断域名与ip地址关系列表中是否已经缓存所建立的域名与ip地址的映射关系;如果否,将所建立的域名与ip地址的映射关系缓存到所述域名与ip地址关系列表中;

相应的,所述确定所述访问请求中的ip地址对应的域名的步骤,包括:

在所述域名与ip地址关系列表中查询所述访问请求中的ip地址;

如果查找成功,则在所述域名与ip地址关系列表中确定所述访问请求中的ip地址对应的域名。

可选的,所述域名与ip地址关系列表缓存在内存的map列表中。

第二方面,提供了一种传输层代理的代理装置,所述装置包括:

发送模块,用于从应用层发起访问请求;

获取模块,用于获取所述访问请求中的ip地址;

确定模块,用于确定所述访问请求中的ip地址对应的域名;

判断模块,用于基于所述域名判断所述访问请求是否符合代理条件;

所述发送模块,还用于当所述访问请求符合代理条件时,向代理服务器发送所述访问请求。

可选的,所述装置还包括接收模块以及创建模块;

所述发送模块,还用于在应用层发起dns请求时,通过代理接口发送所述dns请求;

所述接收模块,用于通过所述代理接口接收dns服务器基于所述dns请求发送的ip地址;

所述创建模块,用于从所述代理接口获取所述dns请求中的域名以及所述dns服务器发送的ip地址,并建立域名与ip地址的映射关系;

相应的,所述确定模块,具体用于基于所建立的域名与ip地址的映射关系,确定所述访问请求中的ip地址对应的域名。

可选的,所述发送模块,具体用于:

若操作系统是ios系统,选择oc层的原始dns请求接口,并利用iosmethodswizzling技术,由代理接口接管该原始dns请求接口,通过所述代理接口发送所述dns请求;

若操作系统是android系统,选择java层的原始dns请求接口,并利用java反射技术,由代理接口接管该原始dns请求接口,通过所述代理接口发送所述dns请求;

若采用自定义dns请求,选择native层的原始dns请求接口,并利用函数劫持技术,由代理接口接管该原始dns请求接口,通过所述代理接口发送所述dns请求。

可选的,所述创建模块,具体用于:

判断域名与ip地址关系列表中是否已经缓存所建立的域名与ip地址的映射关系;如果否,将所建立的域名与ip地址的映射关系缓存到所述域名与ip地址关系列表中;

相应的,所述确定模块,具体用于:

在所述域名与ip地址关系列表中查询所述访问请求中的ip地址;

如果查找成功,则在所述域名与ip地址关系列表中确定所述访问请求中的ip地址对应的域名。

第三方面,提供了一种代理装置,所述代理装置包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述第一方面所述的传输层代理的代理方法。

第四方面,提供了一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述第一方面所述的传输层代理的代理方法。

本发明实施例在利用传输层代理获取到ip地址之后,确定出该ip地址对应的域名,所以可以利用域名匹配方式对代理的数据进行过滤和分发,也能够适用于对域名发起的访问请求,并且由于同一个域名可以对应多个ip地址,域名匹配方式与ip地址匹配方式相比,域名匹配方式可以简化匹配条件的设置。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种网络框架的结构框图;

图2是本发明实施例提供的一种传输层代理的代理方法的流程图;

图3是本发明实施例提供的一种传输层代理的代理方法的流程示意图;

图4是本发明实施例提供的一种建立域名与ip地址映射关系的流程示意图;

图5是本发明实施例提供的一种传输层代理的代理装置的结构框图;

图6是本发明实施例提供的一种电子设备的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本发明实施例提供了一种传输层代理的代理方法,该方法可以应用于图1所示的网络框架中。该网络框架包括代理装置、代理服务器以及待访问服务器。其中,该代理装置可以是客户端。代理装置中内嵌传输层代理sdk(softwaredevelopmentkit,软件开发工具包),代理装置通过调用输层代理sdk执行本发明实施提供的代理方法。所述代理方法包括:代理装置在从应用层发起访问请求之后,获取所述访问请求中的ip地址,然后确定所述访问请求中的ip地址对应的域名,基于所述域名判断所述访问请求是否符合代理条件;如果符合,则向代理服务器发送所述访问请求,由代理服务器向待访问服务器发送访问请求。

参照图2,为本发明实施例提供的一种传输层代理的代理方法的流程图,该方法具体包括以下步骤。

步骤201,代理装置的应用层发送dns请求,并通过代理接口发送所述dns请求。

步骤202,代理装置通过所述代理接口接收dns服务器基于所述dns请求发送的ip地址。

在具体应用中,代理装置在接收到ip地址的同时还接收到端口号。

步骤203,代理装置从所述代理接口获取所述dns请求中的域名以及所述dns服务器发送的ip地址。

如图3所示,应用层发起访问请求的步骤包括:第一步对域名发起dns请求,并获取ip地址,第二步使用所述ip地址发起连接,即连接待访问服务器,发送访问请求,并接收数据。在代理装置内嵌传输层代理sdk的场景中,代理接口接管原始dns请求接口,即利用代理接口替换原始dns请求接口,由代理接口连接dns服务器,代理接口用于代理数据收发。具体的,应用层发起dns请求时,由代理接口截获dns请求,并向dns服务器发送dns请求,然后接收dns服务器返回的ip地址。

如图4所示,本发明实施例适用于ios系统以及android系统的代理装置。若代理装置的操作系统是ios系统,选择oc层的原始dns请求接口,并利用iosmethodswizzling(ios方法变换)技术,由代理接口接管该原始dns请求接口。若代理装置的操作系统是android系统,选择java层的原始dns请求接口,并利用java反射技术,由代理接口接管该原始dns请求接口。代理装置若采用自定义dns请求,选择native层的原始dns请求接口,并利用函数劫持技术,由代理接口接管该原始dns请求接口。

本发明实施例由于直接从代理接口获取域名,所以在传输层代理的代理过程中无需进行应用协议解析,所以本发明实施例能够适用于所有应用协议场景,也能够减少代理本身的代码量。

并且在应用层发起域名的访问请求的情况下,能够从代理接口获取域名与ip地址的映射关系并缓存,所以不需要新开接口传入域名和ip地址关系列表,减少开发难度,提升传输层代理sdk的嵌入效率以及提升域名匹配过程中的运营效率,也不需要代理主动对dns请求进行域名解析,能够简化嵌入操作。

步骤204,代理装置建立域名与ip地址的映射关系。

在实施中可以将域名与ip地址的映射关系缓存在列表,即域名与ip地址关系列表中。该域名与ip地址关系列表可以缓存在内存的map(关联容器)列表中。

代理装置缓存域名与ip地址的映射关系的流程可概括为:代理装置在建立域名与ip地址的映射关系之后,判断域名与ip地址关系列表中是否已经缓存所建立的域名与ip地址的映射关系,具体的,可以通过ip地址查询判断所述列表中是否已经缓存所建立的域名与ip地址的映射关系;如果否,将所建立的域名与ip地址的映射关系缓存到所述域名与ip地址关系列表中,如果是,则无需再进行缓存,并且转下一步;将域名解析结果返回给原始dns请求接口。代理装置在利用代理接口接收到dns服务器发送的域名解析结果,即ip地址以及端口号之后,将接收到的域名解析结果返回给原始dns请求接口,从而完成域名解析流程。

步骤205,代理装置在从应用层发起访问请求之后,获取所述访问请求中的ip地址。

代理装置在接收到dns服务器发送的ip地址之后,可以向该ip地址的服务器发送访问请求,以获取目标数据。

步骤206,代理装置确定所述访问请求中的ip地址对应的域名。

代理装置确定访问请求中的ip地址对应的域名的流程具体包括:在获取到访问请求中的ip地址之后,在所述域名与ip地址关系列表中查询该ip地址;如果查找成功,则在所述域名与ip地址关系列表中确定该ip地址对应的域名;如果没有查找到该ip地址,则结束流程。

步骤207,代理装置基于所述域名判断所述访问请求是否符合代理条件。

代理装置可以利用域名正则表达式对该域名进行正则匹配,如果匹配成功,则说明针对该域名的访问请求符合代理条件;如果没有匹配成功,则说明该访问请求不符合代理条件。

步骤208,如果符合,则向代理服务器发送所述访问请求。

如果所述域名符合代理条件,说明访问所述ip地址的请求需要进行代理,所以代理装置需要向代理服务器发送访问所述ip地址的请求,由代理服务器向待访问服务器发送访问请求。

在实施中,可以设置多个代理条件,也即设置多个域名正则表达式。每个代理条件对应不同功能的代理,例如,加速代理或加密代理。代理装置将域名与每个域名正则表达式进行匹配,每匹配成功,则对访问请求进行相应的代理许可。

本发明实施例在利用传输层代理获取到ip地址之后,确定出该ip地址对应的域名,所以可以利用域名匹配方式对代理的数据进行过滤和分发,也能够适用于对域名发起的访问请求,并且由于同一个域名可以对应多个ip地址,域名匹配方式与ip地址匹配方式相比,域名匹配方式可以简化匹配条件的设置。

参照图5,为本发明实施例提供的一种传输层代理的代理装置的结构框图,所述装置包括:

发送模块501,用于从应用层发起访问请求;

获取模块502,用于获取所述访问请求中的ip地址;

确定模块503,用于确定所述访问请求中的ip地址对应的域名;

判断模块504,用于基于所述域名判断所述访问请求是否符合代理条件;

所述发送模块501,还用于当所述访问请求符合代理条件时,向代理服务器发送所述访问请求。

可选的,所述装置还包括接收模块505以及创建模块506;

所述发送模块501,还用于在应用层发起dns请求时,通过代理接口发送所述dns请求;

所述接收模块505,用于通过所述代理接口接收dns服务器基于所述dns请求发送的ip地址;

所述创建模块506,用于从所述代理接口获取所述dns请求中的域名以及所述dns服务器发送的ip地址,并建立域名与ip地址的映射关系;

相应的,所述确定模块503,具体用于基于所建立的域名与ip地址的映射关系,确定所述访问请求中的ip地址对应的域名。

可选的,所述发送模块501,具体用于:

若操作系统是ios系统,选择oc层的原始dns请求接口,并利用iosmethodswizzling技术,由代理接口接管该原始dns请求接口,通过所述代理接口发送所述dns请求;

若操作系统是android系统,选择java层的原始dns请求接口,并利用java反射技术,由代理接口接管该原始dns请求接口,通过所述代理接口发送所述dns请求;

若采用自定义dns请求,选择native层的原始dns请求接口,并利用函数劫持技术,由代理接口接管该原始dns请求接口,通过所述代理接口发送所述dns请求。

可选的,所述创建模块506,具体用于:

判断域名与ip地址关系列表中是否已经缓存所建立的域名与ip地址的映射关系;如果否,将所建立的域名与ip地址的映射关系缓存到所述域名与ip地址关系列表中;

相应的,所述确定模块503,具体用于:

在所述域名与ip地址关系列表中查询所述访问请求中的ip地址;

如果查找成功,则在所述域名与ip地址关系列表中确定所述访问请求中的ip地址对应的域名。

本发明实施例在利用传输层代理获取到ip地址之后,确定出该ip地址对应的域名,所以可以利用域名匹配方式对代理的数据进行过滤和分发,也能够适用于对域名发起的访问请求,并且由于同一个域名可以对应多个ip地址,域名匹配方式与ip地址匹配方式相比,域名匹配方式可以简化匹配条件的设置。

需要说明的是:上述实施例提供的传输层代理的代理装置可基于计算机程序实现,该装置在进行筛选时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的传输层代理的代理装置与传输层代理的代理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图6是本发明实施例提供的电子设备的结构示意图。该电子设备600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630,也即计算机可读存储介质(例如一个或一个以上海量存储设备)。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对电子设备中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在电子设备600上执行存储介质630中的一系列指令操作。

电子设备600还可以包括一个或一个以上电源624,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,一个或一个以上键盘654,和/或,一个或一个以上操作系统641,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

电子设备600可以包括有存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述所述的传输层代理的代理方法。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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