Я запускаю программу, которая отправляет запросы в общедоступный API-интерфейс facebook. Его многопоточность и установлен пользовательский агент ("Mozilla/5.0...").
После 1000-10000 запросов он начинает получать исключение:
«java.io.IOException: сервер вернул код ответа HTTP: 403 для URL = https://graph.facebook.com/etc..."
для всех потоков, пытающихся получить ответ.
Если я остановлю процесс и перезапущу его, скажем, через 10 минут, он будет работать, но он получит исключения после меньшего количества запросов. Пока программа работает и получает эти исключения, я проверил запрос через веб-браузер Chrome, и он получил ответы просто отлично.
Я пытался переключать строки пользовательского агента во время выполнения, но это не сработало. Установка глобального времени задержки для всех потоков, когда один поток сталкивается с исключением, иногда работает, тайм-аут не является согласованным.
Поскольку IP-адрес не заблокирован, мне трудно понять, как API идентифицирует мой запрос, и знаю, что я не использую настоящий браузер, даже если определено свойство пользовательского агента.