恶意机器人唤醒 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 免费时间

Heroku Dyno 问题。免费小时池在 12 小时内使用 24 小时 [关闭]

当机器人托管在 heroku 上时如何制作 discord.js 图像搜索命令

如何防止 Heroku 时钟测功机睡在免费套餐上?

discord bot 在生产中离线而不是在本地

删除项目后的僵尸heroku进程?