一种代理服务器识别方法及装置制造方法

文档序号:7982530阅读:209来源:国知局
一种代理服务器识别方法及装置制造方法
【专利摘要】本申请公开了一种代理服务器识别装置,包括:HTTP报文发送器,用于当服务器收到用户的GET请求时,生成并返回一个携带控制指令的HTTP报文,所述控制指令用于指示接收到该HTTP报文的浏览器返回一个对应的响应消息给服务器;探测器,用于判断对于发给同一用户的HTTP报文,服务器收到TCP?ACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值,如果是则判断该用户使用了代理服务器;本申请能识别出用户是否使用了代理服务器。
【专利说明】一种代理服务器识别方法及装置
【技术领域】
[0001]本申请涉及互联网领域,尤其涉及一种代理服务器识别方法及装置。
【背景技术】
[0002]目前互联网上存在一种广泛的应用即为IP地址与地理位置互查技术,该技术广泛应用于互联网各个领域,尤其是风险控制领域,作为一个强风险因子使用,其在风险控制领域方案应用原理是检测一个用户是否短时间内在不同的地理位置登录,如果是,则可以认为是一个高风险操作。这个判断是基于用户的IP是真实IP才成立的。但代理服务器技术打破了这一应用的前提。也就是说一个北京的用户完全可以通过杭州的代理服务器,则服务器看到的用户IP地址为杭州代理服务器的地址。
[0003]怎样区分出代理服务器的问题一直在业界讨论,业界也有不少该类问题的解决方案,但主要还是集中在两个方向:
[0004]1、代理服务器库的收集,有基于爬虫从互联网上抓取的,还有基于主动扫描的代理服务器收集。
[0005]该类解决方案中,针对基于爬虫从互联网上抓取的方式,有很多代理服务器是未在互联网上公布的,或者是黑客控制的一些肉机,此信息非常的不完全;针对于主动扫描的方式,互联网上活跃主机量非常巨大,而且代理服务器的服务端口不固定,故此方案扫描周期非常长,性价比非常差。
[0006]2、基于代理服务器特征的识别,比如说正规代理服务器发出的报文在HTTP头中都存在 Via、X-Forwarded-for 等字段。
[0007]该类解决方案针对于正规的代理服务器软件是有效的,但是很多代理服务器软件可以配置不加此字段,此方法非常不可靠。

【发明内容】

[0008]本申请要解决的技术问题是如何识别出用户是否使用了代理服务器。
[0009]为了解决上述问题,本申请提供了一种代理服务器识别装置,包括:
[0010]HTTP报文发送器,用于当服务器收到用户的GET请求时,生成并返回一个携带控制指令的HTTP报文,所述控制指令用于指示接收到该HTTP报文的浏览器返回一个对应的响应消息给服务器;
[0011]探测器,用于判断对于发给同一用户的HTTP报文,服务器收到TCP ACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值,如果是则判断该用户使用了代理服务器。
[0012]进一步地,所述控制指令为js代码,所述对应的响应消息为ajax请求。
[0013]进一步地,所述携带控制指令的HTTP报文中还携带服务器时间戳和签名信息,所述对应的响应消息中包含该服务器时间戳和签名信息。
[0014]进一步地,所述探测器包括:[0015]TCP时间探测器,用于计算一 HTTP报文从发送给一用户到收到该HTTP报文对应的TCP ACK确认之间的时间差,得到该用户的TCP时间差;
[0016]HTTP时间探测器,用于计算所述携带控制指令的HTTP报文从发送给一用户到收到对应的响应消息之间的时间差,得到该用户的HTTP时间差;
[0017]比较器,用于计算一用户的TCP时间差和HTTP时间差之间的差值,如果该差值的绝对值超过一预定阈值,则判断该客户端使用了代理服务器。
[0018]进一步地,探测器判断对于发给同一用户的HTTP报文,服务器收到TCPACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值是指:
[0019]所述探测器当服务器发出一个所述携带控制指令的HTTP报文后,记录收到该HTTP报文对应的TCP ACK确认的时刻、以及收到该HTTP报文对应的响应消息的时刻;判断这两个时刻的间隔时间长度是否超过一预定阈值。
[0020]本申请还提供了一种代理服务器识别方法,包括:
[0021]当服务器收到用户的GET请求时,生成并返回一个携带控制指令的HTTP报文,所述控制指令用于指示接收到该HTTP报文的浏览器返回一个对应的响应消息给服务器;
[0022]判断对于发给同一用户的HTTP报文,服务器收到TCP ACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值,如果是则判断该用户使用了代理服务器。
[0023]进一步地,所述控制指令为js代码,所述对应的响应消息为ajax请求。
[0024]进一步地,所述携带控制指令的HTTP报文中还携带服务器时间戳及签名信息,所述对应的响应消息中包含该服务器时间戳及签名信息。
[0025]进一步地,所述判断对于发给同一用户的HTTP报文,服务器收到TCPACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值的步骤包括:
[0026]计算一 HTTP报文从发送给一用户到收到该HTTP报文对应的TCP ACK确认之间的时间差,得到该用户的TCP时间差;
[0027]计算所述携带控制指令的HTTP报文从发送给一用户到收到对应的响应消息之间的时间差,得到该用户的HTTP时间差;
[0028]计算一用户的TCP时间差和HTTP时间差之间的差值,判断该差值的绝对值是否超过一预定阈值。
[0029]进一步地,所述判断对于发给同一用户的HTTP报文,服务器收到TCP ACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值的步骤包括:
[0030]当服务器发出一个所述携带控制指令的HTTP报文后,记录收到该HTTP报文对应的TCP ACK确认的时刻、以及收到该HTTP报文对应的响应消息的时刻;判断这两个时刻的间隔时间长度是否超过一预定阈值。
[0031]本申请的技术方案利用TCP ACK确认和浏览器反馈的ajax请求之间的时间差,来判断用户是否使用了代理服务器,可靠性高,而且不用额外进行代理服务器库的收集。
【专利附图】

【附图说明】
[0032]图1是实施例一中通信过程示意图之一;[0033]图2是实施例一中通信过程示意图之二 ;
[0034]图3是实施例二中例子的流程示意图。
【具体实施方式】
[0035]下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
[0036]需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0037]实施例一,一种代理服务器识别装置,包括:
[0038]HTTP (超文本传送协议)报文发送器,用于当服务器收到用户的GET请求时,生成并返回一个携带控制指令的HTTP报文,所述控制指令用于指示接收到该HTTP报文的浏览器返回一个对应的响应消息给服务器;
[0039]探测器,用于判断对于发给同一用户的HTTP报文,服务器收到TCP(传输控制协议)ACK(Acknowledgement, TCP首部中的确认标志)确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值,如果是则判断该用户使用了代理服务器。
[0040]本实施例中,所述控制指令可以但不限于为js (JavaScript,一种脚本语言)代码,所述对应的响应消息可以但不限于为ajax请求;这是利用浏览器对HTTP文档解析的原理,当客户端的浏览器接收到所述js代码后,会执行该js代码,返回ajax (AsynchronousJavaScript and XML,异步JavaScript和可扩展标记语言)请求给服务器。实际应用时也可以使用其它能控制浏览器的指令。
[0041]本实施例中,所述携带控制指令的HTTP报文中还可以携带服务器时间戳,所述对应的响应消息中包含该服务器时间戳。
[0042]本实施例中,所述携带控制指令的HTTP报文中还可以携带服务器的签名信息,所述对应的响应消息中包含该签名信息。
[0043]本实施例中,所述预定阈值可根据经验值或试验值确定,并且可根据判断所需的精细度调整其大小;比如,当只想识别出跨地区的代理服务器(真实客户端与代理服务器不在同一个地区)时,该预定阈值可设置的相对较大,可以但不限于为一倍的TCP时间差;当也想识别出同地区的代理服务器时,则可将所述预定阈值设置的较小。
[0044]本实施例的一种实施方式中,所述探测器具体可以包括:
[0045]TCP时间探测器,用于计算一 HTTP报文从发送给一用户到收到该HTTP报文对应的TCP ACK确认之间的时间差,得到该用户的TCP时间差,即收到TCP ACK确认所需时间;
[0046]HTTP时间探测器,用于计算所述携带控制指令的HTTP报文从发送给一用户到收到对应的响应消息之间的时间差,得到该用户的HTTP时间差,即收到对应的响应消息所需时间;
[0047]比较器,用于计算一用户的TCP时间差和HTTP时间差之间的差值,如果该差值的绝对值超过一预定阈值,则判断该客户端使用了代理服务器。
[0048]本实施中,所述携带控制指令的HTTP报文可以采用特殊的HTTP头,以方便跟踪该HTTP报文及其对应的TCP ACK确认/响应消息。
[0049]本实施例中,TCP时间探测器和HTTP时间探测器可以是对同一个HTTP报文进行跟踪,分别获得所述TCP时间差和HTTP时间差;也可以分别对不同的HTTP报文进行跟踪,来获得所述TCP时间差和HTTP时间差。
[0050]本实施例的另一种实施方式中,探测器判断对于发给同一用户的HTTP报文,服务器收到TCP ACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值具体可以是指:
[0051]所述探测器当服务器发出一个所述携带控制指令的HTTP报文后,记录收到该HTTP报文对应的TCP ACK确认的时刻、以及收到该HTTP报文对应的响应消息的时刻;判断这两个时刻的间隔时间长度是否超过一预定阈值。
[0052]下面用两个具体的通信过程来解释本实施例的实现机理。
[0053]当客户端和服务器之间直连时,其通信过程如图1所示,包括:
[0054]客户端发送TCP SYN给服务器;
[0055]服务器返回TCP SYN+ACK给客户端;
[0056]客户端发送TCP ACK给服务器,其中可能携带GET请求;
[0057]对于GET请求,服务器发送HTTP响应报文给客户端,其中携带js代码、签名信息及服务器时间戳;
[0058]客户端收到所述HTTP响应报文后返回TCP ACK确认给服务器;客户端的浏览器解析所述HTTP响应报文时,执行所述js代码,生成包含所述签名信息和服务器时间戳的ajax请求返回给服务器;该ajax请求可携带在上述TCP ACK确认中,也可以单独发送。
[0059]上述过程中,TCP时间差为服务器发出HTTP响应报文到收到客户端的TCP ACK确认之间的时间差;HTTP时间差为服务器发出HTTP响应报文到收到客户端浏览器根据服务器返回的js所构造的ajax请求之间的时间差;可以看出,两个时间差的大小彼此相差不大。
[0060]当客户端和服务器之间通过跨地区的代理服务器连通时,其通信过程如图2所示,包括(此处省略了握手过程):
[0061]客户端发送GET请求给代理服务器,代理服务器返回TCP ACK给客户端,并发送GET请求给服务器;
[0062]服务器发送HTTP响应报文给代理服务器,其中携带js代码、签名信息及服务器时间戳;
[0063]代理服务器收到所述HTTP响应报文后转发给客户端,并返回TCP ACK确认给服务器;
[0064]客户端的浏览器解析所述HTTP响应报文时,执行所述js代码,发送包含有所述签名信息和服务器时间戳的ajax请求给代理服务器;
[0065]代理服务器收到所述ajax请求后转发给服务器,并返回TCP ACK给客户端。
[0066]上述过程中,TCP时间差为服务器发出HTTP响应报文到收到代理服务器的TCPACK确认之间的时间差;HTTP时间差为服务器发出HTTP响应报文到收到代理服务器转发的真实客户端浏览器根据服务器返回的js代码所构造的ajax请求之间的时间差;可以看出,两个时间差的大小差别较大。
[0067]实施例二,一种代理服务器识别方法,包括:
[0068]当服务器收到用户的GET请求时,生成并返回一个携带控制指令的HTTP报文,所述控制指令用于指示接收到该HTTP报文的浏览器返回一个对应的响应消息给服务器;
[0069]判断对于发给同一用户的HTTP报文,服务器收到TCP ACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值,如果是则判断该用户使用了代理服务器。
[0070]本实施例中,所述控制指令可以但不限于为js代码,所述对应的响应消息可以但不限于为ajax请求;这是利用浏览器对HTTP文档解析的原理,当客户端的浏览器接收到所述js代码后,会执行该js代码,返回ajax请求给服务器。实际应用时也可以使用其它能控制浏览器的指令。
[0071]本实施例中,所述携带控制指令的HTTP报文中还可以携带服务器时间戳,所述对应的响应消息中包含该服务器时间戳。
[0072]本实施例中,所述携带控制指令的HTTP报文中还可以携带服务器的签名信息,所述对应的响应消息中包含该签名信息。
[0073]本实施例中,所述预定阈值可根据经验值或试验值确定,并且可根据判断所需的精细度调整其大小;比如,当只想识别出跨地区的代理服务器(真实客户端与代理服务器不在同一个地区)时,该预定阈值可设置的相对较大,可以但不限于为一倍的TCP时间差;当也想识别出同地区的代理服务器时,则可将所述预定阈值设置的较小。
[0074]本实施例的一种实施方式中,所述判断对于发给同一用户的HTTP报文,服务器收至IjTCP ACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值的步骤具体可以包括:
[0075]计算一 HTTP报文从发送给一用户到收到该HTTP报文对应的TCP ACK确认之间的时间差,得到该用户的TCP时间差,即收到TCP ACK确认所需时间;
[0076]计算所述携带控制指令的HTTP报文从发送给一用户到收到对应的响应消息之间的时间差,得到该用户的HTTP时间差,即收到对应的响应消息所需时间;
[0077]计算一用户的TCP时间差和HTTP时间差之间的差值,判断该差值的绝对值是否超过一预定阈值。
[0078]本实施中,所述携带控制指令的HTTP报文可以采用特殊的HTTP头,以方便跟踪该HTTP报文及其对应的TCP ACK确认/响应消息。
[0079]本实施例中,可以是对同一个HTTP报文进行跟踪,分别获得所述TCP时间差和HTTP时间差;也可以分别对不同的HTTP报文进行跟踪,来获得所述TCP时间差和HTTP时间差。
[0080]本实施例的另一种实施方式中,所述判断对于发给同一用户的HTTP报文,服务器收到TCP ACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值的步骤具体可以包括:
[0081]当服务器发出一个所述携带控制指令的HTTP报文后,记录收到该HTTP报文对应的TCP ACK确认的时刻、以及收到该HTTP报文对应的响应消息的时刻;判断这两个时刻的间隔时间长度是否超过一预定阈值。
[0082]本实施例的一个具体例子如图3所示,包括如下步骤:
[0083]服务器通过TCP/IP协议栈接收数据报文,当收到用户的GET请求后,返回HTTP响应报文,并带上特殊的HTTP头、js代码和服务器时间戳;[0084]记录HTTP响应报文中的五元组、通过TCP/IP协议栈发送该HTTP响应报文,并等待对应的TCP ACK确认;当收到对应的TCP ACK确认后,计算发送该HTTP响应报文和收到该TCP ACK确认之间的时间差,作为TCP时间差;
[0085]记录对方的IP (HTTP响应报文的目的IP)、发送该HTTP响应报文的时间并等待对应的ajax请求;当收到对应的ajax请求后,计算发送该HTTP响应报文和收到该ajax请求之间的时间差,作为HTTP时间差;
[0086]比较TCP时间差和HTTP时间差,如果超过一预定阈值,则判断用户是通过代理服务器连接,否则判断用户没有通过代理服务器连接。
[0087]本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
[0088]当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。
【权利要求】
1.一种代理服务器识别装置,其特征在于,包括: HTTP报文发送器,用于当服务器收到用户的GET请求时,生成并返回一个携带控制指令的HTTP报文,所述控制指令用于指示接收到该HTTP报文的浏览器返回一个对应的响应消息给服务器; 探测器,用于判断对于发给同一用户的HTTP报文,服务器收到TCP ACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值,如果是则判断该用户使用了代理服务器。
2.如权利要求1所述的装置,其特征在于: 所述控制指令为js代码,所述对应的响应消息为ajax请求。
3.如权利要求1所述的装置,其特征在于: 所述携带控制指令的HTTP报文中还携带服务器时间戳和签名信息,所述对应的响应消息中包含该服务器时间戳和签名信息。
4.如权利要求1到3中任一项所述的装置,其特征在于,所述探测器包括: TCP时间探测器,用于计算一 HTTP报文从发送给一用户到收到该HTTP报文对应的TCPACK确认之间的时间差,得到该用户的TCP时间差; HTTP时间探测器,用于计算所述携带控制指令的HTTP报文从发送给一用户到收到对应的响应消息之间的时间差,得到该用户的HTTP时间差; 比较器,用于计算一用户的TCP时间差和HTTP时间差之间的差值,如果该差值的绝对值超过一预定阈值,则判断该客户端使用了代理服务器。
5.如权利要求1到3中任一项所述的装置,其特征在于,探测器判断对于发给同一用户的HTTP报文,服务器收到TCP ACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值是指: 所述探测器当服务器发出一个所述携带控制指令的HTTP报文后,记录收到该HTTP报文对应的TCP ACK确认的时刻、以及收到该HTTP报文对应的响应消息的时刻;判断这两个时刻的间隔时间长度是否超过一预定阈值。
6.一种代理服务器识别方法,包括: 当服务器收到用户的GET请求时,生成并返回一个携带控制指令的HTTP报文,所述控制指令用于指示接收到该HTTP报文的浏览器返回一个对应的响应消息给服务器; 判断对于发给同一用户的HTTP报文,服务器收到TCP ACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值,如果是则判断该用户使用了代理服务器。
7.如权利要求6所述的方法,其特征在于: 所述控制指令为js代码,所述对应的响应消息为ajax请求。
8.如权利要求6所述的方法,其特征在于: 所述携带控制指令的HTTP报文中还携带服务器时间戳及签名信息,所述对应的响应消息中包含该服务器时间戳及签名信息。
9.如权利要求6到8中任一项所述的方法,其特征在于,所述判断对于发给同一用户的HTTP报文,服务器收到TCP ACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值的步骤包括:计算一 HTTP报文从发送给一用户到收到该HTTP报文对应的TCP ACK确认之间的时间差,得到该用户的TCP时间差; 计算所述携带控制指令的HTTP报文从发送给一用户到收到对应的响应消息之间的时间差,得到该用户的HTTP时间差; 计算一用户的TCP时间差和HTTP时间差之间的差值,判断该差值的绝对值是否超过一预定阈值。
10.如权利要求6到8中任一项所述的方法,其特征在于,所述判断对于发给同一用户的HTTP报文,服务器收到TCP ACK确认所需时间和收到所述对应的响应消息所需时间的长度之差是否超过一预定阈值的步骤包括: 当服务器发出一个所述携带控制指令的HTTP报文后,记录收到该HTTP报文对应的TCPACK确认的时刻、以及收到该HTTP报文对应的响应消息的时刻;判断这两个时刻的间隔时间长度是否超过一预 定阈值。
【文档编号】H04L29/08GK103634359SQ201210309017
【公开日】2014年3月12日 申请日期:2012年8月27日 优先权日:2012年8月27日
【发明者】黄冕 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1