在没有验证码的情况下优化垃圾邮件
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.";
我的问题是:
这会起作用还是爬虫或机器人会忽略隐藏的输入类型?
或者用<div style="display:none;"></div>
包裹它会更好吗?
从技术上讲,它可以工作(如果我用一个值填充该字段)......但我不知道这样的事情是否会假装自己不会收到烦人的垃圾邮件......
感谢阅读/其他用户友好的解决方案。
【问题讨论】:
“这会起作用吗,还是爬虫或机器人会忽略隐藏的输入类型?” - 我们是否应该知道所有机器人及其行为? 如果有人想尝试,它也很容易解决。验证码之所以有效,是因为图像识别很困难;但是找出机器可读的 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?
【讨论】:
这看起来很适合表单!谢谢。以上是关于在没有验证码的情况下优化垃圾邮件的主要内容,如果未能解决你的问题,请参考以下文章