答案 0 :(得分:227)
如何使用CAP来实现像SO这样的东西?
如果您正常使用该网站,您可能永远不会看到一个。如果您碰巧经常重新加载同一页面,过快地发布连续评论,或者触发警报的其他内容,请让他们证明他们是人。在您的情况下,这可能是对同一页面的不断重新加载,快速跟踪页面上的每个链接,或者填写订单形式太快而不能成为人类。
如果他们连续x次检查失败(例如,2或3),则给该IP超时或其他此类措施。然后在超时结束时,再次将它们转发回检查。
由于您有未注册的用户访问该网站,因此您只能使用IP。您可以向每个浏览器发出会话,并根据需要跟踪。当然,如果连续创建(重新)创建太多会话(如果机器人不断删除cookie),则抛出人工检查。
就捕获太多无辜者而言,您可以在人工检查页面上提出免责声明:“如果有太多匿名用户从同一地点查看我们的网站,也可能会出现此页面。我们建议您注册或登录以避免这种情况。“ (适当调整措辞。)
此外,X人从一个IP同时加载同一页面的几率是多少?如果它们很高,也许你需要一个不同的机器人警报触发机制。
编辑:另一个选择是,如果他们失败了太多次,你对产品的需求有信心,阻止他们并让他们亲自打电话给你去除阻止。
让人们打电话看起来似乎是一种愚蠢的措施,但确保在计算机后面的某个地方。关键是只允许块用于一个几乎不会发生的条件,除非它是一个机器人(例如连续多次检查失败)。然后它FORCES人类互动 - 拿起电话。
回应让他们给我打电话的评论,显然这里有权衡。您是否担心确保您的用户在上市时接听几个电话?如果我非常担心产品会吸引人类用户,我就必须做出这个决定,也许会牺牲我的一小部分时间。
由于您似乎决定不让机器人占据上风/占据您的网站,我相信手机可能是一个不错的选择。由于我没有从您的产品中获利,我没有兴趣接收这些电话。如果你分享一些利润,我可能会对此感兴趣。由于这是您的产品,您必须决定您的关注程度并相应地实施。
释放阻止的其他方式并不是那么有效:超时(但他们会在冲洗后再次猛击你的网站),长时间超时(如果真的是人类试图购买)你的产品,他们是SOL并因检查失败而受到惩罚),电子邮件(很容易通过机器人完成),传真(相同)或蜗牛邮件(花费太长时间)。
当然,您可以在每次超时时使每个IP的超时时间增加。只要确保你不会无意中惩罚真正的人类。
答案 1 :(得分:190)
你需要想办法让机器人购买价格过高的东西:12毫米的机翼:20美元。看看在脚本编写者决定你正在游戏之前抢占了多少机器人。
利用利润购买更多服务器并支付带宽。
答案 2 :(得分:159)
我的解决方案是通过对“机器人和脚本”进行大约10分钟的延迟来使屏幕抓取毫无价值。
我是这样做的:
您不需要记录每次点击的每个IP地址。每20次点击左右只跟踪一次。重复犯罪者仍会出现在随机的偶然跟踪中。
提前约10分钟保留您网页的缓存。
当重复的击球手/机器人击中您的网站时,请为他们提供10分钟的缓存页面。
他们不会立即知道他们正在获得旧网站。他们将能够抓住它,以及一切,但他们不会再赢得任何比赛,因为“真正的人”将有10分钟的领先优势。
<强>优点:强>
<强>缺点强>
您怎么看?
答案 3 :(得分:54)
看看this article by ned Batchelder here。他的文章是关于停止垃圾邮件,但相同的技术可以很容易地应用到您的网站。
而不是停止机器人 人们认同自己,我们可以 通过使困难停止机器人 为他们做一个成功的职位,或 让他们无意识别 自己就像机器人一样。这删除了 人们的负担,离开了 评论表格没有可见的反垃圾邮件 的措施。
这种技术是我如何预防的 这个网站上的垃圾邮件。有用。该 这里描述的方法不看 内容。
其他一些想法:
编辑:要完全清楚,Ned的上述文章描述了通过阻止BOT通过表单提交订单来防止自动购买商品的方法。他的技术对于防止机器人屏幕抓取主页以确定何时出售Bandorer of Carrots是没有用的。我不确定防止这是真的可能。
关于你对Ned策略有效性的评论:是的,他讨论了蜜罐,但我不认为这是他最强的策略。他对 SPINNER 的讨论是我提到他的文章的原因。对不起,我在原帖中没有说清楚:
微调器是用于的隐藏字段 一些事情:它汇集在一起 阻止的值的数量 篡改和重播,并习惯于 模糊的字段名称。微调器是一个 MD5哈希:
- 时间戳,
- 客户的IP地址,
- 正在评论的博客条目的条目ID,以及
- 秘密。
以下是您在WOOT.com上实现的方法:
更改每次新项目开始销售时用作哈希值一部分的“机密”值。这意味着,如果有人要设计BOT来自动购买物品,只有在下一个物品上市时才能使用 !!
即使有人能够快速重建他们的机器人,所有其他实际用户也已经购买了BOC,您的问题就解决了!
他讨论的另一个策略是不时更改蜜罐技术(再次,在新商品上市时更改):
我想我的总体想法是在每件新商品上市时更换表格设计。或者至少在新BOC上市时更改它。
这是什么,几次/月?
如果你接受这个答案,你会在下一个到期时给我一个提醒吗? :)
答案 4 :(得分:44)
您可以使用大量技术来分析传入的请求,然后尝试确定谁是和不是人......但它会失败。最终,如果没有立即。
唯一可行的长期解决方案是更改游戏,以使该网站对机器人不友好,或对脚本编写者不那么有吸引力。
你是怎么做到的?嗯,这是一个不同的问题! ; - )
...
好的,上面已经给出(并拒绝)了一些选项。我对你的网站并不十分熟悉,只看过一次,但由于人们可以阅读图片中的文字而机器人不能轻易做到这一点,所以将公告更改为图像。 不是CAPTCHA ,只是图片 -
对真实的人做出响应的时间试验,忽略('哎呀,发生错误,抱歉!请再试一次')响应速度比(比如说)这段时间的一半快。此事件还应触发开发人员警告,至少有一个机器人已经找到了代码/游戏,因此是时候更改代码/游戏了。
无论如何都要定期更改游戏,即使没有机器人触发它,只是浪费脚本编写者的时间。最终脚本编写者应该厌倦游戏并去其他地方...我们希望; - )
最后一个建议:当您的主页请求进入时,将其放入队列并在单独的进程中按顺序响应请求(您可能需要攻击/扩展Web服务器这样做,但它可能是值得的)。如果第一个请求在队列中时来自同一IP /代理的另一个请求进入,则忽略它。这应该会自动减轻机器人的负担。
编辑:除了使用图像之外,另一个选择是使用javascript填写买/不买文;机器人很少解释javascript,所以他们不会看到它
答案 5 :(得分:29)
我不知道这是多么可行:......继续进攻。
找出机器人扫描的数据。当你不卖垃圾时,给他们提供他们正在寻找的数据。以不会打扰或混淆人类用户的方式执行此操作。当机器人触发第二阶段时,他们将登录并填写表格以购买100美元的roombas而不是BOC。当然,这假设机器人不是特别健壮。
另一个想法是在包装销售期间实施随机价格下降。当你明确指出它只值20美元时,谁会以150美元的价格购买随机包装?没有人,但过分热心机器人。但是9分钟后它就是35美元......然后17分钟后它就是9美元。或者其他什么。
当然,僵尸国王能够做出反应。关键是要让他们的错误对他们来说变得非常昂贵(并让他们付钱给你打击他们)。
所有这些假设你想要惹恼一些机器人领主,这可能不是100%明智的。
答案 6 :(得分:21)
所以问题实际上似乎是:机器人想要他们的“袋子”,因为它在低感知价格下具有很高的感知价值。你有时提供这个项目和机器人潜伏,等待它是否可用然后他们购买该项目。
由于看起来机器人所有者正在赚取利润(或潜在地赚取利润),所以诀窍就是通过鼓励他们购买垃圾来让他们无利可图。
首先,始终提供“bag'o crap”。
其次,确保垃圾通常是垃圾。
第三,经常旋转垃圾。
简单,不是吗?
你需要永久性的“为什么我们的垃圾有时会废话?”链接旁边的链接向人类解释正在发生的事情。
当机器人看到有废话并且废话被自动购买时,收件人会非常不安,因为他们已经为破牙签支付了10美元。然后是一个空的垃圾袋。然后是鞋底的一些污垢。
如果他们在相对较短的时间内购买了足够的废话(并且你在整个地方都有大量的免责声明解释你为什么要这样做),那么他们将失去一个公平的“袋子”现金“在你的“袋子'废话”。如果你经常旋转垃圾,即使是人为干预(检查以确保垃圾不是垃圾)也会失败。哎呀,也许机器人会注意到并且不会购买旋转时间太短的任何东西,但这意味着人类将购买非垃圾。
哎呀,你的老顾客可能会觉得很有趣,你可以把它变成一个巨大的营销胜利。开始发布有多少“垃圾”鲤鱼被出售。人们会回来看看机器人被咬的有多难。
更新:我希望您可能会在人们抱怨的情况下预先接听几个电话。我认为你不能完全阻止它。但是,如果这会杀死僵尸程序,您可以随时停止它并稍后重新启动它。
答案 7 :(得分:15)
将该项目出售给非脚本人。
让网站以不受机器人减速的速度运行。
- 醇>
不要让“正常”用户麻烦完成任何任务以证明他们是人。
你可能不想听到这个,但#1和#3是相互排斥的。
嗯,没有人知道你也是机器人。没有程序方法可以告诉连接的另一端是否有人,而不需要该人做某事。阻止脚本/机器人在网上做事是CAPTCHAs发明的全部原因。这并不是说这是一个没有花费大量精力的新问题。如果有一个更好的方法,一个不涉及CAPTCHA真正用户的麻烦,每个人都会使用它。
我认为你需要面对这样一个事实,即如果你想让机器人关闭你的订购页面,一个好的CAPTCHA是唯一的方法。如果对你的随机垃圾的需求足够高,人们愿意花这些长度来获得它,那么合法用户就不会被CAPTCHA推迟。
答案 8 :(得分:13)
答案 9 :(得分:11)
免责声明:此答案完全与非编程相关。但是,它确实试图首先攻击脚本的原因。
另一个想法是,如果你真的有限量销售,为什么不从先到先得的方法改变它?当然,除非炒作是您营销计划的一部分。
还有很多其他选择,我相信其他人可以想到一些不同的选择:
订购队列(预订系统) - 某些脚本可能仍然在队列的前面,但是手动输入信息可能更快。
抽奖系统(每个试图订购一个人的系统都会进入系统) - 这样,拥有脚本的人与没有脚本的人有相同的机会。
紧急优先排队 - 如果确实有很高的感知价值,人们可能愿意支付更多。实施一个排序队列,但允许人们支付更多费用以置于队列中更高的位置。
拍卖(大卫施密特为此拍的信息,评论是我自己的) - 人们仍然可以在最后一分钟使用脚本来狙击,但它不仅改变了定价结构,人们期望和别人争吵。您还可以做一些事情来限制给定时间段内的出价数量,让人们提前拨打授权码等等。
答案 10 :(得分:11)
无论纳粹认为他们的通信有多么安全,盟友往往会打破他们的信息。无论你如何阻止机器人使用你的网站,机器人所有者都会找到解决方法。如果那让你成为纳粹分子我很抱歉: - )
我认为需要不同的心态
认识到,无论您的网站的客户是人还是机器人都无关紧要,两者都只是付费客户;但是一个人比另一个人有不公平的优势。一些没有太多社交生活(隐士)的用户可能像你的网站其他用户一样烦恼。
记录您发布优惠的时间以及帐户选择购买优惠的时间。
这可以让您记录速度 客户正在买东西。
改变您发布优惠的时间。
例如,有一个3小时的窗口 从一些不起眼的时间开始 一天(午夜?)只有机器人和隐士 将不断刷新3页 只是为了获得订单 秒。永远不要改变基准时间, 只有窗口的大小。
随着时间的推移,将出现一幅画面。
01:您可以看到哪些帐户会在产品上市后的几秒钟内定期购买产品。建议他们可能是机器人。
02:您还可以查看优惠所用的时间窗口,如果窗口是1小时,那么一些早期购买者将是人类。但是人类很少会刷新4小时。如果发布/购买之间的经过时间非常一致,无论窗口持续时间如何,那么这就是机器人。如果小窗口的发布/购买时间较短,而大窗户的发布/购买时间较长,那就是隐士!
现在,您不必停止机器人使用您的网站,而是有足够的信息告诉您机器人当然使用了哪些帐户,以及隐士可能会使用哪些帐户。你对这些信息的处理取决于你,但你当然可以用它来使你的网站更有生命力。
我认为禁止机器人帐户将毫无意义,这类似于打电话给希特勒并说“感谢你的U艇的位置!”不知何故,您需要以帐户所有者不会意识到的方式使用这些信息。让我们看看我是否可以做任何事情......
处理队列中的订单:
当客户下订单时,他们会立即收到一封确认电子邮件,告知他们将订单放入队列中,并在处理完毕后收到通知。我在亚马逊上通过订单/发送体验这种事情,它根本不打扰我,我不介意在几天后收到一封电子邮件,告诉我我的订单已经发送,只要我立即收到一封电子邮件告诉我亚马逊知道我想要这本书。在您的情况下,它将是
的电子邮件用户认为他们在公平的队列中。每隔1小时处理一次队列,以便普通用户也会遇到队列,以免引起怀疑。只有在他们进入“平均人类订购时间+ x小时”的队列中时才处理来自机器人和隐士帐户的订单。有效减少人体的机器人。
答案 11 :(得分:10)
我说使用API公开价格信息。这是不直观的解决方案,但它可以帮助您控制情况。为API添加一些限制,使其功能略逊于网站。
您可以按顺序执行相同的操作。您可以尝试对API功能/性能进行小的更改,直到获得所需的效果。
有代理和僵尸网络可以打败IP检查。有一些非常好的验证码阅读脚本。印度甚至有一些工人团队以很低的价格击败验证码。您可以提出的任何解决方案都可以合理地失败。甚至Ned Batchelder的解决方案也可以通过使用WebBrowser控件或其他模拟浏览器以及僵尸网络或代理列表来解决。
答案 12 :(得分:7)
我们目前正在使用F5的最新一代BigIP负载平衡器来实现这一目标。 BigIP具有先进的流量管理功能,可以根据频率和使用模式识别刮板和机器人,即使是在单个IP背后的一组源中也是如此。然后它可以限制这些内容,为它们提供替代内容,或者只是使用标题或cookie标记它们,以便您可以在应用程序代码中识别它们。
答案 13 :(得分:6)
如何引入需要人工干预的延迟,就像一种“CAPTCHA游戏”。例如,它可能是一个小小的Flash游戏,在30秒内他们必须爆破方格球并避免爆破实心球(避免色盲问题!)。游戏将被赋予一个随机数种子,游戏传回服务器的将是点击点的坐标和时间戳,以及使用的种子。
在服务器上,您使用该种子模拟游戏机制,以查看点击是否确实会破坏球。如果他们这样做,他们不仅是人类,而且还需要30秒才能验证自己。给他们一个会话ID。
您允许该会话ID执行其喜欢的操作,但如果请求过多,则无法再次播放时无法继续。
答案 14 :(得分:6)
答案 15 :(得分:5)
已经发布了一些其他/更好的解决方案,但为了完整起见,我想我会提到这个:
如果你主要担心的是性能下降,并且你正在看真正的锤击,那么你实际上正在处理DoS攻击,你应该尝试相应地处理它。一种常见的方法是在每秒/分钟/等的多个连接之后简单地从防火墙中的IP丢弃分组。例如,标准Linux防火墙iptables具有标准操作匹配函数'hashlimit',可用于将每个时间单元的连接请求与IP地址相关联。
虽然这个问题可能更适合上次SO-podcast中提到的下一个SO衍生物,但它尚未推出,所以我想可以回答:)
修改:
正如novatrust所指出的,仍然有ISP实际上没有为他们的客户分配IP,所以有效地,这样一个ISP的脚本客户会禁用该ISP的所有客户。
答案 16 :(得分:5)
在应用程序前面的apache服务器上编写一个反向代理,它实现了一个Tarpit (Wikipedia Article)来惩罚机器人。它只会管理在过去几秒内连接的IP地址列表。您从单个IP地址检测到一连串请求,然后在响应之前以指数方式延迟这些请求。
当然,如果他们在NAT网络连接上,多个人可以来自相同的IP地址,但是人们不太可能会想到你的响应时间为2mS到4mS(甚至400mS),而机器人很快就会受到延迟增加的阻碍。
答案 17 :(得分:4)
答案 18 :(得分:4)
答案 19 :(得分:4)
即使使用验证码,也无法完全阻止机器人。但是,您可以使编写和维护机器人变得困难,从而减少数量。特别是通过强迫他们每天更新他们的机器人,你将导致大多数人失去兴趣。
以下是一些让机器人更难写的想法:
需要运行javascript函数。编写机器人时,Javascript更加困难。如果他们没有运行javascript仍然允许实际的非JavaScript用户(最小),可能需要验证码。
键入表单时的键击时间(再次通过javascript)。如果它不像人类那样拒绝它。在机器人中模仿人类打字是一种痛苦。
编写代码,每天使用新的随机值更新字段ID。这将迫使他们每天更新他们的机器人,这是一种痛苦。
编写代码以每天重新排序字段(显然以某种方式对用户来说不是随机的)。如果他们依赖于现场订单,这将使他们绊倒并再次强制每日维护他们的机器人代码。
您可以更进一步使用Flash内容。写一个机器人对Flash来说完全是一种痛苦。
一般来说,如果你开始采取不阻止它们的心态,但让它更适合它们,你可以实现你正在寻找的目标。
答案 20 :(得分:4)
对未注册用户的所有产品公告延迟5分钟。休闲用户不会真正注意到这一点,无论如何都会注册非常用户。
答案 21 :(得分:3)
我没有看到您通过检查传入的IP声称的巨大负担。相反,我为我的一个客户做了一个项目,每隔五分钟就会分析一次HTTP访问日志(可能是实时的,但他不想因为某种原因我从未完全理解)和创建防火墙规则以阻止来自生成过多请求的任何IP地址的连接,除非该地址可以被确认为属于合法搜索引擎(谷歌,雅虎等)。
此客户端运行Web托管服务,并在三台服务器上运行此应用程序,这三台服务器共处理800-900个域。峰值活动在每秒千次点击范围内并且从未出现性能问题 - 防火墙在从黑名单地址中丢弃数据包方面非常有效。
而且,是的,DDOS技术确实存在会破坏这个计划,但他并没有在现实世界中看到这种情况。相反,他说这大大减轻了他服务器的负担。
答案 22 :(得分:3)
我的方法是专注于非技术解决方案(否则你将进入一场你将失去的军备竞赛,或者至少花费大量的时间和金钱)。我专注于计费/发货部分 - 您可以通过查找多个交付到同一地址或多次收费到单一付款方式来找到机器人。你甚至可以在几个星期内跨项目这样做,所以如果用户得到了一个以前的项目(通过非常快速的回复),他可能会被分配某种“障碍”。
这也会产生副作用(我认为这是有益的,但对于你的情况我可能是错误的营销方式)或许会扩大那些幸运的人并购买woot的人。
答案 23 :(得分:3)
已经提供了大多数纯粹的技术解决方案。因此,我会建议另一种观点。
据我了解,机器人是由真正的人设立的,试图购买您正在销售的行李。问题是 -
您可以让潜在的购物者订阅电子邮件,甚至短信更新,以便在销售时获得通知,而不是试图避开机器人。您甚至可以给他们一两分钟的开头(一个特殊的URL,其中销售开始,随机生成,并与邮件/ SMS一起发送)。
当这些买家去购买时,他们就在你的网站上,你可以在横幅或其他任何地方向他们展示你想要的东西。那些运行机器人的人更愿意只注册你的通知服务。
机器人跑步者可能仍在您的通知上运行机器人以更快地完成购买。一些解决方案可以提供一键式购买。
顺便说一句,你提到你的用户没有注册,但听起来那些购买这些包的人不是随机的买家,而是期待这些销售的人。因此,他们可能愿意注册以获得试图“赢”一个包的优势。
从本质上讲,我所建议的是尝试将问题视为社交问题,而不是技术问题。
阿萨夫
答案 24 :(得分:2)
每分钟发出如此多请求的时间段用户代理。例如,如果你有人在10分钟内每隔5秒就要求一个页面,那么他们可能不是一个用户......但要做到这一点可能会很棘手。
如果他们触发警报,请将每个请求重定向到尽可能少的DB-IO的静态页面,并显示一条消息,告知他们将在X分钟内重新启用。
重要的是要补充一点,你应该只应用于页面请求,并忽略所有媒体请求(js,图像等)。
答案 25 :(得分:2)
防止DoS会击败上面概述的@ davebug目标中的第2个,“保持网站的速度不会被机器人减速”,但不必解决#1,“将项目卖给非脚本人”
我确信一个脚本编写者可以在超出限制的范围内写一些东西,这个限制仍然比人类通过订购表格更快。
答案 26 :(得分:2)
好吧所以垃圾邮件发送者不会竞争普通人赢得“垃圾bog”拍卖?为什么不让下一次拍卖成为一个字面意思“垃圾袋”?垃圾邮件发送者可以为一个装满狗狗的袋子付出很多钱,我们都嘲笑他们。
答案 27 :(得分:2)
这里重要的是更改系统以从服务器中移除负载,防止机器人赢得垃圾袋而不让机器人知道您正在游戏他们或他们将修改他们的策略。如果没有一些处理,我认为没有办法做到这一点。
因此,您可以在主页上录制点击量。每当有人点击页面时将连接与其最后一次点击进行比较,如果它太快,则会发送没有该提议的页面版本。这可以通过某种负载平衡机制来完成,该机制将机器人(命中率太快)发送到服务器,该服务器只提供主页的缓存版本;真实的人被送到好的服务器。这样可以减轻主服务器的负担,并使机器人认为它们仍在正确地为页面提供服务。
如果报价可以某种方式被拒绝,那就更好了。然后你仍然可以在虚拟服务器上提供优惠但是当机器人填写表格时说“对不起,你不够快”:)然后他们肯定会认为他们还在游戏中。
答案 28 :(得分:2)
您如何知道有脚本编写者下订单?
您的问题的关键在于您无法将脚本编写者与合法用户分开,因此无法阻止他们,那么您如何知道脚本编写者呢?
如果您有办法回答这个问题,那么您可以使用一组特征来过滤脚本编写者。
答案 29 :(得分:2)
让我们把问题放在首位 - 你有机器人购买你想要真正的人购买的东西,如何让机器人真正有机会购买你不想要的东西真人要买。
随机抽取一些非显示的HTML,刮痧机器人会认为是真实的情况,但真实的人不会看到(并且不要忘记真正的人包括盲人,所以考虑屏幕阅读器等),并且通过购买昂贵的东西(或者不进行实际购买,但是获得付款细节以便加入禁令)。
即使机器人切换到“警告用户”而不是“购买”,如果你能获得足够的误报,你也许能够让它对人们来说毫无价值(可能不是每个人都有,但是骗局总比没有好,不要打扰。
答案 30 :(得分:2)
只是一个侧面评论:在我看来问题是,你的用户期望的行为非常类似于机器人(进入大浪,未经验证,点击每个按钮:)),所以Captcha可能是只有图灵测试才能辨别出它:))。
答案 31 :(得分:1)
您可以尝试让脚本更难以阅读。这可以通过将其转换为图像来实现,但文本识别算法仍然可以解决这个问题。如果有足够的脚本编写者,你可以尝试将类似验证码的东西应用到这个图像,但显然是以用户体验为代价。而不是图像,价格可以在闪存应用程序中。
或者,您可以尝试设计一种方法,以某种方式“刷新”页面的HTML,而不会影响呈现。我无法想到一个很好的例子,但我确信它有点可行。
答案 32 :(得分:1)
如何:创建一个表单,以便在新商品开始销售时接收电子邮件,并添加一个捕获系统,该系统将为在不到X秒内刷新的任何人提供相同的内容。
通过这种方式,您可以赢得所有的方案:您可以摆脱刮刀(他们可以刮掉他们的电子邮件帐户),并为那些不想在您的网站上购买的东西的人提供机会!我确定如果我真的想要的话,我会在手机上收到电子邮件并登录购买。
答案 33 :(得分:1)
如上所述,我通过使用预先计算的表格中存储结果的预期值的哈希值,对非验证码表单做了一些工作。这个想法适用于两个Wordpress反垃圾邮件插件:WP-Morph和WP-HashCash。唯一的缺点是客户端浏览器必须能够解释JavaScript。
答案 34 :(得分:1)
所以你的问题太多了吗?人们在扼杀你的销售?这假设这些脚本编写者正在产生合格的销售额?问题是他们在其他人之前抢购了所有产品吗?
如何为“脚本编写者”创建完整的Web服务API以进行交互。然后根据你的规则提供一点点折扣或某种特殊待遇。使您的业务翻倍,并进行网络销售和API销售。
或者只是获得更多的库存 - 你无法抗拒它 - 拥抱并适应它。
答案 35 :(得分:1)
这是我的看法。攻击机器人所有者的投资回报率,这样他们就可以做你希望他们做的合法事情,而不是作弊。让我们从他们的角度来看待它。他们的资产是什么?显然,无限数量的一次性机器,IP地址,甚至可能是大量不熟练的人愿意做无聊的任务。他们想要什么?在其他合法的人得到它之前,总是得到你提供的特殊优惠。
好消息是他们只有有限的时间来赢得比赛。我不认为他们拥有的是无限数量的聪明人,他们在您发布交易时随时对您的网站进行逆向工程。因此,如果你能让他们跳过一个很难让他们弄清楚的特定箍,但是对于你的合法客户来说是自动的(他们甚至不知道它在那里),你可以将他们的努力推迟到足以让他们被大量真实的人只是渴望得到你的热门交易。
第一步是让你的身份验证非二进制,我的意思是,对于任何给定的用户,你有一个概率分配给他们,他们是真人或机器人。您可以使用一些提示来建立这种可能性,其中许多已在此主题中讨论过:可疑费率活动,IP地址,外国地理位置,Cookie等。我最喜欢的是注意确切的版本他们正在使用的Windows。更重要的是,您可以通过强有力的提示为您的长期客户提供明确的方式进行身份验证:通过与网站互动,购买,为论坛做出贡献等。您不需要执行这些操作,但如果您这样做,那么您在看到特价交易的时候会有一点点优势。
每当您被要求做出身份验证决定时,请使用此概率使您正在谈话的计算机执行或多或少的工作,然后再向他们提供他们想要的内容。例如,您网站上的某些javascript可能要求客户端在后台执行计算成本高昂的任务,并且只有当该任务完成时,您才会让他们知道特殊交易。对于普通客户来说,这可以非常快速和轻松,但对于骗子来说,这意味着他们需要更多的计算机来保持持续的覆盖范围(因为每台计算机都需要做更多的工作)。然后,您可以使用上面的概率分数来增加他们必须完成的工作量。
为了确保此延迟不会导致任何公平性问题,我建议将其作为某种加密任务,包括当前人员计算机上的时间。由于诈骗者不知道交易何时开始,他不能只是做出一些东西,他必须使用接近实时的东西(你可以忽略任何声称在交易开始前进来的请求) )。然后你可以使用这些时间来调整先到先得的规则,而真正的人们不必了解它。
最后一个想法是每当您发布新交易时(以及随机的其他时间)更改生成工作所需的算法。每当你这样做,正常人将不受影响,但机器人将停止工作。他们必须让一个人开始进行逆向工程,这可能需要比你的交易窗口更长的时间。更好的是,如果你从未告诉他们是否提交了正确的结果,那么他们就不会得到任何警告他们做错了。要打败这个解决方案,他们必须实际自动化一个真正的浏览器(或至少是一个真正的JavaScript解释器),然后你真的抬高了诈骗的成本。另外,使用真正的浏览器,你可以像在这个线程中的其他地方那样建议一些技巧,例如计时每个条目的击键并寻找其他可疑行为。
因此,对于您之前见过的人(常见的IP,会话,cookie等),您有办法让每个请求都贵一点。这意味着诈骗者总是希望为您提供最难的案例 - 一种您从未见过的全新的计算机/浏览器/ IP组合。但是,通过做一些额外的工作,甚至可以知道他们是否正确运行机器人,你迫使他们浪费了大量这些宝贵的资源。虽然它们可能确实具有无限数量,但生成它们并非没有成本,而且您再次提高其ROI等式的成本部分。最终,他们只做你想做的事情会更有利可图:)
希望这很有帮助,
埃里克
答案 36 :(得分:1)
为什么不把内容变成CAPTCHA?
在显示奖品的页面上,当打开包装销售时,始终在同一位置具有相同名称的图像文件,动态生成并加载包含广告奖品的文本等图像。没有销售只是有一些与网站很好地集成的默认图像。看起来像它与CAPTCHA相同的概念...如果机器人无法弄清楚图像的含义,他们将无法“赢”它,如果他们能够能够找到你的CAPTCHA图像。 / p>
答案 37 :(得分:1)
我不知道是否已经建议这样做,而是保留一个机器人的IP列表,而不是你需要在每个页面请求中扫描,为什么不设置cookie或会话var到跟踪机器人?这是PHP中的一个例子:
<?php
// bot check
$now = microtime(true);
// bot counter var
$botCounter = 0;
if (array_key_exists('botCheck_panicCounter', $_REQUEST))
{
$botCounter = $_REQUEST['botCheck_panicCounter'];
}
// if this seems to be a bot
if ($botCounter > 5)
{
die('Die()!!');
}
// if this user visited before
if (array_key_exists('botCheck_lastVisit', $_REQUEST))
{
$lastVisit = $_SESSION['botCheck_lastVisit'];
$diff = $now - $lastVisit;
// if it's less than a second
if ($diff < 1)
{
// increase the bot counter
$botCounter += 1;
// and save it
$_REQUEST['botCheck_panicCounter'] = $botCounter;
}
}
// set the var for future use
$_SESSION['botCheck_lastVisit'] = $now;
// ---------------
// rest of the content goes here
?>
我没有检查语法错误,但是你明白了。
答案 38 :(得分:1)
首先,不要试图用技术来击败技术。
您的问题:
你的目标:
目标#1:让网站以不受机器人减速的速度运行。
这实际上非常简单。让别人主持该页面。 Amazon S3 / Akamai托管该页面,而不是在您的服务器上托管首页。无论如何,页面的大部分都是“静态的”。每5分钟左右重新生成一次页面,刷新更多动态项目。 (如果你愿意的话,每1分钟再生一次)。但是现在机器人没有碰到你的服务器 - 他们正在击中Akamai的CDN,这肯定能够承担负担。
当然这也适用于RSS feed。没有理由为什么其他服务无法为您带来带宽/负载。在相关的说明中,让Akamai等提供所有图像。为什么要点击?
目标#2:将该项目出售给非脚本人
我与其他人一致认为,这样做可以使脚本没有真正的优势。然而,脚本编写也是一个热情的woot客户的标志,所以你也不想成为一个*洞。
所以我会说让他们买,但让他们支付夸大的金额(或更优选)只是放慢速度,以便其他人有机会。
因此,每当用户点击该网站时,都会以29.99美元的价格提供垃圾袋,并以随机速度下降计价或提高价格。有一个图像或一些其他指示器告诉人类,如果他们有耐心,价格会降低。
用户有“立即购买!”当他们看到价格/#项目是他们想要的时候他们点击的按钮。
示例:
用户:
...重复
逐渐收紧周期,延长显示正确“$ 4.99(tres itemos)”的时间
如果机器人点击刷新,则循环重新开始。如果用户错过并选择了错误的商品数/价格 - 决定是否要让他们以该价格购买。
如果他们“超支”,例如,他们为3件物品支付24.99美元,而woot只需要向他们收取4.99美元的3件物品,然后包括一张优惠券,可以在他们的下一次购买时获得20美元的优惠券。
目标#3:不要让“正常”用户无法完成任何任务以证明他们是人类。
你在这里犯了一个逻辑谬误。您假设任何图灵测试(http://en.wikipedia.org/wiki/Turing_test)必须令人恼火。这不是真的!
以下是一些想法:
只询问3次,因为你真正想要做的就是减慢脚本kidees。
答案 39 :(得分:1)
我同意上面的海报,他说有时会卖掉真正的'垃圾'袋子。
您似乎已经提出了一种商业模式,该服务受限于您尝试提供该技术的技术。然而,像大多数具有技术头脑的人(不是一个crticism,毕竟这是该网站的用途),你正试图想出一个技术解决方案。但这是一个商业问题。这是由于技术失败造成的,但这并不意味着技术就是答案。大多数人提出的所有解决方案(并且会有很多选择)最终会被那些决定“自动购买”(因为缺少更好的简短说明)的人绕过你的'废话袋'。
恕我直言,你错误地向错误的人提问,你会在错误的解决方案上浪费大量的时间和资源。
答案 40 :(得分:1)
我在这里与OP达成一致 - 没有验证码的请求 - 这不是一种非常糟糕的做法。
首先设置几个bot陷阱。我会更频繁地在主页上提到BOC,因为机器人不是智能的,因此机器人陷入困境,所以每次都会有不同的措辞,例如“中银抱怨了!” - 所以机器人只是扫描关键字会陷入困境。
但是,我认为这里的真正问题是双重的,首先是您需要解决的性能问题,今天是机器人导致问题,但它向我表明存在性能问题需要解决。
其次,这是一个商业机会,可以转移一些真正的垃圾获利。所以我会保持整体的woot风格并声明“我们检查机器人。如果我们认为你是机器人,你将得到一盒僵尸。”
机器人检查将在销售完成后的某个时间离线完成,使用机器人陷阱,IP编号,cookie,会话,浏览器字符串等。对您购买者的数据进行一些严肃的分析,以确定谁得到僵尸。如果您决定运送botcrap - 那么您可以释放一些正常的垃圾卖给别人。
答案 41 :(得分:1)
一些想法:
简单:不要将其命名为“Random Crap”。每次更改项目的名称,以便机器人更难识别它。他们可能仍会寻找1.00美元的商品,在这种情况下,我建议偶尔会卖几美元的口香糖几分钟。 5美元的运费应该值得你花时间。
更难:不要让用户做任何额外的事情 - 让用户的电脑做额外的事情。编写一个JavaScript函数,执行密集计算,获取大量处理能力 - 比如第1000万个素数 - 并让用户的计算机计算该值并在接受订单之前将其传回(甚至可以创建“下订单“URL”。更改每个BoC的功能,以便机器人无法预先计算和缓存结果(但这样你就可以)。计算开销可能只会减慢机器人的速度,足以让它们远离你的背部 - 如果不出意外的话,它会减慢服务器上的点击速度,以便它们可以呼吸。你也可以随机改变计算的深度 - 千万分之一到百万分之一 - 这样订购过程就不再是先到先得,先服务,并且避免用较慢的计算机来惩罚客户。
答案 42 :(得分:0)
不是阻止可疑IP,因此当点击/分钟上升时,减少您为地址提供的数据量可能是有效的。因此,如果机器人击中你超过秘密随机改变的阈值,它将无法看到数据。登录用户始终会看到数据。经常登录服务器的用户将被强制重新进行身份验证,或者获得验证码。
答案 43 :(得分:0)
解决方案可能是将一些客户端处理附加到登录和购买的操作上。处理的数量可以忽略不计,这样个人就不会受到影响,但是多次尝试执行任务的机器人会因额外的工作量而受到阻碍。
处理可以是在javascript中解决的简单公式,除非您不想在您的网站上使用javascript。
答案 44 :(得分:0)
我记得曾读过“Linux防火墙”攻击检测和响应...... 那里的情况似乎非常具有可比性。而且其他人也提出了建议。只是暂时阻止客户端或逐步阻止客户端。如果它来自几个站点,这必须非常有效
此致
答案 45 :(得分:0)
使用JavaScript将信息动态写入页面。没有JS渲染引擎,肯定是屏幕刮刀和机器人将无法读取信息。
答案 46 :(得分:0)
我将描述的方法有两个要求。 1)强制执行Javascript 2)具有有效http://msdn.microsoft.com/en-us/library/bb894287.aspx浏览器会话的Web浏览器。
没有其中任何一个你是“设计”运气不好。互联网是按照设计构建的,允许匿名客户查看内容。使用简单的HTML无法解决这个问题。哦,我只是想说简单,基于图像的CAPTCHA可以轻易击败,即使作者也承认这一点。
继续讨论问题和解决方案。问题分为两部分。首先,你不能阻止个人“做坏事”。要解决此问题,您需要设置一个方法,该方法接受浏览器有效会话并生成md5sum + salt + hash(您自己的私有设备)并将其发送回浏览器。然后,浏览器需要在每次发布/获取期间返回该哈希密钥。如果您没有获得有效的浏览器会话,那么您回复“请使用有效的网络浏览器等等等等”。所有流行的浏览器都有有效的浏览器会话ID。
现在我们至少为该浏览器会话拥有一个身份(我知道它不会永久锁定,但通过简单的脚本来“更新”浏览器会话非常困难)我们可以有效地锁定会话(即;让脚本人员实际访问您的网站并且不会对有效用户造成任何惩罚令人烦恼。)
现在下一部分是它需要javascript的原因。在客户端上,您为键盘中的每个字符构建一个简单的哈希值,而不是textarea中文本的值。该有效密钥作为简单哈希传递给服务器,并且必须进行验证。虽然这种方法可以很容易地进行逆向工程,但它确实使得它成为个人在提交数据之前必须经历的额外环节。请注意,这只会阻止自动发布数据,而不是DOS不断访问网站。如果您甚至可以访问ajax,则可以通过线路发送salt和hash密钥,并使用javascript来构建通过线路发送的onkeypress字符“有效令牌”。是的,就像我说的那样可以很容易地进行逆向设计,但是你可以看到我的目标。
现在要防止流量持续滥用。在给定有效会话ID的情况下,有一些方法可以建立模式。这些模式(即使Random用于抵消请求时间)具有比人们试图重现相同误差范围时更低的epsilon。由于你有一个会话ID,并且你有一个“似乎是一个机器人”的模式,那么你可以用一个20字节而不是200000字节的简单轻量级响应阻止该会话。
你在这里看到,目标是1)使匿名非匿名(即使它只是每个会话)和2)通过建立他们使用你的系统的模式来开发一种识别机器人与普通人的方法。你不能说后者是不可能的,因为我以前做过。虽然我的实现是用于跟踪视频游戏机器人,但我似乎认为用于识别机器人与用户的那些算法可以推广到网站访问的形式。如果减少机器人消耗的流量,则可以减少系统负载。请注意,这仍然不能阻止DOS攻击,但它确实减少了机器人在系统上产生的压力。
答案 47 :(得分:0)
我认为沙盒化某些IP值得研究。一旦IP超过阈值,当它们到达您的站点时,将它们重定向到具有多秒延迟的Web服务器,然后再提供文件。我编写的Linux服务器可以处理几乎没有任何CPU的开放50K连接,因此减慢大量机器人的速度并不难。所有服务器都需要做的是保持连接打开N秒,然后作为常规站点的代理。这仍然可以让普通用户使用该网站,即使他们真的很有侵略性,只是稍微降低了体验。
您可以使用描述here的memcached来便宜地跟踪每个IP的点击次数。
答案 48 :(得分:0)
要解决机器人猛击头版的第一个问题,请尝试将蜜罐与真正的垃圾袋完全相同。使首页的html标记包含相同的标记,就好像它是一包垃圾一样,但是让它隐藏起来。这会强制机器人包含CSS引擎,以确定是否显示或隐藏了包的代码。或者,你只能在真正的垃圾袋上升之前随机输出这个'假'袋的垃圾html随机时间(小时?)。这会导致机器人过早发出警报(但不知道多久)。
要涵盖实际购买垃圾袋的第二步,请添加简单的问题。我更喜欢上面提到的数学问题的常识问题。像“冰热还是冷?”之类的东西。 “蚂蚁是大还是小”?当然,这些需要随机化并从永无止境的问题中提取,否则机器人可以编程来回答它们。但是,这些问题仍然比CAPTCHA更令人烦恼。
答案 49 :(得分:0)
使用Flash怎么样?
是的,我知道使用Flash的开销,加上一些用户将无法购买bag-o-crap(即:iPhone用户)可能会使这有害,但在我看来Flash会防止屏幕抓取或至少使其变得困难。
我错了吗?
已编辑添加
如果在您提交的表单中包含几个“隐藏”字段,如下所示:
实际上,最佳做法似乎是 使用两个隐藏字段,一个带有 初始值,一个没有。它的 罕见的机器人,可以忽略两者 领域。检查一个字段 空白,另一个有 初始值。然后隐藏它们 CSS,而不是让它们“隐藏” 字段:
.important { display:none; }
请 不要改变接下来的两个字段。
Bots倾向于喜欢带名字的字段 喜欢'地址'。中的文字 段落是为了少数罕见的人类 拥有非CSS能力的众生 浏览器。如果你不担心 他们,你可以把它留下来。
在处理表单的逻辑中, 你会做类似的事情:
if(address2 ==“xyzzy”和address3 ==“”){/ *确定发送 /}其他{/ 可能有机器人* /}
答案 50 :(得分:0)
[编辑] 你不能防御僵尸网络是不正确的。特别是我的第二个建议是为自动买家提供充分的防范。但是,它需要对您正在使用的技术进行彻底的重新思考。您可能希望使用Seaside进行一些实验,或者直接在c。
进行实验答案 51 :(得分:0)
假设不可谈判:
第一个屏幕需要是简单的低开销HTML,只需一个易于识别的(机器人或人工智能)按钮即可点击或等效明确表示“我想要我的垃圾”。因为我们假设最坏的情况 - 你从机器人和非机器人的组合中获得相当于DOS的攻击,所有这些都是首先点击网站(就可信性而言)。所以,让我们尽可能快地从缓存,良性回声机器人等处理出来。
(注意:就wooter而言,无论如何都会发生这种情况;对于用户而言,与Woot一样痛苦,因此任何有助于吸收或减轻第一次屏幕获取的事情都符合所有3方的利益参与。)
然后,对于非机器人来说,这个过程不再需要比现在更加严重,没有额外的步骤(或痛苦)。 (关于当前设计的背景说明:当前的wooters通常已经签署,或者可以在购买过程中登录。新买家需要在购买时注册。因此,已经注册的速度实际上更快,并且已经更快地登录。)
要完成垃圾销售,需要导航交易屏幕的进度(例如5,加或减,具体取决于具体情况)。获奖者是第一个完成全部导航的人。当前流程奖励最快完成整个5个屏幕序列的机器人(或其他任何人);但整个进程偏向于快速响应(即机器人)。
毫无疑问,机器人将拥有第一个屏幕的优势;无论他们从那一点上取得了什么成就,他们都会通过剩下的屏幕,以及其他阶段提供的机器人优势。
如果Woot在第一个屏幕之后故意将排队过程解耦,并将每个会话从该点馈送到一系列固定最小时间步骤,该怎么办?第二个屏幕甚至不会出现,直到30秒过去;提交后,同样适用于以下屏幕。我敢打赌,如果他们被告知,在第一个屏幕之后,他们会在队列中等待(这已经是真的)会随着时间的推移以一种不应该比以前更长时间的方式传播负载,那么wooters也没有问题。健壮,并帮助淘汰机器人。此时你可以抛出上面列出的一些机器人速度块(DOM对象中的微妙变化等)。只是从Woot更多地控制事物的感觉中获益将会有所帮助。
如果更高比例的BOC初始命中率可能会在他们第一次击中(或接近它)时进入非机器人非关键时段,而不是重试,那么那些超越这一点的真正的人会更有信心。可以肯定的是,它不会像现在这样充满敌意。它可能会降低背景噪音 - 环境 - 机器人速率,即使在正常的Woot-Off情况下也会一直持续。然后机器人将关闭主页并与其他人(以及其他所有人)一起排队等候。
<小时/> 嗯...想到“公寓线程”的概念。我想知道这个模式是否有用吗?
答案 52 :(得分:0)
我喜欢BradC's answer(使用Ned Batchelder的文章中的建议),但我想为它添加另一个级别。您可以随机化不仅字段名称,还可以随机化字段位置和使其不可见的代码。
现在,最后一点很难,我不确切知道如何做,但有更多JavaScript和CSS经验的人可能能够弄明白。当然,你不能只是一直保持相同的位置,因为脚本编写者只会发现位置(x,y)的元素是真实的。您必须有一些代码可以更改表单元素相对于其他元素的位置,以便将它们移出页面,将它们叠加在一起等等。然后模糊执行此操作的代码引入了一些随机性。在新项目可用之前,每天自动更改模糊处理。我们的想法是,如果没有适当的CSS和JavaScript实现(以及用于读取页面布局的代码),机器人将无法确定向用户显示哪些元素。当然,您的服务器端代码知道哪些字段是真实的,哪些字段是假的。
总结:
由于你给出的限制,我认为没有办法避免某种形式的“军备竞赛”,但这并不意味着一切都失去了。如果你可以自动化你的军备竞赛,而脚本编写者就不能那么你每次都会赢得它。
答案 53 :(得分:0)
让机器人用户无利可图,他们会很快离开 - 也就是说,偶尔会出售一些人类可能不想要的东西(一袋 literal crap)。< / p>
答案 54 :(得分:0)
用户必须等待图像中显示延迟的延迟页面怎么样?
如果他们在图片中指定的足够短的时间段内点击,您只能从他们到达的页面进行排序,也许图像可以在动画gif或非常小的javascript或flash计时器中进行倒计时。
如果他们在时间限制之外跳转到详细信息页面,他们会看到一个昂贵的项目,如前面的答案所述。
答案 55 :(得分:0)
我不是百分百肯定这会起作用,至少不是没有尝试。
但是,尽管技术上具有挑战性,但似乎应该有可能编写一个服务器端HTML / CSS加扰器,它将输入正常的html页面+相关文件作为输入,并输出或多或少的空白html页面,以及能够重建页面的混淆的javascript文件。 javascript当然不能打印出简单明了的DOM节点......但是它可能会吐出一组复杂的,绝对定位的div和段落,每个包含一个字母,因此它完全可读。
除非他们使用完整的渲染引擎和足够的人工智能来重建人类会看到的东西,否则Bots将无法读取它。然后,因为它是一个自动化过程,您可以像对待每一分钟,每十分钟,每小时,甚至每个页面加载一样频繁地重新加扰网站。
当然,编写这样一个混淆器很难,而且可能不值得。但这是一个想法。
答案 56 :(得分:0)
不完全修复,但我还没看到它。
跟踪“砰”地址,并提出免责声明,说明BOC /物品不会发送到任何不遵守您的服务条款的地址。
这会对某些人产生心理影响,而其他想要利用您网站的人则必须切换方法,但是你会为他们取消一条途径。
答案 57 :(得分:0)
这里有很多建议,如果已经发布,请原谅我。
我要做的第一件事是将订购分为两个步骤。第一步是在记录IP地址时传回GUID。第二步将接收GUID并将其与已记录的IP地址进行比较。结合阻止网站垃圾邮件的IP地址(IE:比人类点击刷新更快),这种技术可以阻止垃圾邮件发送者成功购买,从而解决1&amp; 3。
第二项是有问题的,但我会保留常规用户IP地址的运行列表,并限制任何新手的流量。这可能会让第一次访问者和拨号用户(由于IP地址的变化)在寒冷中被淘汰,但我认为只是通过优先重复业务......以及拨号用户来做好最好的情况,好吧有问题的是,即使没有任何垃圾邮件发送者,他们是否会“赢”。
答案 58 :(得分:0)
为什么不阻止您认定为机器人的用户的信用卡?
我猜即使专业人士最终也会用完信用卡。
一旦botster放弃你,你的服务器负载应该随着时间的推移而减少。另一个想法是在服务器之间分隔您的页面 - 例如,一台服务器上的RSS源,另一台服务器上的主页,另一台服务器上的结账。
祝你好运。答案 59 :(得分:0)
我很确定你的服务器已经记录了所有传入请求的IP(大多数都是这样) - 所以数据已经存在了。
也许你可以:
通过验证它的IP在日志中显示小于某个阈值来验证“胜利者”(我使用“grep | wc -l”来获取计数)。如果它超过了您的阈值,暂时阻止该IP(小时左右?)。
使用与“最后”获胜者相同的送货地址或付款信息取消任何“获胜者”,或者在特定时间范围内赢得“赢家”以宣传“获胜”。
机器人不会那么一切。
惹恼刮刀的废话: 当“随机垃圾”项目上升时,通过“代码混淆器”运行该页面的HMTL输出...这不会改变页面的“显示”...只是用随机生成的ID等来扰乱代码
更加阴险:
根据获胜IP在日志中显示的次数,增加“获胜”项目的费用。那么即使机器人赢了,你也是。 : - )
答案 60 :(得分:0)
试图瞄准BOT本身永远不会解决问题 - 无论是谁写的,都会想出一条新的方法来解决你所做的事情。然而,在购买之前强迫用户思考将是一个更有效的解决方案。我能想到的最好的方法是进行荷兰式拍卖。开始价格高(你在商店购买它的2倍)并随着时间的推移减少价格。第一个买入的人得到它。我认为任何机器人都不够聪明,不能为物品提供最优惠的价格。
答案 61 :(得分:0)
限制您发布优惠的时间: 例如:从一小时开始仅过去7分钟到8分钟。不要偏离这一点,并对发布时间前半小时检查很多IP的几秒钟的罚款进行处罚。然后,对于机器人所有者而言,每小时只扫描几分钟而不是全部。的。时间。此外,因为正常人每小时可以检查一次网站而不是每秒检查一次,所以你可以让普通人更加平稳地使用机器人。
<强>饼干:强> 使用仅由唯一ID(数据库表的键)组成的跟踪cookie。向没有cookie的客户提供“发布延迟”,无效的cookie,使用新IP的相同cookie的客户端,或高频率使用的cookie。
识别可能的机器人 Cookie会导致僵尸程序为其控制的每个IP请求多个cookie,这是可以跟踪的行为。仅包含一个已发布cookie的IP很可能是普通客户端。具有许多已发布cookie的IP可以是大型NAT网络,也可以是机器人。我不确定你如何区分这些,但公司可能更有可能拥有DNS服务器,网页和这种性质的东西。
答案 62 :(得分:0)
也许您需要一种解决方案,使机器人完全无法区分袋装垃圾销售和所有其他内容。
这是验证码主题的一种变体,但不是用户通过解决验证码来验证自己,而验证码则是对销售的描述,以视觉上令人愉悦的方式呈现(但可能在某种程度上被背景模糊)方式。
答案 63 :(得分:0)
使用hashcash。
Hashcash是一种拒绝服务的反措施工具。它目前的主要用途是帮助hashcash用户避免因基于内容和基于黑名单的反垃圾邮件系统而丢失电子邮件。
答案 64 :(得分:0)
我认为您最好的选择是观看IP的进入,但要通过几种方式缓解您提到的问题。首先,使用概率哈希(例如,Bloom Filter)来标记之前已经看到的IP。这类算法速度非常快,可以很好地扩展到绝对庞大的设置大小。其次,使用渐变响应,根据您最近看到IP“最近”的数量来确定每个请求都会添加服务器延迟。
答案 65 :(得分:0)
以屏幕阅读器的可用性为代价,您可以在90%的页面上使用未标记的,不可删除的图片按钮。定期旋转图片并使用随机发生器和随机排序来布置两个按钮,说“我想要这个”和“我是一个机器人”。将它们按不同顺序排列。在每个阶段,用户可以向目标进展,但机器人更有可能犯错误(50%*步数)。这就像在每个阶段捕获对用户更容易,对于需要在每一步都提示他们的主人的机器人来说更慢。将价格,确认按钮,项目描述放在图片中。它很糟糕但可能更成功。
答案 66 :(得分:0)
让机器人在平地上竞争。加密时间戳并将其粘贴在隐藏的表单字段中。当你收到提交解密时,看看已经过了多少时间。如果超过人类打字能力的门槛就拒绝它。现在机器人和人类只能尝试以相同的速度购买垃圾袋。
答案 67 :(得分:0)
如果你无法击败他们......改变规则!
为什么不提供比脚本编写者更好的系统呢? 修改您的网站,以便不使用bot脚本的人更公平。人们注册(CAPTCHA或电子邮件验证)并有效进入彩票竞赛中获胜!
'获胜'让它变得更有趣。并且每个人都支付一小笔入场费,因此获胜者可以获得更少的产品
答案 68 :(得分:0)
我不是网络开发人员,所以拿一点盐,但这是我的建议 -
每个用户都有一个cookie(包含随机数据串),用于确定他们是否看到当前的垃圾销售。
(如果您没有cookie,则不会看到它们。因此,不启用cookie的用户永远不会看到垃圾销售;新用户在第一次查看页面时将永远不会看到它们,但是之后会。)
每次用户刷新网站时,他都会将当前的cookie传递给服务器,服务器使用它来决定是给他一个新的cookie还是保持当前的cookie不变;并在此基础上,决定是否显示有或没有废话销售的页面。
为了在服务器端保持简单,您可以说在任何给定时间,只有一个cookie可以让您看到垃圾销售;并且还有一些其他标记为“在最后2秒内生成”的cookie,它们将始终保持不变。因此,如果您更快地刷新页面,则无法获得新页面。
(......啊,好吧,我想这并不能阻止机器人恢复旧的cookie并将其传回给你。不过,也许这里有一个解决方案。)
答案 69 :(得分:0)
停止所有机器人将非常困难,尤其是在不使用CAPTCHA的情况下。我认为你应该从实施各种措施的角度来解决这个问题,以便为脚本编写者提供更多的生活。
我相信这是一个可以淘汰其中一些措施的措施:
您可以尝试使用每个响应随机化标记的ID和类名。这将迫使机器人依赖重要标签的位置和上下文,这需要更复杂的机器人。此外,如果要在CSS中使用相对或绝对定位,则可以随机化标记的位置。
这种方法的最大缺点是你必须采取措施确保你的CSS文件没有缓存在客户端,因为它当然需要包含随机ID&amp;班级名称。解决此问题的一种方法是不使用外部CSS文件,而是将带有随机选择器的CSS放在页面的<head></head>
部分中。这将允许随机化的CSS与客户端一起缓存以及页面的其余部分。
答案 70 :(得分:0)
(结合另一张海报和gif垃圾邮件发送者的想法)
将整个优惠页面显示为图片,广告文案和所有内容。
加密网址中的价格。
机器人转到网址查看结帐页面上的价格
将结帐价格标签转换为图片,或
应用验证码,然后用户才能进入订单页面。
咀嚼带宽
鲁莽的机器人订购
RSS Scraping
RSS Feed必须通过hashcash或验证码支付。
必须基于每个请求。
可以预付费,例如用户可以输入20个验证码 200个RSS查找
一旦减轻了DDOS的威胁,你就可以 实施优惠的电子邮件通知
答案 71 :(得分:0)
如何找到一种识别机器人的方法,可能是基于IP的,但不能阻止他们访问网站,只是不要让他们真正购买任何东西。也就是说,如果他们购买,他们实际上并没有得到它,因为机器人违反了使用条款。
答案 72 :(得分:0)
CAPTCHA的问题在于,当你在Woot上看到垃圾销售时,如果你希望收到你的垃圾袋,你必须非常快地作为消费者。因此,如果您打算使用CAPTCHA形式,那么对于客户来说,它必须非常快。
如果您有一个大图像,比如说600 x 600只是一个白色背景,并且图像上随机放置了不同颜色或图案的点,该怎么办?图像上会有一个图像映射。该地图将具有映射到图像的小块的链接。比方说,10 x 10块。用户只需点击特定类型的点即可。结束用户会很快,并且机器人开发人员编写代码会有些困难。但对于一个好的机器人创造者来说,仅仅这一点可能并不困难。我会添加加密的URL。
我正在开发一个能够加密URL的系统。如果这些页面上的每个URL都使用随机IV进行加密,那么它们似乎都是机器人所独有的。我正在设计这个以混淆探测机器人。我还没有完成这项技术,但我确实有一个小型网站编码,在这个庄园中运作。
虽然这些建议不是一个完整的解决方案,但它们会使构建工作机器人变得更加困难,同时仍然易于人类使用。
答案 73 :(得分:0)
可能没有好的解决方案,只要袋子的惊人分布仅与时间点相关联 - 因为机器人有足够的时间,并且资源可以在短时间内保持对网站的抨击。 / p>
我认为你必须添加一个额外的标准,机器人不能从他们的结束屏幕刮擦或操纵。例如,在任何时候都会有5000个人每分钟几次点击页面寻找废话袋,每秒钟就有50个机器人猛击它。在它出现后的前几秒钟,50个机器人将全部拍摄。
所以,你可以添加一个条件,首先出现垃圾,其中整数IP的模数30是一个随机数,比如17,可能每秒都会添加另一个随机数,所以垃圾会逐渐显示给所有客户超过30秒。
现在想象一下前几秒钟会发生什么:目前,所有50个机器人都可以立即抢购所有废话,人类获得0.在这个方案中,6秒后只有10个机器人通过,而1000人已经通过,大部分废话都归于人类。您可以使用时间和随机模数来尝试优化该间隔,具体取决于用户数量和可用单位。
不是一个完美的解决方案,而是一种改进。好处是人类比机器人受益更多。有几个缺点,主要是并不是每个人在任何特定的日子都得到同样的机会 - 虽然他们现在没有太多的机会,我猜即使没有机器人,他们中的大多数都被拒之门外除非他们碰巧恰好在正确的秒钟刷新。并且,它不适用于具有大量分布式IP的僵尸网络。 Dunno,如果有人真的使用僵尸网络只是为了废话废话。
答案 74 :(得分:0)
您的最终目标是扩展到可以购买东西的更大的用户群。
如果您在一两个小时内和一系列IP地址上发布了一些内容,而不是同时将其全部释放到任何IP地址,那会怎么样。
假设你有255袋w00t。 1.0.0.0可以在第一分钟购买,2.0.0.0可以在第二分钟购买(可能有2袋可用),等等。
然后,在255分钟之后,你已经为所有人提供了可用的袋子,尽管很可能不会留下所有255袋w00t。
这限制了对具有> 255台计算机的用户的真正攻击,尽管僵尸用户可能能够“拥有”分配给其IP范围的w00t包。
没有要求你公平地将行李与IP匹配(你绝对应该使用某种类型的MD5 /随机种子)...如果你逐步分发10袋w00t,你只需要确保它在整个人群中均匀分布。
如果IP不好,那么您可以使用cookie并排除非熟练用户获得一袋w00t的用例。
如果您发现某个特定的IP,Cookie或地址范围有极大的流量,请按比例在晚上/最后一个时间为他们提供这样的包,以便偶尔/稳定/慢速的访问者在重/之前获得机会快速/可能的机器人用户。
- 罗伯特
答案 75 :(得分:0)
我建议使用基于防火墙的解决方案。 Netfilter / iptables,与大多数防火墙一样,允许您设置每单位时间内新页面请求的最大数量限制。
例如,要限制分配给人类的页面查看次数 - 例如,每30秒发出6次请求 - 您可以发布以下规则:
iptables -N BADGUY
iptables -t filter -I BADGUY -m recent --set --name badguys
iptables -A INPUT -p tcp --dport http -m state --state NEW -m recent --name http --set
iptables -A INPUT -p tcp --dport http -m state --state NEW -m recent --name http --rcheck --seconds 30 --hitcount 6 -j BADGUY
iptables -A INPUT -p tcp --dport http -m state --state NEW -m recent --name http --rcheck --seconds 3 --hitcount 2 -j DROP
请注意,此限制将独立适用于每位访问者,因此一位用户滥用该网站不会影响任何其他访问者。
希望这有帮助!
答案 76 :(得分:0)
您可以通过同时更新RSS和HTML来减轻服务器的负载,因此机器人无法筛选您的网站。当然,这给了机器人和购买装备的优势。
如果您只接受通过信用卡付款(可能是这种情况,可能不是,但它显示了我的想法)只允许用户使用相同的帐户和/或信用卡每10次销售一次购买中银。脚本小子很容易获得一大堆IP,他们不太容易将一大堆信用卡放在一起。正如你所说的那样,知识产权真的难以禁止,而信用卡上的临时禁令应该是在公园散步。
你可以让每个人都知道这个限制是什么,或者你可以告诉他们,由于需求量大和/或机器人的兴趣,在购买时实施限制,而对机制不明确。
在限制期间的每次购买尝试都可能引发指数退避 - 您购买中国银行,您必须在再次尝试之前通过10次销售。无论如何你在下一次销售时再试一次,现在你必须等待20次销售,然后是40次,然后是80次......
如果人类用户真的不太可能在不到10次销售中获得两次BOC,那么这才真正有用。根据需要调整数字。
答案 77 :(得分:0)
答案 78 :(得分:0)
我的第一个想法是你说机器人正在抓你的网页,这表明他们只是拿起HTML内容。因此,让您的订单屏幕验证(来自http-logs)从机器人
加载与商品相关的图形答案 79 :(得分:0)
开发一个不在浏览器中本机运行的首页组件和购物车。如果你使用像Flex / Flash或Silverlight这样的东西,那么刮掉它会更加困难,并且你可以完全控制服务器通信,因此可以完全屏蔽脚本中的内容。
答案 80 :(得分:0)
如果机器人用户使用无效的信用卡或其他东西付款,这只需要成为一个问题。那么非技术解决方案呢?
只要他们的付款有效,就可以将机器人用户视为普通用户,并确保您有足够的库存来满足总需求。
结果:更多销售。你在做生意赚钱,对吗?
答案 81 :(得分:0)
为了保证仅向非脚本人销售商品,您是否可以检测到首页上显示的商品与正在发出的订单之间的非人快速反应?这会使延迟战术变为现实,而不是通过0.5秒的延迟人为地阻止所有人,尽可能快地允许请求并打击显然超人的机器人:)
用户点击和做出决定的速度有一些物理上的限制,并且在所有请求都已经过之后检测(而不是故意减慢所有交互),你不要不会影响非脚本人类的表现。
如果只使用CAPTCHA 某些的时间是可以接受的,你可以将延迟时间增加到快速人类(而不是超人),并且如果有人点击非常快,则需要发布确认CAPTCHA。类似于某些网站如果有人快速发布多个帖子,需要如何确认CAPTCHA。
可悲的是,我不知道有什么好方法可以阻止产品列表的屏幕抓取:(
答案 82 :(得分:0)
我只是想知道是否有一个简单的解决方案。
我认为指示垃圾销售的消息是以文本形式发布的,这是刮刀寻找的信息。
如果您使用图片制作公告怎么办?这样做可能会带来一些设计问题,但它们可以被克服,并可能成为一些巧妙创造力的推动力。
问题#1
必须有一些专用于图像的设计空间。 (想要变得非常棘手吗?通过这个插槽旋转本地广告。当然,图像的名称需要是静态的,以避免给刮刀一个气味。这是一个永远不必担心广告失明的插槽......)< / p>
问题#2
RSS。我不确定每个人是否都可以在他们的Feed阅读器中查看图片。如果您的用户足够多,那么您可以开始发送包含图片的每日Feed更新。您可以在大多数日子里发送您想要的任何杂项,然后根据需要将其切换为您的垃圾销售提醒。
我不知道......每次饲料项目结束时,他们是否只是将他们的机器人编程到您的网站?
其他问题?可能很多。不过,这可能有助于一些头脑风暴。
小心,
布赖恩
答案 83 :(得分:0)
以下是一些有效的假设:
解决方案不是技术方案。这是一个政策。
答案 84 :(得分:0)
这是我要做的:
这会阻止僵尸程序,因为您的主页只显示待处理的BOC事件。如果没有在电子邮件中收到网址,机器人将无法访问该网址,并且无法保证他们会收到该网址。
如果您担心销售影响,您还可以通过为每笔销售赠送一两个BOC来激励参与。如果您在给定的时间间隔内看不到报价的足够吸引力,则会自动邮寄其他注册用户,从而增加每个报价中的参与者池。
中提琴。公平的竞争环境,没有大量的启发式和网络流量分析。系统仍然可以由设置大量电子邮件帐户的人进行游戏,但通过CC#,paypal帐户,送货地址调整参与者选择标准可以减轻这一点。
答案 85 :(得分:0)
ASP.net AJAX控件工具包中的NoBot Control怎么样?
它会执行一些自动化的javascript请求和计时技巧,以防止僵尸程序在没有用户交互的情况下访问该网站。
很抱歉,如果这不符合某些要求,我只需要打电话给 tl; dr&gt; D
答案 86 :(得分:0)
将页面的某些部分转换为图像,以便机器人无法理解它们。
例如,创建整数0-9,美元符号和小数点的小图像。当页面加载时,在客户端的计算机上缓存图像...然后使用通过运行服务器端的代码选择的图像显示价格。大多数人类用户不会注意到差异,机器人也不会知道任何物品的价格。
答案 87 :(得分:0)
我的意见是长期的WOOTer
我很乐意订购CAPTCHA, 仅为BOC打开 。我想大多数猫头鹰都会同意。另外,99.9%的时间你甚至没有进入订单屏幕,因为它卖得这么快,所以几乎没有人会知道!!
如果你让CAPTCHA成为一个非常难的数学问题,我将能够最终向我的妈妈解释这么多年学习数学的实际好处。
答案 88 :(得分:0)
我不明白为什么IP地址过滤会非常昂贵。使用IIS,您可以构建ISAPI筛选器以在本机代码中执行此操作。我确信apache有类似的接口。使用客户端的IP地址,您可以为不依赖于禁止列表或其他此类废话的HTTP请求编写简单的速率限制器。
答案 89 :(得分:0)
答案 90 :(得分:0)
从来没有想过我会推荐闪光灯,但闪光灯呢?如果是交易时间,让您的服务器将异步加密内容发送到闪存文件信号。只要响应是相同规模的交易或没有交易,机器人就无法分辨它是什么。
在更一般的层面上,您需要关注人类和浏览器所拥有的资源,脚本机器人不会利用这些资源,并利用易于人类/浏览器和机器人难以使用的东西。 Captcha显然是一种简单的尝试,但不适合您的网站。 Flash会淘汰大量机器人,只留下那些驱动真实浏览器的(较慢)机器人。如果只需要用户点击正确的位置,解决方案可能比验证码简单得多。
利用人类大规模并行图像处理能力!
答案 91 :(得分:0)
扫描网站的费用很高。
我无法知道可以将僵尸程序排除在您的网站之外。我甚至知道一项服务,那里有人为你扫描网站。你会怎么处理?
机器人最糟糕的事情是,当网站发生变化时。过了一段时间它会变得昂贵或无聊以保持机器人运行。您的网站上可能有更新看起来像新产品,但实际上并非如此。如果你不规则地更新,那么不可预知的事情就会让机器人难以接受。
禁止IP可能是一种对策,只要它是已知的IP即可。罪犯需要使用代理。我所知道的代理工作得很好,但是你的速度很慢。
答案 92 :(得分:0)
我的想法(我没有检查所有其他的,所以我不知道它是否是新颖的)
处理蜂拥而至:
将每天的首页内容转换为flash / flex对象。
使用Akamai或其他CDN,将此Flash对象提前部署到外部世界。 Akamai生成看似随机的URL,因此很难预测。
今日结束 - 您现在可以让Akamai处理您的午夜交通
处理自动购买
最终结果 - 您的黑客被迫拍摄大量的交易图像快照,找出如何分离所有误报并确定实际交易。与此同时,人类只关注它,在眼疲劳和我们填补文本空白的能力之间,我们可以按原样阅读交易。
这不会永远有效,但它可以工作一段时间。
另一个想法是简单地限制人们购买BoCs,除非他们之前用该帐户购买了东西,并且绝不让他们再次购买BoC。
答案 93 :(得分:0)
通过IP或其他一系列机制识别机器人。
始终将标识为机器人的人员作为正常的首页。
真实的人被错误地认定为机器人不会获得特价,但他们无论如何都不会注意到。
Bot拥有者不会意识到你已经识别出来,所以他们将停止调整他们的脚本。
答案 94 :(得分:0)
我的解决方案是营销变革和技术变革的结合。
目前,售卖部分袋装促销的技术方面作为正常的销售处理。销售开始,人们竞相购买,所有商品都被出售。用于日常销售的相同统计图表被用于废话销售。
涉及多个市场目标:
前两个似乎是最重要的。大量访问者对正常交易的卖出(或卖出)的速度有影响。传统上,新客户通过口耳相传被吸引,让客户将他们的朋友发送到woot.com是一种胜利。
所以...我的解决方案是将促销活动更改为更多的彩票。
有时,用户可以做一些有趣的事情,看看他们是否可以获得一袋垃圾。有趣的事情可能是一个愚蠢的Flash游戏,沿着“打猴子”或Orbitz迷你推杆,棒球,曲棍球。这里的目标是机器人不能编写脚本的游戏,因此需要相当多的关注。我们的目标也不仅仅是向游戏获胜者颁发一堆垃圾......而是奖励所有游戏玩家。
游戏的技术核心是在游戏结束时向服务器发出请求,该服务器进行“即时抽奖”以确定用户是否赢得了一袋垃圾销售机会。服务器请求将需要包括由游戏本身计算的内容(粗略地说“哈希现金”......复杂的,CPU周期消耗,计算,并且希望难以重现)。这是为了防止机器人重复进入彩票,只需查询彩票服务器/服务。
游戏本身可以随着时间的推移而改变。你可以为万圣节,圣诞节,美食,复活节等做特殊的活动游戏。有很多有趣的营销理念,可以匹配woot的“wootiness”。
如果用户获胜,他们可以购买N袋垃圾(在限时窗口内)......但他们也可以向N位朋友发送限时邀请购买一袋垃圾(24小时有效)。这提供了超强的网络效应......客户肯定会告诉他们的朋友。或者您也可以将其作为“买1送1”...让客户购买总共N,但强制每秒钟将其运送给朋友。这里的关键是使网络/八卦效应成为一个完整的部分...帮助客户告诉全世界woot的精彩。
销售概念的宣传材料也需要进行改造。一袋垃圾售罄的速度与图表不再相关的图表。在这个月,人们有机会购买的频率是多少。有多少人告诉他们的朋友。这些武器应该微妙地强调每日进行一次访问是一个好主意。
你还可以宣传为什么一揽子垃圾销售正在发生变化。特别是你雇佣了最好的垃圾顾问袋。
答案 95 :(得分:0)
老实说,我认为您最好的解决方案是只在登录用户看到Woot-Off期间的项目,并且每500ms左右限制每个登录用户刷新一个主页。 (或者在Woot-Off期间可能只对未经身份验证的用户显示该项目的图片,并确保您不会总是使用相同的图片进行随机废话。)我认为Woot用户愿意接受这一点,如果你把它作为一种措施来帮助他们获得他们的碗奶油,你也可以指出它会帮助他们更快地检查。其他任何东西 - 甚至使用验证码 - 都会受到你典型的军备竞赛的影响。
答案 96 :(得分:0)
市场告诉你一些事情。他们想把那个包弄成垃圾。所以,而不是打击脚本(RIAA v文件共享任何人?)建立一个更好的机器人。
为每个人提供一个安装的应用程序,该应用程序与脚本kidee可以放在一起的任何内容一样好或更好。用户安装您的品牌应用程序,每次提供垃圾袋。该应用程序将自动尝试购买它。如果错过了当前的b-o-c,应用程序会有一张“票”,以便为下一次b-o-c促销提供更好的机会。因此,如果用户滚动他们自己的脚本,他们就不会获得下一次b-o-c销售的“票证”,而官方应用的用户则会这样做。
在b-o-c销售之间,该应用可以显示当前待售商品。好吧,让它让用户可以告诉woot应用程序寻找“记忆棒”
谁会建立自己的脚本,当官方woot b-o-c +脚本应用程序同样好或不好?
此外,woot还可以通过另一种方式连接到客户。
您的客户正在告诉您他们想要什么。
答案 97 :(得分:0)
让用户在原价和更高价格之间做出选择。 你必须找到一些方法将按钮与它们各自的价格相关联 - 颜色,位置,或许按钮的“情感内涵” - 难以以编程方式确定,但只需要用户将按钮连接到价格。 为用户提供简单,直观和轻松,对于脚本编写者来说很困难,更重要的是风险 - 特别是如果您改变了关联方法。
答案 98 :(得分:0)
如果您愿意强制使用javascript,则可以使用hashcash方案,例如,每个请求需要大约30秒的客户端计算。 (当然,在iPhone上可能是5分钟,在30台计算机的僵尸网络上可能是1秒:这是一个很大的缺点。)
通过使用(混淆)javascript或(gag)flash生成页面,您也可以使拼贴更加困难。
你也可以通过隐形(通过CSS和javascript)随机垃圾链接来抓取机器人。
您可以检测'类似bot的'IP地址(按费率和访问蜜罐链接)并将其重定向到特殊服务器(例如,具有额外CC验证的服务器,例如'通过签证验证' - 或者只是一个验证码。)
但实际上,这是一场军备竞赛。 :)你可能最终不得不升级到验证码之外。
这让我想到:为什么不从先到先得的模式转变为彩票模式,机器人与真正的购物者相比没有如此大的优势?
答案 99 :(得分:0)
好的,我有几个问题不仅仅是一个答案,因为我没有使用该技术的经验来了解它是否可行/或有帮助。
具有以下目标:
1.将物品卖给非脚本人
2.保持网站以不受机器人减速的速度运行
3.不要让“正常”用户麻烦任何完成任务以证明他们是人。
我的问题是:
- 。 Flash应用程序,Java小程序,Silverlight或类似程序是否会减少屏幕抓取的容易程度,以减少机器人的影响?
我很好奇这些外部操作是否与典型的javascript / html一样广泛。
虽然它不是Web开发的标准,但从SEO的角度来看可能并不“好”,但如果您拥有数百万用户,则听起来像搜索可见性不是您的问题。我相信其中任何一个仍然可以提供一个非常好看的界面,所以你的人类不会被设计推迟。
- 你能把所有信息都放在一张图片里吗?我从来没有见过你所指的woot部分,但我建议的是将人类需要知道的任何文本放在人类友好的图像中而不是机器人友好的文本框中。
哦,还有其他一些回应中提到的第二件事。不要错过你的大好机会: 你有很多Bots的需求,那些有机器人的人真的买对吗?你还想要他们的钱吗? (因为如果没有,我会接受它。)
这些有机器人的人有没有其他选择吗?把你的垃圾袋分开。
有一个为机器人设计的woot子网站,面向机器人,让脚本编写者有很多乐趣,并为此付钱。卖掉他们的废话,让他们挑战自己与其他脚本编写者。这是一个完全独立的市场。
如果他们有一个替代方案,他们可以赢得一些东西,并获得吹牛的权利,他们可能会更少倾向于殴打这个小老人。
答案 100 :(得分:0)
如果已经提交了这个答案,请原谅我。有很多答案可以尝试阅读&amp;了解所有这些。
为什么你不能偶尔改变购买API ?这对于人类用户来说是不是完全透明,并且几乎杀死了大多数购买者?
一种实现方式是在点击“我想要一个”按钮后更改用户必须填写并在页面上提交的字段的名称。你实际上每年卖多少次中银?不常见。因此,每当中国银行开始销售时,使用不同的采购API进行编程,测试并准备好使用,这不会是一个巨大的编程负担。
请确保使用旧的和不正确的API的机器人不会关闭服务器。也许每次都在不同的服务器上托管BOC购买API。通过这种方式,机器人可以关闭我们的人类BOC购买者实际上没有使用的服务器。
答案 101 :(得分:0)
如果我理解正确,你最大的问题是屏幕抓取,而不是自动购买本身。
如果是这样,你最有效的一步就是通过随机编码页面来打败屏幕抓取,使其看起来相同(种类)但在代码级别总是不同。 (使用十六进制代码,java编码,图片,更改周围的代码结构......)
这将迫使他们不断重写他们的拼写代码,因此他们自动购买“垃圾”会更加昂贵。如果他们可以管理。他们可能会继续打击你的网站一段时间,直到他们意识到他们无法获得任何东西并放弃它。
混乱机器人的混乱的缺点是,它也会混淆搜索引擎爬虫的地狱。
答案 102 :(得分:0)
通过服务器上的iptables(如果是基于Linux的)使用每个IP地址的并发连接限制或使用专用的“路由器”
答案 103 :(得分:0)
您应该记录最常购买BOC的用户,为什么不禁止这些帐户或其他内容。当然合法用户将在此过程中被禁止,但您是一家提供产品的企业,如果您被一群用户滥用,您有权拒绝为他们提供服务。您有很多关于您的用户的信息,包括PayPal和银行帐户,您可以禁止这些帐户强制机器人用户获得新帐户。当然我可以提出一个脚本来一直购买BOC或者只是从网上下载一个,但我的道德比那更好。从来没有真正成功购买过BOC,我知道那些希望获得大量合同的合法用户会感到沮丧。也许不是每隔一段时间提供一个BOC作为一个单独的项目,你可以每天给它随机的用户。当他们收到一件物品时,他们会得到一张小纸条和一件额外的物品,说他们也收到了中国银行。那么,有人可以获得中国银行的唯一方法就是他们合法地购买了只有真正人类想要的东西。没有什么比购买咖啡机或其他东西更好的了,除了合法购买之外还有42英寸电视或其他东西。我认为如果要获得中国银行,大多数脚本小子将不再对您的网站感兴趣他们还必须承诺购买超过10美元。
答案 104 :(得分:0)
前期警告:
我不是文字识字; 我这里没有读过很多其他评论。
今天早上我从Woot的描述中偶然发现了这一点。我认为来自woot网站的温和用户(以及BOC的两次手动购买者)的一些评论可能会有所帮助。
Woot处于一个独特的位置,它既是商业网站,也是忠诚用户的目的地,我理解这种平衡的微妙之处。但就个人而言,我觉得你对Crap-CAPCHA(“CRAPCHA” - 不知何故我怀疑我是第一个对用户造成这种噱头)的“负面用户影响”的担忧被夸大了。作为用户,我很乐意证明我是人。而且我相信Woot让这个过程变得有趣和有趣,并将其整合到整体体验中。
这会导致“军备竞赛”假定吗?我不知道,但它只会有所帮助。例如,如果要购买的关键信息包含在产品图像中或隐含在产品描述中(每次都以不同的方式),那么脚本可以做的最好的事情就是在检测到C字时打开购买页面。实际上,我觉得这很好:你仍然需要在线,先到先得的服务仍然适用 - Wootalyzer和类似的工具只是增加意识而不是在我睡觉时自动购买或工作。
祝你好运,并保持良好的工作。JGM
答案 105 :(得分:0)
如何向每个用户销售RSA密钥:)嘿,如果他们可以为魔兽世界做这件事,你们应该能够做到。
我希望BoC能够得到答案;)
答案 106 :(得分:0)
为什么不让首页只是一个图像映射图形(所有图片都没有标签,标签等)?人们可以轻松阅读和理解几乎任何设备,但机器人无法查询。从本质上讲,整个头版都是验证码。
答案 107 :(得分:0)
今天您将在灯光上赚足够的费用来支付思科的CAPTCHA计划!我们都习惯了购买音乐会门票和其他东西......这似乎只是公平的。今天这样做的方式是让一些人感到不安,并提出有关抽奖或扫荡的问题。我相信在你尝试之前你已经检查过了,但这并不是一个真正有趣的方式来购买BOC ...它需要所有的兴奋!
将BOC放在第一位,或者即使通过视线获得优质产品也会吸引人们去看看Woot。如果没有理由闲逛并购买大量的东西,等待随机中国银行上市时你不需要,那么销售就会下降。 CAPTCHA可能是打败这些人的唯一方法,并且仍然保持Woot的兴奋。
我是第一个让它上次订购BOC的人之一,我的第一个订单被丢弃了百万运费,第二个订单通过但后来被从我的帐户中取出。我生气。我离开了Woot,并没有像过去那样购买其他日子的物品。今天,我愿意再次尝试。我怀疑将来如果没有CAPTCHA就会有趣的东西。
有许多网站试图像Woot。当然,他们不符合你的水平。我发现自己正在阅读产品描述,不是因为我想要产品,而是因为我笑了。我不愿意看到有人参与更公平的计划并带走你的大部分业务。
只是我的意见。我知道几乎没有关于机器人和计算机的事情,因为我是一名护士。但我的投票是升级到更高级别...有机器人的人只需要与我们其他人一致,这就是方式它应该是:) 洛瑞
答案 108 :(得分:0)
至于CAPTCHAing每个人,为什么不使用谷歌解决方案只需要你怀疑是机器人的IP的CAPTCHA,甚至只是那些锤击网站的用户?我肯定在他们购买时要求某人购买CAPTCHA如果他们一直在锤击该网站并不是那么糟糕,它就像熬夜并反复击中F5一样。那个或者在锤击时可能需要定期的CAPTCHA,比如每百个(可能更小?)左右刷新,以阻止警报机器人工作。您需要某种CAPTCHA来防止僵尸,但您还需要考虑到您的真实用户会像机器人那样行事。
答案 109 :(得分:0)
作为Woot.com的很长一段时间(4年)用户和几袋垃圾的购买者,在我的车库占用空间的许多其他物品中,似乎解决方案应该是整个Woot的一部分主题。
使用验证码,但是以幽默的方式。就像100万美元的促销活动一样,让游戏不再是一个人。这在过去推迟了中国银行的“卖出”一段合理的时间,而人们像我一样,争相找出输入优惠券代码的相当简单但幽默的谜题。
此外,虽然人们无休止地抱怨服务器错误,但他们并没有停止回来。在我看来,中国银行令人兴奋的部分原因是有很多其他人试图获得一个。如果服务器抛出错误或者是一个时髦的页面,那就表明我在一群人中试图获得1500种产品中的一种。
如果你在构建谜题时投入了尽可能多的创造力,并且它足够原创,它会延迟机器人足够长的时间以给其他人一个机会。将一个随机单词作为代码加入,在“我想要一个”和购买页面之间放置一个临时页面,这需要一些独特的人工交互,你已经停止了那里的机器人,直到他们弄清楚需要发生什么。
•您没有实现无聊,有时难以阅读验证码
•您使这个过程更有趣,
•您减少了实际安全购买服务器的负载
•您将训练用户他们需要“做”某事才能获得BOC
•你将在临时页面停止机器人,推迟购买,直到大多数人至少有机会尝试找出有趣但不是非常困难的谜题。
•由于随机是BOC的全部内容,随机且不断变化的谜题/任务只适用于中国银行的整体投资。
在您进行实验时,临时页面背后的技术可以变得更加先进,可以捕获随机信息以便在购买页面中使用。由于
我已经购买了,没有机器人的帮助,或者除了wootalyzer之外的任何脚本,我觉得这是一个可以接受的援助,7 BOC是自5/31/05以来。最好的一个,我没有得到,是Please Please Me BOC。 B&amp; D电池也很有趣,但我猜测并没有让机器人陷入困境,只会让普通用户感到沮丧。
有时候技术问题的最佳解决方案不是更多的技术。
答案 110 :(得分:0)
两种解决方案,一种是高科技,一种是低科技。
首先是高科技:中国银行的产品在几秒钟内售罄,因为机器人在最初的几毫秒内获得了很多。因此,不要试图击败机器人,而是向他们出售他们正在扫描的东西:一袋垃圾。当然是无用的垃圾:Rosie O'Donnell弯曲的纸夹和玷污的照片。然后在服务器上内置随机延迟几秒钟。随着销售的继续,销售产品的实际价值将增加,而销售价格则不会。这样,第一批购买者(前几毫秒的机器人)将获得比他们支付的价值低得多的东西(棕色洋葱蛋糕?),下一个购买者(慢速机器人或更快的人类)将得到一些不引人注目的东西,但值得购买价格(在寄售中购买?),最后的买家(几乎所有人类)都会获得价值高于购买价格的东西(打破香槟?)。那台平板电视可能是最后购买的BOC。
任何等待时间过长的人都会错过,但与此同时,任何购买太快的人都会受到冲击。诀窍是等待一段时间......但不要太多。有一些运气,这是应该的。
低技术解决方案是将BOC的名称改为人类可以解释的东西,但机器人不能。排泄物的Wineskin?麻袋含有气味?与各种商品相邻的拓扑平面?切勿使用相同的名称两次,使用略有不同的图片,并在产品说明中说明实际销售的内容。
答案 111 :(得分:0)
对您的特定问题(而不是一般问题)的潜在解决方案是,如果用户想要查看“废话”,则要求用户登录。仅向恰好登录的用户显示垃圾邮件奖品。所有其他项目可以保持原始状态下未登录用户的可见状态。然后,您的忠实用户将优先考虑废话。
您显然必须通知您的用户,可能会通知您这样做是为了增加真实用户查找垃圾的可能性。
如果您的具体问题是针对某种特定类型的物品进行机器人采集,那么请采用限制性最小的替代方案,并仅针对该特定攻击进行防御。这个选项可以防止你关注的captchyas和可用性。
如果机器人登录并开始发送垃圾邮件,您可以强行退出并锁定帐户。
如果他们只是在那里得到袋子的废话,他们会很快离开,你的页面将不会受到大量的打击。忘掉高技术解决方案。
答案 112 :(得分:0)
2件事:
服务器层解决方案:mod_evasive(如果你使用apache)
http://www.zdziarski.com/projects/mod_evasive/
前层解决方案:反向验证码,或其他非侵入式验证码
答案 113 :(得分:0)
如果您对表单名称和ID进行随机化或加密,将表单字段的顺序随机化,并使表单标签成为随机验证码图像,那么会使脚本攻击变得更加困难:-D
答案 114 :(得分:0)
让整个血腥页面成为CAPTCHA! 像芝麻街那样排序......其中八件事,不属于这里......
在屏幕上放置9个项目,9个HTML表格,9个我想要一个按钮 (9只是当天的数字......选择你想要的任何数字,布局看起来仍然很好。也许12。也许可以根据加载浏览器的分辨率进行自定义...)
为每个人争抢他们
确保必须“看到”BOC才能知道它是哪一个......当然这意味着其他8个也必须“只能看到”,知道它们不是要购买的物品。
确保你只使用疯狂的数字来引用页面源代码中的幕后内容。
很好,所以BOT看到了它的BOC时间......但是选择正确的HTML表单进行处理将是一个疯狂的猜测。
答案 115 :(得分:0)
可能没有一个神奇的银弹可以照顾机器人,但这些建议的组合可能有助于阻止它们,并将它们减少到更易管理的数量。
如果您需要任何有关这些建议的说明,请与我们联系:
答案 116 :(得分:0)
为什么不在每次提供时更改中国银行的名称和图片?看到中国银行的最新版本,它将成为游戏乐趣的一部分。
答案 117 :(得分:0)
创建一个简单的IP防火墙规则,如果检测到超过最大值,则会将IP地址列入黑名单。每秒进来的请求数量。
答案 118 :(得分:0)
你正在努力做到这一点。我可能会踢自己,因为我今天刚刚从网站上获得了一个机器人网站的BOC,但只是将RANDOM CRAP文本放在网站主页上的验证码中。机器人都在寻找文本“RANDOM CRAP”。所以你基本上只是避免在第一时间触发它们。任何用眼睛看的人都会看到它说的是“随机废话”。
答案 119 :(得分:0)
一个相当简单的解决方案是跟踪渲染表单和获得响应之间的时间差:机器人通常具有极短的毫秒响应时间,用户无法做到这一点;或几个小时的极长响应时间。
有一个django代码片段,以及更详细的描述:
答案 120 :(得分:0)
你知道,如果你使用pubsubhubbub发布你的RSS源,人们就不必一遍又一遍地看到你的网页,看看Woot-off中的下一个东西,他们只是等着它出现在他们的谷歌阅读器上。
答案 121 :(得分:0)
为此目的,我使用Cloudflare,因为它不会影响我的网站,但会自动阻止任何恶意用户使用CAPTCHA,并为您提供更多功能。
答案 122 :(得分:0)
我可能完全不明白这个问题,但这个想法发生在我身上。使用AJAX以固定间隔绘制和更新动态内容,同时使用刷新加载整页故意加载速度慢。
例如,让整个页面在第一次访问时花费整整15秒绘制,之后在设置的时间(例如5秒)后使用AJAX自动刷新动态内容。执行整页重新加载将是一个主要的缺点。该页面可能会定期显示新信息(包括广告),但使用重新加载进行整页重绘会相当慢。
脚本小子可以找出AJAX查询并自动化它,但是,对来自同一IP的请求进行速率限制也很容易。由于标准人类用户没有从浏览器发起这些请求的典型方法,很明显,来自同一IP的对AJAX URL的高速请求将由某种形式的自动化系统启动。
答案 123 :(得分:-1)
我想唯一要做的就是让努力超过垃圾邮件发送者的利益。所以这是一个“头脑风暴”的想法,我不知道如何实现这一点的所有技术细节。我将不得不做一些研究,但根据我目前的知识,值得调查其他建议的方法是否被拒绝。
您已经在自己的网站上使用过Flash,为什么不使用闪存控件来协助或提交表单?控件可以使用密钥对或其他算法对Web服务器进行一些加密通信来散列值吗?
我想整个表格可能都在flash中?我个人会使用Java applet,因为那是我最喜欢的语言。
答案 124 :(得分:-1)
目标的可能解决方案,不一定是问题标题:
不是向所有人提供特殊交易,而是一次将其提供给随机的IP地址集。例如,将IP空间划分为256个唯一块,并且在时间= 0时,仅允许第一个块中具有ip地址的人,并且在时间= 5秒时,允许来自第一个块和第二个块的人...直到最后一个时间段到来,并允许每个人看到交易。随机化它的一个想法是根据交易采取其IP的md5 / sha的最低有效位加上一些盐。
这将允许脚本编写者仍然具有优势,因为它们具有接近零的响应时间,并且具有多个IP地址的强度,但这意味着给定的机器人将没有任何优势而不是另一个因为IP地址而比他们“幸运”的客户。
将此与其他一些想法相结合似乎是一个好主意。
答案 125 :(得分:-1)
所以基本上你想知道某个特定用户是否是一个人而没有让他们证明这一点。据我所知,这在互联网上是不可能的,抱歉。
我建议将机制改为拍卖。
答案 126 :(得分:-1)
这总是很难,我赞赏你避免使用CAPTCHA的愿望。我建议先根据他们的行为阻止他们,你可以通过HTTP请求确定。看看我称之为bad behavior的工具,在我曾经在几个网站上使用它的那一年它尚未阻止真正的人类。大多数机器人都不能很好地假装成一个Web浏览器。我还建议使用项目蜜罐API。
其次,随机更改您的表单,包括标签。这不是为了欺骗机器人,这是为了让你发现他们的IP地址/代理。将条目搞砸了xx次的东西应该放在那个列表上。
最后,如果您发现自己处于一种只需要使用某种人工验证过程的位置,请尝试以下方法:
[ image of a pig ]
The image above is a: [ ] dog [ ] house [ ] pig
这对人类来说不会很烦人。
简而言之,您的问题没有“一个”解决方案,不要期望100%成功。设定你的目标是将烦恼减少到非常沉闷的咆哮,你应该能够很快地完成它。
答案 127 :(得分:-1)
我有一个(可能)未列出的解决方案(因为我还没有读完所有这些...)
您可以通过浏览器的用户代理字符串跟踪唯一身份用户。基本上,通过检查哪些信息是“唯一的”,您将能够获得足够的信息来区分不同的人(即使在相同的IP地址上)。
查看EFF撰写的这篇文章
以及this site(也是EFF)将根据您在浏览器中的User Agent
“测试”您的独特内容。
为了获得更好的独特性,您可以对唯一性和IP地址中的信息进行比较,从而真正了解违规者/机器人的可能性。
还要结帐pdf from EFF
答案 128 :(得分:-2)
如何使用多个订单按钮(四个或更多)。将它们命名为“image1”到“image4”,三个是视觉上相同的图像(“不要点击这里”)和一个读取“点击这里”。对于每次销售,随机为每个选项分配图像#。使它们相当大,因此用户不会意外地点击错误的。图像的文件大小相同。一旦IP点击按钮,任何按钮,它们就会被带到相应的网页(订购过程,或“哎呀,你点击了错误的按钮”),并且在重新访问服务器时给出了2分钟的超时。