我们在网站上运行爬虫以使我们的信息保持最新。像这样的一些网站允许使用浏览器进行标准导航,但在使用标准 Java 库时它们不会发送响应。这是我用来访问主页(索引)页面的代码,
try
{
URL my_url = new URL("https://www.capitallightingfixture.com");
URLConnection u = my_url.openConnection();
if ( u instanceof HttpURLConnection )
{
HttpURLConnection http_u = (HttpURLConnection)u;
System.out.println(http_u.getResponseCode());
}
}
catch (Exception e)
{
e.printStackTrace();
}
运行时,该程序会抛出以下错误
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
根据我对这些错误的了解,当 Java 无法验证服务器提供的证书时会抛出这些错误。然而,正如我上面提到的,谷歌浏览器在导航到页面时没有问题,它甚至会验证证书(不会引发安全错误)。
有没有办法可以覆盖 Java 并允许它接收响应?