Google Cloud Программа извлечения заголовков страниц, размещенных в App Engine, возвращает 403 Forbidden в случаях

У меня есть служба сокращения URL / анализа трафика, размещенная в проекте Google App Engine (GAE) в Google Cloud (GC). Когда URL-адрес отправляется для сокращения, он выполняет Python urllib2.urlopen для извлечения страницы и получения ее заголовка, который используется для создания сообщения в социальной сети, содержащего сокращенную ссылку. Некоторые сайты возвращают 403 Forbidden для команды urllib2.urlopen и в результате не могут сгенерировать тело сообщения в социальной сети из заголовка страницы. Обратите внимание, что это происходит только при попытке загрузить страницу, чтобы получить заголовок страницы; сгенерированный сокращенный URL-адрес правильно работает в моем браузере и правильно отображает 302-е страницы на целевой странице.

Я предполагаю, что запросы страниц, поступающие из диапазонов IP-адресов GC, занесены в черный список сайтами, на которых я ' m пытается ссылаться на источник возможного бота или другого нечеловеческого или вредоносного трафика.

Есть ли у GC служба белого списка, к которой я мог бы обратиться, или это вызвано чем-то другим?

1
задан 4 May 2016 в 15:56
1 ответ

Согласно Исходящие запросы , App Engine использует службу URL Fetch для отправки исходящих запросов. Запросы от вашего приложения фактически передаются через службу Google URL Fetch. Другие сайты часто могут довольно легко определить источник этих запросов. Кроме того, App Engine добавит строку идентификатора в заголовок User-Agent , чтобы серверы могли идентифицировать запросы App Engine в соответствии с заголовками запросов .

Служба белого списка недоступна это позволит вашему приложению App Engine получать URL-адреса и получать ответы 2xx . Запрос заданного URL-адреса и анализ HTML-ответа для некоторой части его содержимого обычно называется парсингом, и на большинстве крупных веб-сайтов действуют строгие правила в отношении этого типа взаимодействия.

Facebook, например

Условия использования Facebook службы полностью запретить очистку, указав следующее:

Вы не будете собирать контент или информацию пользователей или иным образом получить доступ к Facebook, используя автоматизированные средства (такие как сборщики ботов, роботы, пауки или скребки) без нашего предварительного разрешения.

Facebook действительно имеет свой Graph API , который является основным способом получения данных в социальной сети Facebook и из нее. Для этого необходимо зарегистрировать приложение и получить секрет приложения . Таким образом вы можете предоставить appsecret_proof вызовам API Graph для аутентификации. Затем вы можете использовать вызов URL , чтобы получить объект Facebook (публикации, комментарии и т. Д.), Предоставив внешний URL Facebook.

Общий случай

Большинство других сайтов социальных сетей имеют свои собственные API. Это потому, что они хотят решить, как внешние приложения, такие как ваше, получают доступ к своему контенту и контенту, предоставленному им их пользователями. Вы должны быть уверены, что соблюдаете условия обслуживания каждого сайта, если хотите получить доступ к их ресурсам.

1
ответ дан 3 December 2019 в 23:46

Теги

Похожие вопросы