恶意机器人唤醒 heroku 免费应用程序并耗尽所有测功时间
Posted
技术标签:
【中文标题】恶意机器人唤醒 heroku 免费应用程序并耗尽所有测功时间【英文标题】:Malicious Bots waking up heroku free app and using up all dyno hours 【发布时间】:2019-11-08 11:10:15 【问题描述】:我在 heroku 上托管了一个应用程序,在过去 5 年中,它在免费测功时间上运行良好。有一个用户,一整天都没有太多用处。
在过去的几个月里,我们似乎成为了创建虚假帐户的机器人的目标。我们现在收到了很多这样的机器人,它们经常唤醒我们的应用程序,以至于消耗了我们的免费测功时间。
有人知道如何摆脱它们吗?我曾尝试使用 invisible_captcha,但这似乎没有帮助。
【问题讨论】:
【参考方案1】:你应该考虑使用 RackAttack https://github.com/kickstarter/rack-attack
这是一个允许您阻止/允许请求的中间件。 例如,如果他们每次新注册都使用相同的电子邮件域,则您只能按小时接受该域的十个注册(因为它不是一个大网站),直到他们平静下来。
或者,如果他们来自同一个地方,你可以通过他们的 IP 限制这个国家的请求
编辑: 如果你根据IP地址检查国家,dyno会被唤醒(因为你会调用外部服务来获取信息),所以在这种情况下这不是一个好的解决方案
【讨论】:
但这不会唤醒测功机吗? @Eyeslandic 在此页面 (heroku.com/dynos) 上,他们说应用程序接收到 Web 请求,然后将请求传递给随机的 Web dyno。没关系,因为中间件会在之前执行,而 RackAttack 会“杀死”错误请求 @escanxr 我很确定它仍然会唤醒测功机并收费,红宝石代码必须在某个地方运行【参考方案2】:简单的解决方案: 如果您只有一个用户,请考虑将应用程序托管在不会被抓取的秘密子域上。每次遇到此类问题时,您只需更改子域并通知您的用户即可。
更复杂的解决方案: 使用cloudflare 之类的解决方案,防止不必要的流量进入应用程序。
【讨论】:
以上是关于恶意机器人唤醒 heroku 免费应用程序并耗尽所有测功时间的主要内容,如果未能解决你的问题,请参考以下文章
Heroku Dyno 问题。免费小时池在 12 小时内使用 24 小时 [关闭]