如何阻止机器人和垃圾邮件提交评论?
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】:-
对 cmets 中的所有链接使用 no-follow。这不会阻止垃圾邮件,但会消除垃圾邮件的大部分诱因。 (see here how it works)
需要用户身份验证才能发表评论。
使用非描述性表单元素(不要命名
div“评论”)。
【讨论】:
【参考方案5】:尝试创建独特的验证码来阻止任何标准机器人(但如果有人想准确地向您发送垃圾邮件,那将无法正常工作)。
另一种方法是通过电话号码添加验证。
【讨论】:
我说的是独特的保护。它可以是“请从给定图像中选择我们的网站名称”之类的内容。以上是关于如何阻止机器人和垃圾邮件提交评论?的主要内容,如果未能解决你的问题,请参考以下文章
apache_conf 阻止亚洲交通。 :( SItes正在受到坏机器人和垃圾邮件发送者的攻击。