Размещенный в Google Cloud App Engine экстрактор заголовка страницы возвращает 403 Запрещено в случаях
У меня есть служба сокращения URL / анализа трафика, размещенная в проекте Google App Engine (GAE) в Google Cloud (GC). Когда URL-адрес передается для сокращения, он выполняет Python urllib2.urlopen для извлечения страницы и получения ее заголовка, который используется для создания публикации в социальной сети, содержащей сокращенную ссылку. Некоторые сайты возвращают 403 Forbidden по команде urllib2.urlopen и в результате не могут сгенерировать текст сообщения социальной сети из заголовка страницы. Обратите внимание, что это происходит только при попытке загрузить страницу, чтобы получить заголовок страницы; сгенерированный сокращенный URL-адрес корректно работает в моем браузере и корректно отображает целевую страницу.
Я предполагаю, что запросы страниц, поступающие из диапазонов IP-адресов GC, заносятся в черный список сайтами, на которые я пытаюсь сослаться как на источник возможного бота или другого нечеловеческого или вредоносного трафика.
Есть ли у GC служба белых списков, к которой я мог бы обратиться, или это вызвано чем-то другим?
1 ответ
Согласно исходящим запросам, App Engine использует службу URL Fetch для выдачи исходящих запросов. Запросы из вашего приложения в действительности передаются через службу поиска URL-адресов Google. Другие сайты часто могут довольно легко определить источник этих запросов. Кроме того, App Engine добавит строку идентификатора к User-Agent
заголовок, позволяющий серверам идентифицировать запросы App Engine согласно заголовкам запросов.
Нет службы белых списков, которая позволила бы вашему приложению App Engine получать URL-адреса и получать 2xx
ответы. Запрос определенного URL-адреса и разбор HTML-ответа для некоторой части его содержимого обычно называют очисткой, и большинство крупных веб-сайтов придерживаются строгих правил в отношении этого типа взаимодействия.
Facebook, например
Условия обслуживания Facebook явно запрещают перескакивать, заявляя следующее:
Вы не будете собирать контент или информацию пользователей или иным образом получать доступ к Facebook с помощью автоматических средств (таких как боты-роботы, роботы, пауки или скребки) без нашего предварительного разрешения.
У Facebook действительно есть API Graph, который является основным способом получения данных в социальной сети Facebook. Это требует регистрации приложения с ними и получения app secret
, Таким образом, вы можете предоставить appsecret_proof
Графики API вызовов для аутентификации. Затем вы можете использовать URL
вызов, чтобы получить объект Facebook (публикации, комментарии и т. д.), указав внешний URL-адрес Facebook.
Общий случай
Большинство других социальных сетей имеют свои собственные API-интерфейсы. Это потому, что они хотят решить, как внешние приложения, такие как ваше, получают доступ к своему контенту и контенту, предоставленному им их пользователями. Вы должны обязательно соблюдать условия обслуживания каждого сайта, если вы хотите получить доступ к их ресурсам.