停止脚本从砰击您的网站
我已经接受了一个答案,但令人遗憾的是,我相信我们陷入了我们最原始的最糟糕的情况: CAPTCHA每个人都在购买废话的尝试 。 简短的解释:缓存/网站农场无法跟踪点击数,任何解决方法(发送非缓存的网络信标,写入统一表格等)都会降低网站的速度。 思科等昂贵的硬件可能会提供很高的帮助,但如果CAPTCHA-everyone是另一种选择,则很难证明成本合理。 我会在稍后尝试更全面的解释,以及为将来的搜索者进行清理(尽管欢迎其他人尝试,因为它是社区wiki)。
情况
这是关于woot.com上的垃圾袋销售。 我是Woot Workshop的子公司Woot Workshop的总裁,Woot的子公司是设计人员,负责编写产品说明,播客,博客文章和讨论论坛。 我使用CSS / HTML工作,并且对其他技术几乎不熟悉。 我与开发人员密切合作,并在此讨论了所有的答案(以及我们已有的许多其他想法)。
可用性是我工作的重要组成部分,使网站令人兴奋和有趣的是其余的大部分。 这就是以下三个目标的来源。 CAPTCHA危害可用性,机器人从我们的废话销售中窃取乐趣和兴奋。
机器人正在为我们的随机发售出售数十次屏幕抓取(和/或扫描我们的RSS)。 当他们看到这一点时,它触发了登录程序的第二阶段,点击我想要的One,填写表单并购买废话。
评估
lc:在使用此方法的stackoverflow和其他站点上,他们几乎总是处理已验证(已登录)的用户,因为正在尝试的任务需要这样做。
在Woot上,匿名(未登录)的用户可以查看我们的主页。 换句话说,砰击机器人可以是非认证的(并且除IP地址之外基本上不可追踪)。
所以我们又回到了扫描IP地址的问题:a)在这个云计算网络和spambot僵尸时代没有任何用处; b)由于来自一个IP地址的企业数量太多,导致无辜者屡见不鲜(更不用提非静态IP ISP和潜在的性能命中来试图追踪这一点)。
哦,有人打电话给我们会是最糟糕的情况。 我们可以让他们打电话给你吗?
BradC:Ned Batchelder的方法看起来很酷,但他们的设计非常稳固,可以击败为网站建立的机器人。 我们的问题是机器人专门用来击败我们的网站。 其中一些方法很可能会在很短的时间内运行,直到脚本编程人员发展出他们的机器人来忽略蜜罐,屏幕抓取附近的标签名称而不是表单ID,并使用支持JavaScript的浏览器控件。
再次说:“当然,除非宣传是你营销计划的一部分。” 是的,它绝对是。 当物品出现的时候,以及如果你设法得到一个令人兴奋的惊喜,可能与你最终得到的废话一样多或者更重要。 任何消除先到先/先服务的东西都不利于“赢得”废话的快感。
novatrust:就我而言,欢迎我们新的机器人霸主。 我们实际上提供RSS源,以允许第三方应用程序扫描我们的网站以获取产品信息,但不在主网站HTML之前。 如果我正确地解释它,你的解决方案通过完全牺牲目标1来确实有助于目标2(性能问题),并且只是放弃了机器人将购买大部分垃圾的事实。 我投了你的回应,因为你的最后一段悲观主义对我来说是准确的。 这里似乎没有银弹。
其他答复通常依赖于IP追踪,这似乎同样无用(与僵尸网络/僵尸/云网络)并且有害(捕捉来自同一IP目的地的许多无辜者)。
任何其他方法/想法? 我的开发人员总是说“让我们做CAPTCHA”,但我希望对所有想要我们一些废话的人来说,这些方法都不那么令人反感。
原始问题
假设你正在销售一种价格非常高的廉价产品,而且你的数量非常有限。 没人确切知道你什么时候会卖这个物品。 超过一百万人经常来看你卖的东西。
你最终会遇到脚本编写人员和机器人试图通过编程的方式[a]发现你销售物品时的情况,并确保他们是第一个购买它的人。 这有两个原因:
一个看似明显的解决方案是在下订单前为用户创建一些环节,但至少有三个问题:
另一种解决方案是监视IP经常打,阻止他们从防火墙,否则阻止他们订购。 这可以解决2.并阻止[b],但扫描IP所带来的性能巨大,并可能导致更多的问题,如脚本编写者自己造成的问题。 此外,云网络和spambot僵尸的可能性使得IP检测相当无用。
第三个想法是迫使订单在一段时间内(比如说半秒)被加载,这可能会减慢快速订单的进度,但是同样,脚本编写人员仍然是第一批在任何速度下都不会对实际用户。
目标
如何实施像SO这样的CAPTCHA?
如果您正常使用该网站,则可能永远无法看到该网站。 如果您碰巧经常重新加载相同的页面,过快地发布连续的评论,或触发警报的其他事情,可以证明他们是人类。 在你的情况下,这可能会不断重新加载同一页面,快速查看页面上的每个链接,或填写订单表单太快而无法成为人。
如果他们连续检查x次(例如2或3次),则给该IP超时或其他此类措施。 然后在超时结束时,将它们重新转回到检查。
由于您有未注册的用户访问该网站,因此您确实只有IP才能继续。 如果您愿意,您可以向每个浏览器发布会话并进行跟踪。 当然,如果连续(重新)创建了很多会话(如果机器人不断删除cookie),就要进行人工检查。
就捕捉太多无辜者而言,您可以在人工检查页面上提出免责声明:“如果有太多的匿名用户在同一地点观看我们的网站,也可能会出现此页面。我们鼓励您注册或登录以避免这个。” (适当调整措辞。)
此外,X人从一个IP同时加载同一页面的几率是多少? 如果它们很高,也许你需要一个不同的触发机制来处理你的机器人警报。
编辑:另一种选择是,如果他们失败太多次,并且您对产品的需求有信心,阻止他们并让他们亲自打电话给您删除该块。
有人打电话看起来像是一个天秤,但它确保电脑后面有一个人。 关键是让这个区块只适用于一个几乎不会发生的情况,除非它是一个机器人(例如连续多次检查失败)。 然后它强制人类互动 - 拿起电话。
为了回应他们给我打电话的评论,这里显然有这种权衡。 您是否担心确保您的用户在出售时能接受几个电话? 如果我非常担心产品能够吸引用户,我必须做出这个决定,或许会牺牲我的一小部分时间。
由于您似乎决定不让机器人占据上风/严重影响您的网站,我相信这款手机可能是一个不错的选择。 由于我不会从您的产品中获利,因此我无意收到这些电话。 然而,如果你分享一些利润,我可能会感兴趣。 因为这是你的产品,所以你必须决定你多少关心和相应地实施。
其他释放块的方式并没有那么有效:超时(但是他们会在你再次冲击你的站点,冲洗 - 重复),长时间的暂停(如果它真的是一个试图购买你的产品的人,他们会因为没有支票而被罚款),电子邮件(很容易通过机器人完成),传真(相同)或蜗牛邮件(花费太长时间)。
当然,您可以在每次IP超时时间内增加超时时间。 只要确保你不会在无意中惩罚真正的人类。
你需要想出一个办法让机器人购买大量价格过高的东西:12毫米翼果:20美元。 在脚本编写者决定对他们进行游戏之前,看看有多少个僵尸程序可以收起来。
利用利润购买更多的服务器并支付带宽。
我的解决方案是通过延迟大约10分钟的漫游器和脚本来使屏幕抓取毫无价值。
以下是我的做法:
您无需在每次击中时记录每个IP地址。 只在每20次点击中追踪一次。 重复犯人仍然会出现在随机的偶尔跟踪中。
从大约10分钟之前保留您的页面缓存。
当重复击球员/机器人击中您的站点时,给他们10分钟的旧缓存页面。
他们不会立即知道他们正在获取旧网站。 他们将能够抓住这一切,但是他们不会再赢得任何比赛,因为“真人”将有10分钟的先发。
优点:
缺点
你怎么看?
链接地址: http://www.djcxy.com/p/21611.html