Ошибка 403 в java

Спрашивал уже везде, может здесь помогут. Я пишу игру на java и хочу, чтобы она сама доскачивала текстуры с google-диска. Когда я начинал экспериментировать, то всё прекрасно работало(файлы качались и сохранялись). Но потом мне стала вылезать ошибка 403.

Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL: https://drive.google.com/uc?export=download&confirm=no_antivirus&id=1JFTHdSZnpvS5JL4LfTKt-BL8E7_FBrfo

Наверное, это какая-то защита гугла от нагрузки на сервера. Кто-нибудь знает, как это можно поправить? Ссылка на файл в коде ошибки.

метод для загрузки файлов:

    `private static void downloadUsingStream(String urlStr, String file) throws IOException {

    URL url = new URL(urlStr);

    BufferedInputStream bis = new BufferedInputStream(url.openStream());

    FileOutputStream fis = new FileOutputStream(file);

    byte[] buffer = new byte[1024];

    int count = 0;

    while ((count = bis.read(buffer, 0, 1024)) != -1) {
    
    fis.write(buffer, 0, count);

    }

    fis.close();

    bis.close();

    }`

Ответы (1 шт):

Автор решения: Arty Mart

Если почитать расшифровку статусов, то становиться яснее:

403 Forbidden[19] — сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. Иными словами, клиент не уполномочен совершать операции с запрошенным ресурсом. Если для доступа к ресурсу требуется аутентификация средствами HTTP, то сервер вернёт ответ 401, или 407 при использовании прокси. В противном случае ограничения были заданы администратором сервера или разработчиком веб-приложения и могут быть любыми в зависимости от возможностей используемого программного обеспечения. В любом случае серверу следует сообщить причины отказа в обработке запроса. Наиболее вероятными причинами ограничения может послужить попытка доступа к системным ресурсам веб-сервера (например, файлам .htaccess или .htpasswd) или к файлам, доступ к которым был закрыт с помощью конфигурационных файлов, требование аутентификации не средствами HTTP, например, для доступа к системе управления содержимым или разделу для зарегистрированных пользователей либо сервер не удовлетворён IP-адресом клиента, например, при блокировках. Появился в HTTP/1.0.

Скорее всего, это результат работы защитного механизма. Когда вы делаете много частых запросов к одному клиенту, вас с большой долей вероятности, заблочат на какое то время, либо разавторизуют. Попробуйте ввести специальные ограничения на частоту выполнения запросов. Например, перед каждым обращением к данному ресурсу, можно прописать:

Thread.sleep(100);

Это остановит ваш поток на 0.1 секунду. Этого должно хватить для того, чтобы сервер не посчитал вас ддосером.

→ Ссылка