【问题标题】:Bypass a third party API that blocks requests from Google App Engine绕过阻止来自 Google App Engine 的请求的第三方 API
【发布时间】:2019-11-03 14:07:42
【问题描述】:

我需要从第三方 API 提取数据。他们的服务器阻止了来自 Google App Engine 的请求(所有来自 GAE 的请求都会得到一个漂亮的标头,说明它来自 App-Engine :|)。总是得到 Http 403 Forbidden。

有没有办法将 App Engine 配置为使用某种代理以避免被拒绝向 API 发出请求?

我已经在本地测试了 web 服务,效果很好。 App Engine 在不同的国家(欧洲西部)运行。

我正在使用 HttpURLConnection 发出请求。

【问题讨论】:

    标签: rest google-app-engine httpurlconnection http-status-code-403


    【解决方案1】:

    请记住,App Engine 有一组无法修改的标头,因此,如果其中一个标头是 API 阻止您的请求的标准的一部分,那么您将不会走运。

    其中有一些是可以修改的,所以我建议你测试一下是否确实如此,因为它会给你带来很多麻烦。您可以在Outbound Requests 文档中找到有关 App Engine 的“必备”出站标头的更多信息。

    由于您提到了 App Engine 应用的位置(欧洲西部),我也倾向于认为这可能是问题的原因。我建议测试一下部署在不同区域的应用是否收到相同的响应。

    对于 App Engine 的标头或位置的问题,您可以通过设置“代理服务器”来解决它,该服务器可以托管在 Google Compute Engine Instance 上,并将服务器配置为 删除这些标头。

    正确的配置将取决于您选择的服务器,例如,Squid 会为此提供request_header_access。然后,您可以使用 代理 API 仅将 API 调用重定向到代理服务器。 Here 你可以找到关于如何使用代理 API 的很好的解释。

    还需要注意的是,删除标头违反了 Guidelines for Web Content Transformation Proxies 1.0,因此最好先确认目标 API 对来自 App Engine 的调用有此限制,然后再决定如何使用继续。

    我希望这会有所帮助。

    【讨论】:

    • 将您的解决方案与其他替代方案进行比较,我决定改用 AWS。解决这个问题并不简单,需要使用第三方代理。
    猜你喜欢
    • 2011-04-18
    • 1970-01-01
    • 2012-11-13
    • 2017-09-10
    • 2022-01-15
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多