阻止脚本编写者抨击您的网站
Наэтотвопросестьответына 堆栈溢出нарусском:Какустроитьловушкудляхакера,илидостойноотбиватьатаки? 我已经接受了答案,但可悲的是,我相信我们会坚持我们最初的最坏情况:每个人都在尝试购买废话。简短说明:缓存/ Web场使无法跟踪命中,并且任何解决方法(发送非缓存的Web信标,写入统一表等)都会使网站的速度比僵尸程序慢。思科提供的一些昂贵的硬件或类似产品可能可以提供较高的帮助,但是如果将每个人都验证码作为替代方案,则很难证明其成本合理。稍后,我将尝试进行更详细的解释,并为以后的搜索者进行清理(尽管欢迎其他人尝试,因为它是社区Wiki)。 情况 这与woot.com上的垃圾袋销售有关。我是Woot Workshop的总裁,该工作室是Woot的子公司,负责设计,撰写产品说明,播客,博客文章并主持论坛。我使用CSS / HTML,几乎不熟悉其他技术。我与开发人员紧密合作,并在这里讨论了所有答案(以及我们已有的许多其他想法)。 可用性是我工作的重要部分,而使网站令人兴奋和有趣则是其余的大部分。这就是以下三个目标的来源。CAPTCHA损害了可用性,并且机器人从我们的垃圾销售中窃取了乐趣和兴奋。 僵尸程序在第二次屏幕抓取(和/或扫描我们的RSS)以随机垃圾销售的形式猛烈抨击了我们的首页。他们看到的那一刻,它触发程序的第二阶段登录,单击“我想要的”,填写表格,然后购买废话。 评价 lc:在stackoverflow和其他使用此方法的站点上,它们几乎总是与经过身份验证(登录)的用户打交道,因为尝试执行的任务需要这样做。 在Woot上,匿名(未登录)用户可以查看我们的主页。换句话说,砰砰机器人可以是未经身份验证的(除了IP地址之外,基本上是不可跟踪的)。 因此,我们将返回到IP扫描,a)在这个云网络和垃圾邮件僵尸时代,这是相当无用的; b)鉴于来自一个IP地址的企业数量,捕获了太多的无辜者(更不用说与之相关的问题了)非静态IP ISP和潜在的性能损失,以试图对此进行跟踪)。 哦,让人们打电话给我们将是最糟糕的情况。我们可以让他们给您打电话吗? BradC:Ned Batchelder的方法看起来很酷,但是它们的设计很牢固,可以击败为站点网络构建的机器人。我们的问题是机器人是专门为打败我们的网站而建造的。这些方法中的某些方法可能会在短时间内起作用,直到脚本编写者发展他们的机器人以忽略蜜罐,对附近的标签名称(而不是表单ID)进行屏幕抓取,并使用具有javascript功能的浏览器控件。 lc再一次:“当然,除非炒作是您的营销计划的一部分。” 是的,肯定是。物品出现的惊奇程度,以及设法获得一件物品的兴奋程度,可能与最终得到的废话一样重要或更重要。消除先到先得的一切都会不利于赢得“垃圾”的快感。 novatrust:我首先欢迎我们的新机器人霸主。实际上,我们确实提供RSSfeed,以允许第三方应用程序扫描我们的网站上的产品信息,但不能扫描主要网站的HTML。如果我的解释正确,那么您的解决方案确实会通过完全牺牲目标1来解决目标2(性能问题),而只是放弃了机器人将购买大部分废品的事实。我赞成您的回答,因为您的最后一段悲观主义对我来说很准确。这里似乎没有银弹。 其余的响应通常依赖于IP跟踪,这再次显得既无用(对于僵尸网络/僵尸网络/云网络)又有害(捕获来自相同IP目的地的许多无辜者)。 还有其他方法/想法吗?我的开发人员一直在说“让我们做CAPTCHA”,但我希望对想要我们的一些废话的所有实际人来说,侵入性方法要少一些。 原始问题 假设您要出售的东西具有很高的感知价值,而价格却非常有限。没有人确切知道您何时会出售该物品。经常有超过一百万的人过来看看您要卖的东西。 您最终会遇到脚本编写者和机器人程序,他们试图以编程方式[a]弄清楚您何时出售该商品,[b]确保它们是第一个购买该商品的人。这很烂,原因有两个: 您的网站遭到非人类的猛烈抨击,使所有人的工作速度减慢。 脚本编写者最终“赢得”了产品,使常客感到被骗。 一个看似显而易见的解决方案是在下订单之前为用户创建一些跳转,但是这至少存在三个问题: 用户体验很糟糕,因为他们必须破译CAPTCHA,挑选猫或解决数学问题。 如果感觉到的好处足够高,而人群又足够多,那么一些人就会在任何调整中找到自己的出路,导致军备竞赛。(特别简单的调整是正确的;隐藏的“注释”表单,重新排列表单元素,给它们贴错标签,隐藏的“陷阱”文本都将一次起作用,然后需要进行更改以针对此特定表单进行战斗) 即使脚本编写者无法“解决”您的调整,也不会阻止他们猛击您的首页,然后发出警报,要求脚本编写者手动填写订单。如果他们从解决[a]中获得优势,他们将很可能仍然会赢得[b],因为他们将是第一个进入订单页面的人。此外,1.仍然会发生,导致服务器错误并降低每个人的性能。 另一个解决方案是监视IP击中次数过多,将其从防火墙中阻止或以其他方式阻止其排序。这可以解决2.并防止[b],但是扫描IP会对性能造成巨大影响,并且可能比脚本编写者自己引起的问题更多,例如1.。此外,云网络和垃圾邮件僵尸的可能性使IP检查变得毫无用处。 第三个想法,迫使订单被加载一段时间(例如半秒钟),可能会减慢快速订单的进度,但是同样,脚本编写者仍然是第一批加入该订单的人,无论以何种速度都不会实际用户。 目标 将该项目出售给没有脚本的人。 保持网站的运行速度不受机器人的影响。 不要为了完成“正常”用户的任务而烦恼他们,以证明他们是人类。