Facebook API:Heroku 服务器的 IP 地址阻塞

Posted

技术标签:

【中文标题】Facebook API:Heroku 服务器的 IP 地址阻塞【英文标题】:Facebook API: IP Address blocking of Heroku servers 【发布时间】:2013-04-21 08:21:37 【问题描述】:

我的 Heroku php facebook 应用程序日志中不断出现以下错误:

[app web.20] PHP Fatal error: Uncaught OAuthException: (#5) Unauthorized 
source IP address\n thrown in /app/www/sdk/src/base_facebook.php on line 1238

我还注意到,在我回收进程之前,相同的服务器一直在产生这个错误(即在上述情况下,它会是 web.20web.6不断失败),但在heroku ps:restart 之后,将是不同的服务器不断失败。

现在,在做了一些研究之后,我注意到人们一直建议我在 Facebook 应用程序 -> 高级设置页面中将我的服务器 IP 列入白名单,这意味着 Facebook 保留了一份列入黑名单的 IP 列表,您可以在此处允许通过以下方式访问它们一个..这让我想知道为什么 Facebook 清楚地encourages its users to use Heroku for its facebook apps,同时将其服务器列入黑名单。

所以基本上:

    Heroku 是 Facebook 的托管合作伙伴 每次应用被回收时,Heroku 都会为其用户提供不可预测的 IP 地址 Facebook 已将 Heroku 的许多服务器列入黑名单(据我统计,大约为十分之一) 因此,您永远无法保证您的应用能够针对您的所有请求访问其 API

我的问题是:

像我这样的开发人员如何在 Facebook 赞助的 Heroku 环境中配置生产就绪的应用程序,而这种环境显然必然会在大量 API 请求中失败?

【问题讨论】:

我也觉得这种情况很荒谬。重新启动 heroku 实例,希望它们最终出现在非黑名单上的 ip 上,这不是一个可行的解决方案。这篇文章有两个解决问题的选项。 ***.com/questions/16086615/… +1- 从星期四开始也发生在我们身上。重新启动我们所有的工人解决了这个问题,现在又发生了。 也发生在我身上:( +1 问题很大!我们也在我们的应用程序上看到了这一点...... 也许这不是 Heroku 特有的问题,而是一些 Facebook DoS 预防策略,或者 API 调用限制策略导致误报?如果我理解正确,许多 Heroku 应用程序可以共享同一个 IP 地址,因此 Facebook 可能会收到来自同一个 IP 的大量请求。 【参考方案1】:

这很奇怪。我们正在调查。

编辑:这应该得到解决。请注意,由于恶意行为,Facebook 阻止了这些 IP。我们将继续与他们合作以防止再次发生这种情况,但您可以诚实做的最好的事情是使用提供非共享 IP 的托管服务提供商。

也可以在这里查看:https://developers.facebook.com/bugs/649166715098648

【讨论】:

我也经常收到这个问题。几天前才开始发生。在 Heroku 上。 27 号星期六为我开始......当我只运行一个测功机时似乎消失了 同样的事情发生在我们身上,从上周开始,似乎经常发生 当我看到来自 facebook 的流量激增时(即当一个故事变得非常流行时),单一 IP 并不是一个真正的选择。仅在几个小时内阻止违规 IP 怎么样?这样可以防止滥用 API,而不会永久禁用大部分服务器。 使用 Facebook Messenger API 体验这个...偶尔,我必须重新启动我的测功机以重新分配 IP :(【参考方案2】:

Facebook 似乎出于某种原因开始屏蔽 Heroku IP。这不是 Heroku 控制的事情,只有 Facebook 可以解决的事情。我会与 Facebook 支持人员取得联系。

【讨论】:

【参考方案3】:

在 Heroku 上,试用 Proximo 之类的插件,看看会发生什么。我刚刚在我的设备上进行了配置,现在我正在监控是否会发生同样的情况。

【讨论】:

以上是关于Facebook API:Heroku 服务器的 IP 地址阻塞的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 中自定义域的 Facebook 元标记

使用 Spotify API 进行授权

来自 Heroku / AWS 的外部 API 的访问被拒绝

在 Heroku 上使用 React、Axios 访问内部 API

如何从反应客户端向运行在 Heroku 平台上的表达服务器发出 API 请求

Heroku Twitter API应用程序部署