Я прочитал несколько постов об ограничениях 600 запросов за 600 секунд, которые Facebook Graph Api устанавливает для запросов.
Этот вопрос касается получения разъяснений по проблеме, с которой я сталкиваюсь.
Я делаю запросы, довольно простые для FB Graph:
Итак, из моего дома я бегу:
curl https://graph.facebook.com/v2.0/?id=https://www.example.com/article/the-name-of-the-article/
(иметь косую черту нетривиально)
который дает мне пустые результаты:
{
"share": {
"comment_count": 0,
"share_count": 605
},
"og_object": {
"id": "XXXXX6ZZ70301002",
"description": "text",
"title": "title",
"type": "article",
"updated_time": "2019-03-09T00:15:06+0000"
},
"id": "https://www.example.com/article/the-name-of-the-article"
}
Я взял URL-адрес из кода js на сайте.
Вместо этого, запуск сканера Scrapy по тому же URL-адресу, который все еще выполняется из домашней сети, дает мне то же, что и выше:
{
"share": {
"comment_count": 0,
"share_count": 605
},
"og_object": {
"id": "XXXXX6ZZ70301002",
"description": "text",
"title": "title",
"type": "article",
"updated_time": "2019-03-09T00:15:06+0000"
},
"id": "https://www.example.com/article/the-name-of-the-article"
}
Что сейчас более чем нормально, и система js-code-scraping, похоже, работает. Результаты содержат всю информацию из js звонков в FB Graph.
На стороне сервера сканер работает, как и ожидалось, но при более внимательном рассмотрении результатов информация, полученная в результате выполнения кода js, отсутствует.
Я проверил весь код, в другом URL, который также запускает действия js для предоставления html-контента, и код на самом деле работает нормально.
Затем, повторяя простое:
curl https://graph.facebook.com/v2.0/?id=https://www.example.com/article/the-name-of-the-article
на этот раз с ip сервера отвечает:
{
"error": {
"message": "(#4) Application request limit reached",
"type": "OAuthException",
"is_transient": true,
"code": 4,
"fbtrace_id": "ErXXXXZZrOn"
}
}
Что касается ip-блоков, код не смог доставить более 600 запросов. На самом деле он отправил менее 10 запросов к графику API.
Очевидно, что информация, поступающая от js-запросов к Fb Graph Api со стороны сервера, отсутствует.
Я пытался с разных серверов, от разных провайдеров, проверить, был ли Ip-фильтр у облачных провайдеров, но, похоже, это не так, поскольку на каждом сервере результаты одинаковы.
Что здесь происходит?
Почему запросы js не получают действительные данные ответа, когда они запускаются с IP-адресов сервера? (поскольку он выдает ошибку OAuthException: предел запроса приложения достигнут также с помощью команды curl)
Спасибо за любую подсказку