【问题标题】: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 文档中可见和不可见的内容并不难:所有浏览器都可以做到……

标签: php html forms


【解决方案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?

    【讨论】:

    • 这看起来很适合表单!谢谢。
    猜你喜欢
    • 2011-04-14
    • 2014-06-05
    • 1970-01-01
    • 2010-11-20
    • 2011-10-15
    • 2018-05-19
    • 2013-09-07
    • 2012-01-01
    • 2012-08-03
    相关资源
    最近更新 更多