httpURL връзката с потребителски агент получава 403 Забранено, но не и уеб браузър

Изпълнявам програма, която изпраща заявки до публичния API на facebook graph. Неговият многопоточен и потребителски агент е зададен ("Mozilla/5.0...").

След 1000-10000 заявки започва да получава изключение:

"java.io.IOException: Сървърът върна HTTP код на отговор: 403 за URL = https://graph.facebook.com/etc..."

за всички нишки, които се опитват да получат отговор.
Ако спра процеса и го рестартирам след, да речем, 10 минути, той ще работи, но ще получи изключенията след по-малко заявки. Докато програмата работи и получава тези изключения, проверих заявката чрез уеб браузъра chrome и тя получи отлично отговорите.

Опитах да превключа низовете на потребителския агент по време на изпълнение, но не се получи. Задаването на глобално време на забавяне за всички нишки, когато една нишка срещне изключението, понякога работи, времето за изчакване не е последователно.

Тъй като ip адресът не е блокиран, ми е трудно да разбера как API идентифицира моята заявка и знам, че не използвам действителен браузър, дори когато е дефинирано свойство на потребителски агент.


person Maxim Zinger    schedule 22.12.2014    source източник
comment
В какъв период правите 1000-10000 заявки? Ако е след, да речем, 10 минути, тогава предполагам, че приложението зад API решава, че тези заявки не идват от обикновен потребител и след това получава отговор за състояние 403. Използвате ли бисквитки със заявки?   -  person Developer Marius Žilėnas    schedule 05.02.2015
comment
Не го направих, но изглежда тази настройка: java.net.CookieHandler.CookieHandler.setDefault( new CookieManager( null, CookiePolicy.ACCEPT_ALL )); разрешава проблема.   -  person Maxim Zinger    schedule 09.04.2015