Похоже, этот сайт защищен каким-то веб-шлюзом (службой защиты DOS, такой как Akamai?). Похоже, что клиенты получают отпечатки пальцев по TLS-соединению и HTTP-запросу (заголовкам), и только действительные веб-браузеры могут подключаться к сайту.
В следующем коде используется Apache commons http client 4.5 и работает по крайней мере на данный момент:
String urlStr = "https://www.nseindia.com/";
File file = new File("C:\\User\\WorkSpace\\Output.txt");
String userAgent = "-";
CloseableHttpClient httpclient = HttpClients.custom().setUserAgent(userAgent).build();
HttpGet httpget = new HttpGet(urlStr);
httpget.addHeader("Accept-Language", "en-US");
httpget.addHeader("Cookie", "");
System.out.println("Executing request " + httpget.getRequestLine());
try (CloseableHttpResponse response = httpclient.execute(httpget)) {
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
String body = EntityUtils.toString(response.getEntity());
System.out.println(body);
Files.writeString(file.toPath(), body);
}
Запрос, который, например, работает из Firefox не работает с Java (потому что соединение TLS с протоколами и шифрами отличается). Я попробовал несколько комбинаций, используя Apache commons http client. но также не работает (даже если тот же запрос работает от Fiddler).
Следовательно, использование этого веб-сайта из Java чрезвычайно сложно, и даже приведенный выше код работает на данный момент, система защиты может быть адаптирована в любое время, чтобы он не работал снова.
Я бы предположил, что такой сайт предоставляет API, предназначенный для использования программой. Свяжитесь с ними и спросите, это единственный совет, который я могу вам дать.