用于检测用户通过透明代理访问互联网的方法及系统
技术领域
本发明涉及网络检测技术领域,特别是涉及一种用于检测用户通过透明代理访问互联网的方法及系统。
背景技术
互联网经营者经常为了一些目的,对访问者按照来源IP(Internet Protocol,网间协议)进行区分或限制。例如,网络投票,可能会限制每个IP、或者某个地区的投票比例;又如,某项活动,可能只允许个别地区用户参与。然而,个别用户可能会使用一些手段绕过此类限制,例如使用透明代理的方法。
对于各种代理的方法,有不同的检测手段:
(1)对于普通的非匿名代理,由于设立了X-Forwarded-For(简称XFF头,代表客户端,用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段)或类似的HTTP(Hyper Text Transfer Protocol,超文本传输协议)头部,可以轻松识别。
(2)对于开放在著名端口的服务,如开放在1080端口的socks(Protocol forsessions traversal across firewall securely,防火墙安全会话转换协议)代理、或开放在3128端口的SQUID(Squid cache,代理服务器,是一种用来缓存Internet数据的软件)服务,可以通过端口扫描的方法进行一定程度的规制。
而对于nginx高度匿名代理和socks代理,由于其直接执行tcp转发,比较难以发现和处理。透明代理的意思是客户端根本不需要知道有代理服务器的存在,nginx高度匿名代理和socks代理(全能代理)都属于透明代理。
发明内容
本发明实施例提供一种用于检测用户通过透明代理访问互联网的方法及系统,通过比较传输层和应用层的响应时间来判断连接是否使用了透明代理。
为达到上述目的,一方面,本发明实施例提供一种用于检测用户通过透明代理访问互联网的方法,包括:
记录接收到待检测网络业务的客户端响应当前检测报文的TCP报文数据的第一时刻以及响应当前检测报文的应用层报文数据的第二时刻,并记录该第一时刻和第二时刻的时间差值;其中,每个检测报文对应一个时间差值;
计算截止到当前检测报文的连续预设个数的检测报文对应的时间差值的均值;
当所述时间差值的均值连续达到或超过第一预设时间阈值的次数达到预设次数时,判定所述待检测网络业务使用了透明代理。
可选的,所述记录该第一时刻和第二时刻的时间差值之后,还包括:
判断该时间差值是否超过第二预设时间阈值;
若是,则从本次记录开始,持续对所述待检测网络业务进行检测,判断其是否使用了透明代理。
可选的,所述待检测网络业务的客户端响应当前检测报文的TCP报文数据为TCP连接建立时的ACK报文;所述待检测网络业务的客户端响应的当前检测报文的应用层报文为在所述ACK报文之后第一个携带上层数据的报文。
可选的,所述TCP报文数据以及应用层报文数据包括:
发送方IP、接收方IP、双方端口、报文内容以及发送出或接收到该报文数据的时刻。
可选的,所述记录接收到待检测网络业务的客户端响应当前检测报文的TCP报文数据的第一时刻以及响应当前检测报文的应用层报文数据的第二时刻之前,还包括:
向所述待检测网络业务的客户端发送需要立即响应的当前检测报文;
分别实时捕获多个TCP报文数据和多个应用层报文数据;
根据所述当前检测报文相对应的发送方IP端口和/或接收方IP接口,分别在实时捕获的所述多个TCP报文数据和多个应用层报文数据中关联到所述待检测网络业务的客户端响应所述当前检测报文的TCP报文数据以及响应所述当前检测报文的应用层报文数据。
另一方面,本发明实施例提供一种用于检测用户通过透明代理访问互联网的系统,包括:
记录单元,用于记录接收到待检测网络业务的客户端响应当前检测报文的TCP报文数据的第一时刻以及响应当前检测报文的应用层报文数据的第二时刻,并记录该第一时刻和第二时刻的时间差值;其中,每个检测报文对应一个时间差值;
计算单元,用于计算截止到当前检测报文的连续预设个数的检测报文对应的时间差值的均值;
判断单元,用于当所述时间差值的均值连续达到或超过第一预设时间阈值的次数达到预设次数时,判定所述待检测网络业务使用了透明代理。
可选的,还包括检测启动单元,与所述记录单元连接,用于判断该时间差值是否超过第二预设时间阈值;若是,则从此次记录开始,进入所述计算单元。
可选的,所述记录单元记录的所述待检测网络业务的客户端响应当前检测报文的TCP报文数据为TCP连接建立时的ACK报文;所述待检测网络业务的客户端响应的当前检测报文的应用层报文为在所述ACK报文之后第一个携带上层数据的报文。
可选的,所述记录单元记录的所述TCP报文数据以及应用层报文数据包括:
发送方IP、接收方IP、双方端口、报文内容以及发送出或接收到该报文数据的时刻。
可选的,还包括:
报文下发单元,与所述记录单元连接,用于向所述待检测网络业务的客户端发送需要立即响应的当前检测报文;
捕获单元,用于分别实时捕获多个TCP报文数据和多个应用层报文数据;
关联单元,用于根据所述当前检测报文相对应的发送方IP端口和/或接收方IP接口,分别在实时捕获的所述多个TCP报文数据和多个应用层报文数据中关联到所述待检测网络业务的客户端响应所述当前检测报文的TCP报文数据以及响应所述当前检测报文的应用层报文数据。
上述技术方案具有如下有益效果:
本发明基于用户使用透明代理时,传输层和应用层响应时刻的差异,通过监测统一连接TCP报文响应时刻和应用层报文响应时刻的差值是否超过第一预设阈值来判断连接是否使用了透明代理,解决了现有技术无法判断透明代理的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中没有使用代理的客户端与服务器之间的通信示意图;
图2是现有技术中使用代理的客户端与服务器之间的通信示意图;
图3是本发明用于检测用户通过透明代理访问互联网的方法的流程图;
图4是本发明用于检测用户通过透明代理访问互联网的方法的另一实施方式的流程图;
图5是本发明用于检测用户通过透明代理访问互联网的系统结构示意图;
图6是本发明用于检测用户通过透明代理访问互联网的系统的另一实施方式的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
对于我们发出的一个TCP数据报文,负责处理TCP的端会进行ACK的返回;而对于应用层的响应,则在最终的客户端进行。
没有使用代理的时候,这两个“端”是同一台设备。尽管操作系统将数据转给上层应用需要时间,但这时间在大多数情况下都是极其有限的。
那么,对于通常的没有使用代理的客户端,是图1所示的状态。
如图1,我们会发现,TCP层的响应(即ACK响应)和应用层响应(各协议自定)通常在非常接近的时间到达。但是如果用户使用了TCP转发的代理服务器,特别是如nginx高度匿名代理,则情况可能有不同,尤其是用户跨地区代理的时候尤为明显,如图2所示。
显然的,因为代理服务器并不处理应用层数据,因此两个应用层数据是连在一起的,代理服务器需要转发服务端和客户端传送给彼此的数据。然而,TCP连接却是不同的2个连接。那么,对于应用层的响应和TCP层的响应,就会有时间上的差别。
诚然,通常我们会考虑用户网络不稳定的情况。然而,我们可以通过反复测量来减少这种误差。
比如,如果是高度匿名代理通过HTTP Connect模式进行代理,则首先客户端建立到代理的连接,代理建立到服务端的连接,第二连接完成后,代理才给客户端返回200ESTABLISHED,此后客户端再发送数据的话,连接的建立时间就会和应用数据发来的时间有较大的差距,这一点尤为明显。
对于Web端,HTTPS是很适合实现此方案的协议,也能被广大浏览器支持。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图3所示,本发明实施例提供一种用于检测用户通过透明代理访问互联网的方法,包括:
步骤101,记录接收到待检测网络业务的客户端响应当前检测报文的TCP报文数据的第一时刻以及响应当前检测报文的应用层报文数据的第二时刻,并记录该第一时刻和第二时刻的时间差值;其中,每个检测报文对应一个时间差值;
在本实施例一个可选的实施方式中,所述待检测网络业务的客户端响应当前检测报文的TCP报文数据为TCP连接建立时的ACK报文;所述待检测网络业务的客户端响应的当前检测报文的应用层报文为在所述ACK报文之后第一个携带上层数据的报文。
对于我们发出的一个TCP数据报文,负责处理TCP的端会进行ACK的返回;而对于应用层的响应,则在最终的客户端进行。
没有使用代理的时候,这两个“端”是同一台设备。尽管操作系统将数据转给上层应用需要时间,但这时间在大多数情况下都是极其有限的。
但是如果用户使用了TCP转发的代理服务器,特别是如nginx高度匿名代理,则情况可能有不同,尤其是用户跨地区代理的时候尤为明显。显然的,因为代理服务器并不处理应用层数据,因此两个应用层数据是连在一起的,代理服务器需要转发服务端和客户端传送给彼此的数据。然而,TCP连接却是不同的2个连接。那么,对于应用层的响应和TCP层的响应,就会有时间上的差别。
比如,如果是高度匿名代理通过HTTP Connect模式进行代理,则首先客户端建立到代理的连接,代理建立到服务端的连接,第二连接完成后,代理才给客户端返回200ESTABLISHED,此后用户再发送数据的话,连接的建立时间就会和应用数据发来的时间有较大的差距,这一点尤为明显。
步骤103,计算截止到当前检测报文的连续预设个数的检测报文对应的时间差值的均值。
步骤104,当所述时间差值的均值连续达到或超过第一预设时间阈值的次数达到预设次数时,判定所述待检测网络业务使用了透明代理。
考虑用户网络不稳定的情况,本实施例通过反复测量来减少误差。
本实施例优选的,在所述步骤101和步骤103之间,还包括:
步骤102,判断该差值是否超过第二预设时间阈值;
若是,则进入步骤103,从此次记录开始,持续对所述待检测网络业务进行检测,判断其是否使用了透明代理。
该步骤102是指,并非记录所有连接的第一时刻和第二时刻及其差值,仅当捕获的某一连接对应的差值超过设定的第二阈值时,才对该连接进行持续检测。即,步骤102中所述从此次记录开始,包括确定要检测的连接。即,如果同时捕获多个连接,则仅对达到或超过该第二阈值的连接进行记录。
在一个可选的实施方式中,所述TCP报文数据以及应用层报文数据包括:
发送方IP、接收方IP、双方端口、报文内容以及发送出或接收到该报文数据的时刻。
如图4所示,在本实施例另一个可选的实施方式中,步骤101之前还包括:
步骤1001,向所述待检测网络业务的客户端发送需要立即响应的当前检测报文;
步骤1002,分别实时捕获多个TCP报文数据和多个应用层报文数据;
步骤1003,根据所述当前检测报文相对应的发送方IP端口和/或接收方IP接口,分别在实时捕获的所述多个TCP报文数据和多个应用层报文数据中关联到所述待检测网络业务的客户端响应所述当前检测报文的TCP报文数据以及响应所述当前检测报文的应用层报文数据。
在一个可选的实施方式中,在步骤1001中发送当前检测报文时,需要记录该发送时间。当步骤1003所关联到的所述待检测网络业务的客户端响应所述当前检测报文的TCP报文数据以及响应所述当前检测报文的应用层报文数据不止一个时,根据所述发送时间进一步确定相应的TCP报文数据以及应用层报文数据。
如图5所示,本发明实施例提供了一种用于检测用户通过透明代理访问互联网的系统,包括:
记录单元201,用于记录接收到待检测网络业务的客户端响应当前检测报文的TCP报文数据的第一时刻以及响应当前检测报文的应用层报文数据的第二时刻,并记录该第一时刻和第二时刻的时间差值;其中,每个检测报文对应一个时间差值;
在本实施例一个可选的实施方式中,所述记录单元201记录的所述待检测网络业务的客户端响应当前检测报文的TCP报文数据为TCP连接建立时的ACK报文;所述待检测网络业务的客户端响应的当前检测报文的应用层报文为在所述ACK报文之后第一个携带上层数据的报文。
对于我们发出的一个TCP数据报文,负责处理TCP的端会进行ACK的返回;而对于应用层的响应,则在最终的客户端进行。
没有使用代理的时候,这两个“端”是同一台设备。尽管操作系统将数据转给上层应用需要时间,但这时间在大多数情况下都是极其有限的。
但是如果用户使用了TCP转发的代理服务器,特别是如nginx高度匿名代理,则情况可能有不同,尤其是用户跨地区代理的时候尤为明显。显然的,因为代理服务器并不处理应用层数据,因此两个应用层数据是连在一起的,代理服务器需要转发服务端和客户端传送给彼此的数据。然而,TCP连接却是不同的2个连接。那么,对于应用层的响应和TCP层的响应,就会有时间上的差别。
比如,如果是高度匿名代理通过HTTP Connect模式进行代理,则首先客户端建立到代理的连接,代理建立到服务端的连接,第二连接完成后,代理才给客户端返回200ESTABLISHED,此后用户再发送数据的话,连接的建立时间就会和应用数据发来的时间有较大的差距,这一点尤为明显。
计算单元203,用于计算截止到当前检测报文的连续预设个数的检测报文对应的时间差值的均值。
判断单元204,用于当所述时间差值的均值连续达到或超过第一预设时间阈值的次数达到预设次数时,判定所述待检测网络业务使用了透明代理。
考虑用户网络不稳定的情况,本实施例通过反复测量来减少误差。
本实施例优选的,还包括检测启动单元202,与所述记录单元201连接,用于判断该时间差值是否超过第二预设时间阈值;若是,则从此次记录开始,进入所述计算单元203。
在一个可选的实施方式中,所述记录单元记录的所述TCP报文数据以及应用层报文数据包括:
发送方IP、接收方IP、双方端口、报文内容以及发送出或接收到该报文数据的时刻。
如图6所示,为本发明另一个可选实施方式的结构图,包括:
报文下发单元2001,与所述记录单元201连接,与所述记录单元连接,用于向所述待检测网络业务的客户端发送需要立即响应的当前检测报文;
捕获单元2002,用于分别实时捕获多个TCP报文数据和多个应用层报文数据;
关联单元2003,用于根据所述当前检测报文相对应的发送方IP端口和/或接收方IP接口,分别在实时捕获的所述多个TCP报文数据和多个应用层报文数据中关联到所述待检测网络业务的客户端响应所述当前检测报文的TCP报文数据以及响应所述当前检测报文的应用层报文数据。
在一个可选的实施方式中,报文下发单元2001在发送当前检测报文时,需要记录该发送时间。当关联单元2003所关联到的所述待检测网络业务的客户端响应所述当前检测报文的TCP报文数据以及响应所述当前检测报文的应用层报文数据不止一个时,根据所述发送时间进一步确定相应的TCP报文数据以及应用层报文数据。
上述技术方案具有如下有益效果:
本发明基于用户使用透明代理时,传输层和应用层响应时刻的差异,通过监测统一连接TCP报文响应时刻和应用层报文响应时刻的差值是否超过第一预设阈值来判断连接是否使用了透明代理,解决了现有技术无法判断透明代理的问题。
而且本方案用户也不可知,且能容易地和现有业务结合,能取到较好的效果。
应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要比清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本文定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本文给出的实施例,而是与本申请公开的原理和新颖性特征的最广范围相一致。
上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。