可能重复:
How do you stop scripters from slamming your website hundreds of times a second?
我正在RubyOnRails中构建一个基于大量数据的Web应用程序。该应用程序可实现强大的导航和数据交集,以及用于添加更多数据的社区模型。 在这方面,可以将它与StackOverflow.com进行比较:大量数据,以相当简单的方式构建。
我打算根据CreativeCommons许可提供内容,但如果该网站“点击它”,我需要阻止模仿。我最担心的是屏幕抓取脚本编写者,不仅可以提取原始数据,而且还会在我的服务器上产生巨大的使用高峰。
我想知道RubyOnRails是否提供任何方法来限制(显然是自动化的)请求,例如减少他们的响应时间,使普通用户受益。也许这需要Apache或Phusion Passenger设置?
编辑:我的目标不是识别用户类型,而是降低对过度活跃用户的响应能力,例如:最大化每单位时间每个IP地址处理的请求数(?)
答案 0 :(得分:3)
我的建议是限制网站的任何简单迭代导航,这是我看到收获程序工作的主要方式。对用作GET变量的id号进行简单加密会使您的信息更难以删除。您只能尝试让您的信息变得繁重。你将无法完全阻止它。
答案 1 :(得分:1)
您可以向“过度活跃的用户”提供验证码,就像编辑过快时的SO一样。这应该有效地阻止自动蜘蛛般的刮擦。
答案 2 :(得分:1)
您可能还希望使用一些Rack中间件来进行速率限制,例如this recent article用于进行API限制(例如您在Twitter或类似网站上想要的内容)。
答案 3 :(得分:0)
我相信你所能做的就是让玩家跳起来。最终,没有万无一失的方法来区分普通用户和机器人。