检查网站是否存在

Bac*_*ash 5 java web

我正在尝试使用java创建一个is-website-down实用程序,但是我遇到了一些问题.

有没有办法检查网站是否存在?我试过看看网站是否关闭:

URL url = new URL("http://localhost");
HttpURLConnection httpConnection = (HttpURLConnection) (url.openConnection());
int code = httpConnection.getResponseCode();
System.out.println("code: " + code);
Run Code Online (Sandbox Code Playgroud)

它通过IOExceptionConnection refused: connect时即我尝试连接到本地主机,而没有活动的HTTP服务器侦听(该网站已关闭).

我认为与一些实际上不存在的网站会发生同样的事情,即

URL url = new URL("http://www.sdfasfjkhaslfjkhaslkdjfhasldkjf.it");
Run Code Online (Sandbox Code Playgroud)

但我收到HTTP状态代码200,因为如果我正在搜索的网站不存在,我的ISP会自动将我重定向到随机广告页面.

因此,如果网站出现故障,我的程序会说"嗯,您的网站已关闭",但如果该网站不存在,我的程序会说"哦,您的网站正常运行!",这并不是很好.

有没有办法检查网站是否存在?

Ste*_*n V 1

阅读您对 ISP DNS 中毒的评论。您的 ISP 向您提供/租用他们控制的 DNS 服务器,该服务器捕获所有NXDOMAIN响应并向他们控制的服务器返回有毒结果。

在进行 HTTP 检查之前,我会使用Google Public DNS或其他一些公开的有效 DNS 服务器对 A 记录进行 DNS 检查。NXDOMAIN当域无效时,Google 公共 DNS 确实会返回。在 Java 中,您可能需要使用dnsjava之类的工具来直接访问所需的 DNS 记录。

最后,执行两项检查,一项检查针对已知良好源的有效 DNS 记录,另一项检查 HTTP 是否处于活动状态。