Обходите сторонний API, который блокирует запросы от Google App Engine - PullRequest
0 голосов
/ 03 ноября 2019

Мне нужно получить данные из стороннего API. Их сервер блокирует запрос, сделанный из Google App Engine (все запросы, сделанные из GAE, получают хороший заголовок о том, что он поступил из App-Engine: |). Всегда получайте Http 403 Forbidden.

Есть ли способ настроить App Engine на использование какого-либо прокси, чтобы избежать отказа в запросе к API?

Я протестировал веб-сервис локально, и он отлично работал. App Engine работает в другой стране (Европа-Запад).

Я использую HttpURLConnection для выполнения запроса.

1 Ответ

0 голосов
/ 06 ноября 2019

Имейте в виду, что в App Engine есть набор заголовков, которые нельзя изменить, поэтому, если один из них является частью критериев API для блокировки ваших запросов, вам не повезет.

Однако некоторые из них можно изменить, поэтому я рекомендую вам проверить, так ли это на самом деле, поскольку это доставит вам немало хлопот. Вы можете найти более подробную информацию о «обязательных» исходящих заголовках App Engine в документации Исходящие запросы .

Поскольку вы упомянули расположение приложения App Engine (Европа-Запад), яЯ также склонен думать, что это может быть причиной проблемы. Я предлагаю протестировать, чтобы увидеть, получает ли приложение, развернутое в другом регионе , такой же ответ.

Поскольку проблема связана с заголовками App Engine или с расположением, вы можете решить ее, настроив«Прокси-сервер», который можно разместить на экземпляре Google Compute Engine и настроить сервер на удалить эти заголовки .

Правильная конфигурация будет зависеть от того, какой сервер вы выберете. Например, Squid предлагает для этого request_header_access . Затем вы можете использовать Proxy API для перенаправления только вызовов API на прокси-сервер. Здесь вы можете найти хорошее объяснение о том, как использовать Proxy API.

Также важно отметить, что удаление заголовка идет вразрез с Указаниями дляПрокси-серверы преобразования веб-контента 1.0 , поэтому было бы неплохо подтвердить, почему целевой API имеет это ограничение с вызовами, поступающими из App Engine, прежде чем решить, как действовать.

Надеюсь, это поможет.

...