情報を最新の状態に保つために、Webサイトでクローラーを実行しています。このようなWebサイトの中には、ブラウザでの標準的なナビゲーションを許可しているものもありますが、標準の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がサーバーから提供された証明書を検証できない場合にエラーがスローされます。ただし、前述したように、Google Chromeはページへの移動に問題はなく、証明書も検証します(セキュリティエラーはスローされません)。
Javaをオーバーライドして、とにかく応答を受信できるようにする方法はありますか?