如何在JAVA中检查代理是否存在

时间:2015-07-25 01:59:25

标签: java sockets proxy

我正在创建一个“bot”,打开一个页面,其中包含从file.txt获取的随机代理,但我想在使用它们之前首先检查代理是否存在。

我不打算在这里放任何代码,因为如果有人有一个简单的方法来完成这项任务,我只会做一个请求。

我读到TIdContext.Data,但我遇到的问题是我只能将其与InetSocketAddress一起使用。如何在一个简单的字符串中一起传递 Host + port

如果这不是解决方案,有人可以向我解释另一种方法吗?

2 个答案:

答案 0 :(得分:1)

  

我读到了" InetSocketAddress" ...

如果您要测试代理,这是一种方法。 (只是测试你可以打开到代理的TCP / IP连接,然后关闭它)。另一种方法是使用文本页面设置您自己的小型Web服务器,并使用它来访问您的测试页面来测试代理。 (这样可以提供更准确的#34;读取"关于代理的活跃性。)

  

...但是我有一个问题,我只能(String Host,Int port)如何在一个简单的字符串中传递Host +端口?

这很容易。你没有。

您需要解析字符串并提取主机名和端口号。 (Java 101东西......)然后传递你作为单独的参数传递它们。

如果"字符串"实际上是一个URL或URI,然后您可以使用java.net.URI进行解析。

然而,还有另一种方法。不要测试代理。只需使用它,如果它没有响应,则将其标记为坏。

IMO,你几乎不得不采用这种方法来使代码健壮。如果您探测代理并发现它可以在时间T到达并且工作,则无法保证它在T + 1时仍然有效。没有多少测试可以解决这个问题。

答案 1 :(得分:1)

这种方法无效。

测试任何资源是否可用的唯一可行方法是尝试在程序的正常过程中使用它,并在失败时处理错误。

否则,您将参与预测未来。当您使用时测试和关闭时可能会出现问题。或者相反。或者你可以用与使用它的方式不同的方式测试它,因此,再次获得不同的结果。