是否有可能在java中检查给定的ip端口是否为代理服务器?
我可以检查给定端口是否使用套接字打开。
Socket socket = new Socket();
socket.connect(new InetSocketAddress(ip, port), 5000);
如何检查它是否是代理服务器?
答案 0 :(得分:0)
没有直接的方法来检测IP地址是否在代理之后,因为Proxies可以选择是否发送X-Forwarded-For标头(包含原始IP)。
没有发送此标头或将原始IP记录在日志中的代理被称为匿名"匿名"代理。在您提及的情况下,您使用的代理可能会将此标头转发到您正在访问的端点,因此您的连接不是匿名的。
有多种方法可以检测您的流量是否属于代理来源。两个简单的是:
还有其他方法,可能需要在服务器上提供额外的智能,可能是为了关联来自不同IP的连接的请求,即查看用户代理标准和请求的时间,cookie,闪存中的LSO,(您的原因之一) #39; d想要禁用cookie和禁用Flash播放器以使自己真正匿名化。)
答案 1 :(得分:0)
唯一的方法是连接到IP /端口,向其发送代理请求,并查看它是否回复代理响应。这是因为SOCKS和HTTP之类的代理协议(通过CONNECT
动词)不提供服务器端问候,让代理自己预先识别,客户端会在这些协议中发送第一个数据包。