在没有验证码的情况下优化垃圾邮件

Posted

技术标签:

【中文标题】在没有验证码的情况下优化垃圾邮件【英文标题】:Optimising against spam without captcha 【发布时间】:2013-05-27 01:07:55 【问题描述】:

这不是讨论,但如果这有助于防止爬虫或垃圾邮件机器人。

验证码对用户不友好,看起来也不好看……这就是为什么我想尝试这样的事情:

<form><input type="text" name="name"> <input type="hidden" value="" name="surname" /></form>

并检查输入类型是否隐藏(以检查其是否为机器人)(submit.php)。

if (!empty($_POST['surname']))
    $error2 = "You are a Bot.";

我的问题是:

这会起作用还是爬虫或机器人会忽略隐藏的输入类型?

或者用&lt;div style="display:none;"&gt;&lt;/div&gt; 包裹它会更好吗?

从技术上讲,它可以工作(如果我用一个值填充该字段)......但我不知道这样的事情是否会假装自己不会收到烦人的垃圾邮件......

感谢阅读/其他用户友好的解决方案。

【问题讨论】:

“这会起作用吗,还是爬虫或机器人会忽略隐藏的输入类型?” - 我们是否应该知道所有机器人及其行为? 如果有人想尝试,它也很容易解决。验证码之所以有效,是因为图像识别很困难;但是找出机器可读的 html 文档中可见和不可见的内容并不难:所有浏览器都可以做到…… 【参考方案1】:

添加空的 CSS 隐藏字段并检查输入是其中一种选择。

尝试检查奇怪的浏览器信息$_SERVER['HTTP_USER_AGENT']

允许最小打开字段,依赖单选按钮、下拉选择器、检查字段...

不允许发布 HTML / URL 地址....

问题是,垃圾邮件发送者适应,你也应该适应。

【讨论】:

问题是:Contactforms 大多确实有开放字段...但称呼始终是我必须选择的字段:而且它是一个 感谢 +1 :) 我个人认为你不应该依赖用户的意愿来解决你的问题。即使是小的验证码仍然是验证码。【参考方案2】:

这类字段称为honeypot fields,其想法是使用css 隐藏它们,而不是使用隐藏字段。

是否要使用它们是您的决定,您需要进行一些研究。使用它们有一些批评,例如用于辅助功能的屏幕阅读器可能会看到这些字段并阅读它们。

您还可以使用一个简单的复选框选中此选项:http://uxmovement.com/forms/captchas-vs-spambots-why-the-checkbox-captcha-wins/

注意:我认为只有在您确定自己会遇到垃圾邮件问题,或者您已经遇到此问题时,才应该添加验证码,而不是从一开始就知道您是否真的需要它。

【讨论】:

【参考方案3】:

也许您可以尝试仅在 PHP 端处理机器人问题,看看这可能会有所帮助 how to detect search engine bots with php?

【讨论】:

这看起来很适合表单!谢谢。

以上是关于在没有验证码的情况下优化垃圾邮件的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有验证码或集中管理系统(例如 akismet)的情况下防止垃圾邮件

如何在没有验证码的情况下保护联系表格?

可以做些啥来防止类似论坛的应用程序中的垃圾邮件?

mailchimp发邮件怎么进入垃圾箱

验证码的诞生

即使经过验证,AWS SES 电子邮件也总是会进入垃圾邮件