当机器人攻击时! [关闭]

Posted

技术标签:

【中文标题】当机器人攻击时! [关闭]【英文标题】:When the bots attack! [closed] 【发布时间】:2010-09-11 19:30:45 【问题描述】:

除了验证码,还有哪些流行的垃圾邮件预防方法?

【问题讨论】:

看起来几乎所有响应者都错过了您所说的除了验证码...这是一个很好的角度,因为验证码已损坏且无法正常工作。 【参考方案1】:

我尝试过“蜜罐”,您可以在其中放置一个字段,然后用 CSS 将其隐藏(对于禁用样式表的任何人,将其标记为“留空”),但我发现很多机器人都能通过它很快。还有一些技术,例如将字段设置为某个值并使用 JS 更改它们、计算加载时间和提交时间之间的时间、检查引用 URL 以及其他一百万种事情。他们都有自己的陷阱,几乎所有你能希望的就是尽可能多地过滤他们,同时不要疏远你在这里的目标:用户。

不过,归根结底,如果您真的、真的不希望机器人通过您的表单发送信息,您会想要在其上添加验证码 - 这是我见过的最好的几乎所有事情都是reCAPTCHA - 但感谢印度的验证码解决市场和各地垃圾邮件发送者的独创性,这甚至不是一直成功。我会小心使用一些“巧妙”但有点“外面”的东西,因为对于至少有点习惯于你通常的验证码的用户来说,它更像是一种“wtf”。

【讨论】:

我喜欢 CSS 技术。它在所有方面都运作良好。我也会投票给这个答案,但我已经没有票了! :D 实际上,这可以通过最简单的技术轻松绕过;如果垃圾邮件发送者想滥用您的网站,他会的。唯一能保护你的是,如果你没有足够的精力去查看你的代码。 -1 有趣的是,垃圾邮件机器人通常会自动绕过解决方案,甚至不需要人工求解器商店集成到专业机器人中的 API 被标记为答案。是无知还是故意?【参考方案2】:

令人震惊,但这里的几乎所有回复都包含某种形式的验证码。 OP 想要一些不同的东西,我想也许他想要一些真正有效的东西,甚至可能解决真正的问题。 CAPTCHA 不起作用,即使它起作用了 - 这是错误的问题 - 人类仍然可以淹没您的系统,根据定义,CAPTCHA 不会阻止这种情况(因为它的设计只是为了告诉您是否是人类与否 - 不是它做得那么好......)

那么,还有哪些其他解决方案?好吧,这取决于...取决于您的系统和您的需求。 例如,如果您要做的只是限制用户可以填写“联系我”表单的次数,那么您可以简单地限制每个用户每小时/每天/无论如何可以提交的请求数。如果您的用户是匿名用户,那么您可能需要根据 IP 地址进行限制,并且偶尔将某个 IP 列入黑名单(尽管这也可以被规避,并导致其他问题)。 如果您指的是论坛或博客 cmets(例如这个),那么我使用它的次数越多,我就越喜欢该解决方案。经过身份验证的用户、授权(基于声誉,不太可能通过泛滥累积)、限制(你一天可以做多少)、偶尔的验证码,最后是社区审核以清理少数通过的用户——所有这些都结合在一起提供一个体面的解决方案。 (我想知道 Jeff 是否可以提供一些关于垃圾邮件和其他恶意邮件实际通过多少的信息......?)

另一个要考虑的控制(不知道他们是否在这里)是某种形式的 IDS/IPS - 如果您可以检测和识别垃圾邮件,您可以阻止该模式。审核需要手动填写,这里...

请注意,其中任何一项都不会阻止垃圾邮件,而是逐渐降低概率,从而降低盈利能力。这改变了经济等式,让 CAPTCHA 实际上提供了足够值得的价值 - 因为它不再值得垃圾邮件发送者打扰它或绕过它(感谢其他控制)。

【讨论】:

【参考方案3】:

给用户计算的可能性:

3和8之和是多少?

顺便说一句:刚刚浏览了微软研究院的一个有趣的方法:Asirra。

http://research.microsoft.com/asirra/

它向您展示了几张图片,您必须识别具有给定主题的图片。

【讨论】:

我过去也用过这个,效果也很好。什么是2+2?任何定制的、对用户来说容易且对您来说容易的东西都是最好的解决方案。 CAPTCHA 表示自动图灵测试,向人类提问属于该定义。 我查看了 Aksimet,发现它非常有趣,而且是一个好主意,因为动物识别是机器人最擅长的事情。如果仅凭这一点,我会投票 5 次:D 如果我只能在 95 年购买价值 20 美元的 MS:/ 我在我的网站上使用了 Asirra,效果非常好。我向任何人推荐这个。此外,它并不像 CAPTCHA 那样令人沮丧。这对用户来说很有趣,并有助于宠物被收养。为我赢,为我的用户赢,为被遗弃的宠物赢。【参考方案4】:

试试Akismet

从可用性的角度来看,验证码或任何形式的仅限人类的问题都是可怕的。有时它们是必要的,但我更喜欢使用 Akismet 等过滤器来清除垃圾邮件。

Akismet 最初是为阻止 WordPress 博客上的垃圾邮件而构建的,但该 API 能够适应其他用途。

更新:我们已经开始在我们的 Rails 应用程序 Yarp.com 上使用 ruby​​ 库 Rakismet。到目前为止,它在阻止垃圾邮件机器人方面一直很有效。

【讨论】:

我很想知道他们的基础是什么,但我想这是最常见的模式,比如广告与 URL 链接相结合 我认为他们使用了许多输入,包括针对类贝叶斯过滤器的内容、URL、源 IP 地址等。【参考方案5】:

一个非常简单的不给用户带来任何负担的方法就是在页面加载后禁用提交按钮一秒钟。我在一个有连续垃圾帖子的公共论坛上使用它,从那以后它就停止了它们。

【讨论】:

非常有趣的建议,我可能会尝试一下。谢谢你的回答。 我不明白。机器人是否关心提交按钮是否启用? 我猜他们在它被禁用时点击它,这表明他们不尊重计时器。 -1 - 机器人几乎总是忽略 javascript【参考方案6】:

Ned Batchelder 编写了一种将哈希与蜜罐相结合的技术,可以有效地预防爬虫程序。没有验证码,只有代码。

在Stopping spambots with hashes and honeypots:

我们可以通过让人们难以发布成功的帖子或让他们无意中将自己识别为机器人来阻止机器人,而不是通过让人们表明自己的身份来阻止机器人。这减轻了人们的负担,并使评论表单没有可见的反垃圾邮件措施。

这项技术是我在此站点上防止垃圾邮件机器人的方法。有用。这里描述的方法根本不看内容。它可以通过 Akismet 等基于内容的预防来增强,但我发现它本身就非常有效。

【讨论】:

【参考方案7】:

http://chongqed.org/ 维护活动垃圾邮件来源的黑名单以及在垃圾邮件中宣传的 URL。我发现后者在论坛中过滤帖子非常有效。

【讨论】:

【参考方案8】:

我观察到的最常见的问题是围绕用户输入来解决简单的谜题,例如下面是一张猫的照片。 (显示围绕猫的狗的缩略图图片)。或者简单的数学题。

虽然很有趣,但我相信军备竞赛也会让这些系统不堪重负。

【讨论】:

【参考方案9】:

您可以使用Recaptcha 至少使验证码有用。然后你可以用简单的口头数学问题或类似问题提出问题。微软的Asirra 让你找到猫和狗的照片。当垃圾邮件发送者无法从服务中获得足够的好处时,要求有效的电子邮件地址来激活帐户会阻止垃圾邮件发送者,但也可能会阻止普通用户。

【讨论】:

【参考方案10】:

以下内容在今天的技术下是不可行的,但我认为它离得太远了。处理论坛垃圾邮件也可能有点矫枉过正,但对于帐户注册或任何您想真正确定自己正在与人类打交道并且他们会准备好花费几分钟来完成的情况可能很有用过程。

有 2 位用户试图证明自己是人类,他们通过网络摄像头相互联系,并询问他们所看到的人是否是真人并且是真人(即不是录音),例如让他们镜像每个人别人的动作,或者在纸上写点什么。让每个人对不同的用户重复几次,然后将一些录音放入其中,他们也必须正确识别这些录音。

【讨论】:

+1 创造力和跳出框框思考 =) ...但要注意“想想孩子们”的人群,如果你实施它...【参考方案11】:

论坛上一种流行的方法是简单地将帖子少于 10 条的成员的帖子排入审核队列。当然,如果您没有版主,或者它不是论坛,这无济于事。一种更通用的方法是计算超链接与文本的比率。通常,垃圾邮件包含大量超链接,您可以通过这种方式捕获很多信息。同样是比较连续帖子的内容。只是不允许出现极其相似的连续帖子。

当然,任何了解您采取的措施的人都可以绕过它们。老实说,如果您是特定攻击的目标,您将无能为力。相反,您应该专注于防止更一般的、不熟练的攻击。

【讨论】:

【参考方案12】:

对于人工版主来说,如果机器人足够聪明,可以使用注册帐户,那么能够轻松地查找和删除来自某个 IP 的所有帖子,或者来自某个用户的所有帖子,肯定会有所帮助。同样,无需进一步管理即可轻松阻止 IP 地址或帐户一段时间的选项将减轻人工审核员的管理负担。

使用 cookie 让机器人和垃圾邮件发送者相信他们的帖子实际上是可见的(而只有他们自己看到)可以防止他们(或喷子)改变技术。让垃圾邮件发送者和巨魔看到其他垃圾邮件和巨魔消息。

【讨论】:

【参考方案13】:

像Invisible Captcha系统这样的Javascript评估技术要求浏览器在接受页面提交之前评估Javascript。当用户没有通过仅显示传统的 CAPTCHA 测试来启用 Javascript 时,它会很好地回退。

【讨论】:

现在有很多具有脚本执行功能的机器人。我认为使用脚本作为看门人的日子已经屈指可数了。 是的,他们很快就会比大多数浏览器更快地执行 JS,感谢 Google :) 确实 JavaScript 是一种糟糕的看门人。【参考方案14】:

动画验证码' - 滚动文本 - 仍然很容易被人类识别,但如果您确保没有任何框架提供完整的识别功能。

多项选择题 - 只需要一个______和一个微笑。这里的想法是用户必须选择/理解。

会话变量 - 检查您放入会话的变量是否是请求的一部分。将挫败只会生成请求的愚蠢机器人,但可能不会阻止像浏览器一样建模的机器人。

数学题 - 2 + 5 = - 这又是一个很容易解决但阻止机器人生成响应的问题。

图像网格 - 您创建图像网格 - 选择 1 或 2 个特定类型,例如 3x3 网格动物图片,您必须挑选出网格上的所有鸟类。

希望这能为您的新解决方案提供一些想法。

【讨论】:

我看到数学问题越来越普遍,但它们似乎并不是最好的选择。当它们变得流行到足以惹恼botters时,添加一个简单的函数来解析大多数这些问题所涉及的琐碎算术可能会非常简单。 具有 N 个选项的单项选择题不是很有效,因为它仍然允许随机猜测成功 1 / N 的时间。 “挑选出 3x3 网格中的所有鸟”的美妙之处在于 1 / 2^9 【参考方案15】:

朋友有最简单的反垃圾邮件方法,而且很有效。

他有一个自定义文本框,上面写着“请输入数字 4”。

他的博客相当受欢迎,但仍然不够受欢迎,机器人无法识别(目前)。

【讨论】:

我希望这个数字是随机选择的! xkcd.com/221 艾丹,我也有同样的想法!【参考方案16】:

请记住让那些不使用传统浏览器的人可以访问您的解决方案。 iPhone 人群不容忽视,有视力和认知问题的人群也不应被排除在外。

【讨论】:

【参考方案17】:

蜜罐是一种有效的方法。 Phil Haack 提供了一个good honeypot method,原则上可以用于任何论坛/博客/等。

您还可以编写一个跟踪垃圾链接并分析其页面以查看它是否是真实链接的爬虫。最明显的是包含您内容的精确副本的页面,但您可以选择其他指标。

审核和黑名单,尤其是像 WordPress 的这些插件(或任何你使用的,类似的软件可用于大多数平台),将在低容量环境中工作。如果您的环境是低容量环境,请不要低估这给您带来的优势。如果您有时间,个人决定哪些内容是合理的内容,哪些内容不合理,可以让您在垃圾邮件控制方面获得最大的灵活性。

不要忘记,正如其他人所指出的,验证码不仅限于从图像中识别文本。通过图像传递的视觉联想、数学问题和其他非主观问题也符合条件。

【讨论】:

【参考方案18】:

Sblam 是一个有趣的项目。

【讨论】:

【参考方案19】:

不可见的表单域。为用户创建一个不会出现在屏幕上的表单域。使用 display: none 作为 css 样式,这样它就不会出现。为了便于访问,您甚至可以放置隐藏文本,以便使用屏幕阅读器的人知道不要填写。机器人几乎总是填写所有字段,因此您可以阻止任何填写不可见字段的帖子。

【讨论】:

有趣!您在生产中使用过这种方法吗? 我试了一次不是很成功。该网站仍然在使用该技术,无论它的变化如何,机器人都能通过。也许我只是被聪明的人盯上了=/【参考方案20】:

根据垃圾邮件发送者 IP 地址黑名单阻止访问。

【讨论】:

这种技术根本不起作用,黑名单通常包含大部分合法用户的 IP。您以这种方式成功阻止的几乎所有用户都是合法用户。 “这种技术根本不起作用”对我来说似乎有点过分热心。通过 IP 地址进行屏蔽可以根除一些最严重的违规者。我并不是建议拒绝访问大量地址。 IP 黑名单需要逐渐增加临时性,这意味着它从临时开始(以防止阻止合法用户),并且每次重复它应该在黑名单上停留更长时间。【参考方案21】:

蜜罐技术在页面顶部放置了一个不可见的诱饵形式。用户看不到它并提交了正确的表单,机器人提交了错误的表单,不执行任何操作或禁止他们的 IP。

【讨论】:

【参考方案22】:

我看到了一些类似于Asira 的巧妙想法,它们要求您识别哪些图片是猫。我相信这个想法源于不久前的KittenAuth..

【讨论】:

【参考方案23】:

使用类似于google image labeler的内容,其中选择的图像,使得计算机将无法识别人类可以的主导特征。

用户会看到一张图片,并且必须输入与之相关的单词。他们将继续显示图像,直到他们输入的字词与之前用户为同一图像输入的字词一致。有些图像是新的,它们没有被测试,但被包括在内以记录与它们相关的单词。根据您的受众,您还可以选择只有他们会识别的图像。

【讨论】:

【参考方案24】:

Mollom 据说擅长阻止垃圾邮件。提供个人(免费)和专业版本。

【讨论】:

【参考方案25】:

我知道有些人提到了 ASIRRA,但是如果您访问所有图片的“收养我”链接,它会在链接页面上显示它是猫还是狗。因此,机器人访问所有的采用链接应该相对容易。所以这个项目只是时间问题。

【讨论】:

【参考方案26】:

只需验证电子邮件地址,让 google/yahoo 等担心

【讨论】:

【参考方案27】:

您可以获得一些设备 ID 软件 the41 有一些欺诈预防软件,可以检测用于访问您网站的硬件。我相信他们用它来抓捕欺诈者,但可以用来阻止机器人。一旦您确定了机器人正在使用的设备,您就可以阻止该设备。上次检查时,它甚至可以通过电话网络(不是您的地理 IP !!)跟踪您的路线,因此如果您愿意,甚至可以阻止邮政编码。

通过如此道具它很昂贵。一个更好的更便宜的解决方案,而不是老大哥。

【讨论】:

以上是关于当机器人攻击时! [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

打印带字典/列表的字符串时如何防止打印括号和引号?

什么是机器学习? [关闭]

BZOJ3993 [SDOI2015]星际战争 二分 + 网络流

我想在机器人关闭或打开的某个频道中发送一条消息

Java 启动 Node.js 程序立即关闭

[当人工智能遇上安全] 6.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例