情况
这是关于woot.com上垃圾销售的问题。我是Woot Workshop的总裁,这是Woot的子公司,负责设计、编写产品描述、播客、博客文章和论坛的管理。我只熟悉CSS/HTML并且对其他技术知之甚少。我与开发者密切合作,并讨论了所有的回答(以及我们提出的许多其他想法)。
可用性是我的工作的重要组成部分,使网站充满乐趣和激情是其余部分的大部分内容。这就是下面三个目标的来源。CAPTCHA会破坏可用性,而机器人则会夺走我们垃圾销售的乐趣和激情。
机器人正在以每秒数十次的速度猛攻我们的首页,屏幕抓取(和/或扫描我们的RSS)来查找随机垃圾销售。一旦它们看到了这个,就触发了程序的第二阶段,即登录、点击我想要一个、填写表格并购买垃圾。
评估
lc:在Stack Overflow和其他使用此方法的网站上,它们几乎总是处理经过身份验证(已登录)的用户,因为需要进行尝试的任务需要。
在Woot上,匿名(未登录)用户可以查看我们的主页。换句话说,猛攻机器人可以是非认证的(基本上是不可跟踪的,除非通过IP地址)。
因此,我们又回到了扫描IP的问题,a)在这个云网络和垃圾邮件僵尸的时代,这种方式几乎没有用,b)由于许多企业来自一个IP地址(更不用说非静态IP ISP的问题和尝试跟踪可能带来的性能损失),会抓住太多无辜者。
哦,如果让人们给我们打电话将是最糟糕的情况。可以让他们给你打吗?
BradC: 纳德·巴切尔的方法看起来不错,但它们基本上是为了打败一组网站而设计的机器人。我们的问题是机器人专门针对我们的网站进行构建。其中一些方法可能会在短时间内奏效,直到脚本作者进化出可以忽略诱饵、屏幕截图附近标签名称而非表单ID以及使用具有JavaScript功能的浏览器控件的机器人。
lc again: “当然,如果炒作是您的营销计划的一部分。” 是的,确实是这样。项目出现的惊喜,以及如果您设法获得一个的兴奋程度可能与或更重要,比您最终得到的垃圾物品。任何消除先到先得的东西都会削弱抢到“垃圾”的激情。
novatrust: 我为新的机器人霸主感到高兴。我们实际上提供了RSS订阅以允许第三方应用扫描我们的产品信息,但不能超越主站HTML。如果我理解正确,您的解决方案确实有助于实现目标2(性能问题),但会完全牺牲目标1,只是接受机器人将购买大部分垃圾这一事实。我投了您的回答因为我认为您最后一段的悲观论调很准确。这里似乎没有银弹。
其他反应通常依赖于IP跟踪,但似乎既无用(对于僵尸网络/云网络)又会捕捉到许多从相同IP目的地过来的无辜者。
还有其他方法/想法吗?我的开发人员一直说“让我们只做CAPTCHA”,但我希望有不那么侵入性的方法来满足所有真正想要购买我们垃圾物品的人。
原始问题
假设你在销售价格很便宜但具有非常高的感知价值的东西,并且你只有很少的数量。没有人确切地知道您何时将销售此项目。每天会有超过一百万人经常来看看您正在出售什么。
最终,脚本作者和机器人尝试以编程方式[a]弄清楚何时出售该物品,并[b]确保他们是第一个购买的人。这有两个缺点:
- 非人类用户拖慢了您的站点,使所有人都变得缓慢。
- 脚本作者最终“赢得”产品,使常规用户感到受骗。
- 对于普通人来说,用户体验很差,因为他们必须解密CAPTCHA、挑选猫或解决数学问题。
- 如果感知到的收益足够高且人群足够庞大,某些人群将找到绕过任何微调的方式,从而导致武器竞赛。 (特别是当微调越简单;隐藏的“注释”表单,重新排列表单元素,错误标记它们,隐藏的“gotcha”文本都会起作用,并且需要更改以抵抗针对该特定表单的攻击)
- 即使脚本作者无法“解决”您的微调,也不会防止他们在前端页面上滥用,然后发出警报,让脚本作者手动填写订单。考虑到他们从[a]中获得了优势,他们可能仍然会赢得[b],因为他们将是第一个到达订单页面的人类。此外,1.仍会发生,导致服务器错误并降低所有人的性能。
目标
- 向非脚本编写的人出售商品。
- 保持网站运行速度,不受机器人减速的影响。
- 不要让“正常”用户完成任何任务来证明他们是人类。