细数代理检测

前言

代理检测,虽然看起来很常见,但是仔细琢磨,还是有不少东西

结构

  • 代理的作用
  • 代理类型: 常见的代理类型
  • 代理检测方法: 检测代理所使用的方法,包含对http,https,socks,vpn,tor等
  • 其他: 对于代理检测的展望

引言

  对于代理,想必不会陌生。然而对于代理的检测,出于对速度和准确率之间的取舍,往往摸不到头。通过对一些论文和目前常见的检测代理方法了解过后,遂做了些总结。

代理类型

HTTP代理

  HTTP代理是我们最熟悉的一种方式,一般用于访问网页,一般有内容过滤和缓存等功能。常见的端口有8080,3128,80

HTTPS代理

  侧重于对访问有SSL和TLS加密的网站,典型的如VPN,常见的端口443,8443

SOCKS代理

  不关心应用层的细节,因此速度会比较快,目前常见的有socks4和socks5两种方式,简单的说就是,socks4具备的,socks5都支持,常见的端口有1080。

TOR

  TOR其实侧重的是匿名性,放在此处仅仅做一个补充了解tor.常见的端口有9050,9001,9040

tor组成

  tor包含三个节点,有guard node,relay node ,以及exit node
PS-PNG-work

tor原理流程

  tor节点一开始会请求一个consensus文档,以获得tor网络的节点是什么样的。而这个文档是由以下几个IP维护的。其文档的具体内容可以通过如下IP访问,路径为

1
/tor/status-vote/current/consensus

其具体的格式解析,可以参考该https://www.cryptolux.org/images/b/bc/Tor_Issues_Thesis_Thill_Fabrice.pdf论文描述。tor客户端在获得这个共识文档后,会随机的选择3个节点作为整个链路。
  网桥,是由于国内用户无法直接访问以下这几个IP,通过网桥,绕过GFW的限制,从而获得共识文档。

1
2
3
4
5
6
7
8
9
10
{ ip = "128.31.0.39", port = "9131"},
{ ip = "86.59.21.38", port = "80" },
{ ip = "194.109.206.212", port = "80" },
{ ip = "82.94.251.203", port = "80" },
{ ip = "131.188.40.189", port = "80"},
{ ip = "193.23.244.244", port = "80"},
{ ip = "208.83.223.34", port = "443" },
{ ip = "171.25.193.9", port = "443" },
{ ip = "154.35.175.225", port = "80" },
{ ip = "199.254.238.52", port = "80" }

  流量在Tor之间传输都是加密的形式,而出口节点的信息,则是透明的,除非使用https协议或者其他安全方式。因此,如果在tor网络只使用http协议访问网站,那么你的信息,就可以被别人捕获到。

代理的检测方法

https/http代理检测

  最常见的方式是转发,其次对于报文头的一些头信息,可以间接的判断。最常见的比如http_via,remote_ip,x_forworded_for这些字段,其次一些代理产品,有相应的产品指纹,可以直接获得。对于目标ip,如果其真实操作系统和请求头信息不匹配,也可以认为是代理。依此类推时间,语言,操作系统任何一个不一致,都可以被认为是代理。对于VPN产品信息,有特定的指纹信息,可以通过请求返回的报文判断。

socks代理检测

  通过转发的方式,判断是否是代理

Tor检测

  tor的检测,可以直接从共识文档获取,因为tor的出口节点ip才是我们想要的,所以直接检测tor出口节点就行了。
 此外,tor-browser启动的时候,会在本地开放一个tor-socks端口,通过这个端口也可以间接的判断是否是代理IP.

通用检测方法

  通用的方法,就是以IP为单位,比如IP的whois信息,以及DNSBL信息等,都可以推测出。
 此外,网上免费代理的名单也可以间接的作为一份黑名单。

其他

  然而,对于代理检测,目前最前沿的方式是,通过在客户端添加一个自有协议,通过这个协议来检测访问时延。通过对这个时延的判断,来间接的判断,是否代理。而这个访问的依据是,使用代理会比不使用代理的速度会慢一点,因为一个请求默认会匹配最近的基站,如果使用代理,相当于绕远路的方式,因此可以通过这个方式来检测。
而对于,提高代理检测的速度,以及其他优化的方法,会在下一篇文章中细数。

文章目录
  1. 1. 前言
    1. 1.1. 结构
  2. 2. 引言
  3. 3. 代理类型
    1. 3.1. HTTP代理
    2. 3.2. HTTPS代理
    3. 3.3. SOCKS代理
    4. 3.4. TOR
      1. 3.4.1. tor组成
      2. 3.4.2. tor原理流程
  4. 4. 代理的检测方法
    1. 4.1. https/http代理检测
    2. 4.2. socks代理检测
    3. 4.3. Tor检测
    4. 4.4. 通用检测方法
  5. 5. 其他
|
Fork me on GitHub