如何阻止我的rails应用程序被机器人击中?

时间:2010-03-10 19:02:27

标签: ruby-on-rails performance

我甚至不确定我是否使用了正确的术语,无论这是否真的是机器人。我不想使用“垃圾邮件”这个词,因为它不像我有正在创建/发送垃圾邮件的评论或帖子。它看起来更像是在向我的域发出相同的重复请求,这让我觉得它是某种机器人。

我已经将我的第一个rails应用程序打开到'public',这是一个非常小的用户群,目前<50。那是上周五。我今天开始遇到性能问题,所以我查看了日志,我看到了大量的这些RoutingErrors

ActionController::RoutingError (No route matches "/portalApp/APF/pages/business/util/whichServer.jsp" with {:method=>:get}):

他们正在填写日志,我假设这导致了减速。注意结尾的.jsp,这是一个rails应用程序,所以我在我的应用程序中没有这样的远程URL。我的意思是,/ portalApp我甚至没有,所以我不知道它来自何处。

这是在Dreamhost上托管的,我与他们的一个支持人员聊天,他建议使用htaccess阻止事情的几个网站。但看起来您需要知道请求来自的IP或域,我不知道。

我怎么能阻止这个?如何从请求中找到IP或域?还有其他建议吗?


跟进信息:

查看访问日志后,看起来它不是机器人。也许我没有正确阅读日志,但有来自同一IP的有效网址请求(从我的Flex应用程序中生成)。所以现在我想知道它是否是某种生成请求的插件,但我真的不知道。现在我想知道是否可以根据模式阻止某个网址请求,但我想这是一个单独的问题。

3 个答案:

答案 0 :(得分:2)

老问题,但对于仍在寻找替代方案的人,我建议查看Kickstarter的rack-attack gem。不仅允许黑名单和白名单,还允许限制。

答案 1 :(得分:0)

这些页面似乎提供了一些很好的建议: Here

有关用户代理阻止的部分可能是您可以查看实施的内容。无论如何你可以从你的日志中获取bot的useragent吗?如果是这样,请查找可能识别机器人的useragent的唯一方面,并​​将以下内容添加到.htaccess替换相关位

BrowserMatchNoCase SpammerRobot bad_bot
Order Deny,Allow
Deny from env=bad_bot

详细介绍了该链接的详细信息,当然,如果您无法从日志中获取使用者,那么这对您没有用处!

答案 2 :(得分:0)

您还可以更新 public / robots.txt 文件以允许/禁止机器人。

http://www.robotstxt.org/wc/robots.html