如何阻止机器人和垃圾邮件提交评论?

Posted

技术标签:

【中文标题】如何阻止机器人和垃圾邮件提交评论?【英文标题】:How to stop bots and spams from submitting comments? 【发布时间】:2012-10-20 22:48:44 【问题描述】:

目前

    我正在使用验证码图片 我创建了文本字段并使用 javascript 将其隐藏。我希望它的值在服务器端为空,因为机器人应该填写表单上的所有字段。如果 value 不为空,则不会处理评论。 我还使用时间戳来检查提交评论所用的时间。我想如果评论是在 15 秒内提交的,它来自机器人,所以我也停止处理评论。

但我仍然无法控制机器人提交我的 cmets 表单。 请帮忙,我现在该怎么办?

【问题讨论】:

添加一个隐藏字段,名称为“用户名”之类的明显名称,如果将其填写,则表明它是机器人。 他们可能不是机器人,而是人类垃圾邮件发送者。 如何防止垃圾邮件发送者 Waleed Khan? 人们必须在您的网站上注册吗?因为如果他们这样做了,你可以确保你接受人们,或者建立一个额外的系统,就像人们必须点击人们必须点击他们邮件中的链接一样。我有一个人必须注册的系统,只有管理员才能接受人。这样我就知道我接受谁,谁允许发帖。如果它是一个您不必注册的网站,我可以理解这很难,这使得它变得更加困难。 【参考方案1】:

添加带有误导性 ID/名称的隐藏字段

<input type="hidden" id="Username" name="Username" value=""/>

如果机器人出现并填写您的表单,他们很可能会填写隐藏字段,而用户不应该这样做,因此如果隐藏字段有数据,则禁止提交。

【讨论】:

【参考方案2】:

为什么不实现Akismet 并让他们为您处理呢?他们有一个有据可查的 API,成千上万的人依靠它来防止 Wordpress 博客上的垃圾邮件。我在我妻子的博客上使用 Akismet 大概 3 年没有看到垃圾评论了。

【讨论】:

【参考方案3】:

Lyuben Todorov 提出了一个很好的解决方案来防止 BOT 垃圾邮件发送者。但是,如果您仍然有垃圾邮件并且可能是人为垃圾邮件,请使用Akismet 反垃圾邮件系统。

【讨论】:

【参考方案4】:
    对 cme​​ts 中的所有链接使用 no-follow。这不会阻止垃圾邮件,但会消除垃圾邮件的大部分诱因。 (see here how it works) 需要用户身份验证才能发表评论。 使用非描述性表单元素(不要命名 div“评论”)。

【讨论】:

【参考方案5】:

尝试创建独特的验证码来阻止任何标准机器人(但如果有人想准确地向您发送垃圾邮件,那将无法正常工作)。

另一种方法是通过电话号码添加验证。

【讨论】:

我说的是独特的保护。它可以是“请从给定图像中选择我们的网站名称”之类的内容。

以上是关于如何阻止机器人和垃圾邮件提交评论?的主要内容,如果未能解决你的问题,请参考以下文章

Django评论垃圾邮件

使用 CSRF 表单令牌是不是有助于防止垃圾邮件?

apache_conf 阻止亚洲交通。 :( SItes正在受到坏机器人和垃圾邮件发送者的攻击。

apache_conf 阻止来自social-buttons.com的垃圾邮件机器人

更好的蜜罐实现(表单反垃圾邮件)

如果我使用验证码,我能完全阻止我博客中的垃圾邮件吗?