Java:检查给定的ip和端口是否是代理服务器

时间:2014-10-18 14:13:34

标签: java sockets proxy ip

是否有可能在java中检查给定的ip端口是否为代理服务器?

我可以检查给定端口是否使用套接字打开。

Socket socket = new Socket();
socket.connect(new InetSocketAddress(ip, port), 5000);

如何检查它是否是代理服务器?

2 个答案:

答案 0 :(得分:0)

没有直接的方法来检测IP地址是否在代理之后,因为Proxies可以选择是否发送X-Forwarded-For标头(包含原始IP)。

没有发送此标头或将原始IP记录在日志中的代理被称为匿名"匿名"代理。在您提及的情况下,您使用的代理可能会将此标头转发到您正在访问的端点,因此您的连接不是匿名的。

有多种方法可以检测您的流量是否属于代理来源。两个简单的是:

  • X-Forwarded-For标题的存在(或转发中的自定义数据) 头)
  • 交叉检查已知的代理IP或退出中继(TOR)

还有其他方法,可能需要在服务器上提供额外的智能,可能是为了关联来自不同IP的连接的请求,即查看用户代理标准和请求的时间,cookie,闪存中的LSO,(您的原因之一) #39; d想要禁用cookie和禁用Flash播放器以使自己真正匿名化。)

答案 1 :(得分:0)

唯一的方法是连接到IP /端口,向其发送代理请求,并查看它是否回复代理响应。这是因为SOCKS和HTTP之类的代理协议(通过CONNECT动词)不提供服务器端问候,让代理自己预先识别,客户端会在这些协议中发送第一个数据包。