【问题标题】:Would this be enough to deter a robot?这足以阻止机器人吗?
【发布时间】:2012-01-01 21:38:45
【问题描述】:

我一直在想一些简单的方法来防止垃圾邮件机器人将内容提交到网站上的公共表单(例如联系表单)中。

我知道现在很多网站都会问用户一个简单的问题(例如 2+4 是什么?)。

如果你具备以下条件,是否足以威慑大多数机器人?

HTML

<form action="submit.php" method="post">
    <input type="text" name="name" placeholder="Name" /><br />
    <textarea name="message" placeholder="Message"></textarea><br />
    <label for="test">I am a:</label>
    <select id="test">
        <option value="robot" selected="selected">Robot</option>
        <option value="human">Human</option>
    </select>
</form>

PHP

<?php
if ($_POST['test'] == 'robot') header ('Location: contact.php?err=nothuman');
// process form
?>

作为机器人的想法可能会将选项项留在所选项目上。

如果有人有其他非常简单的解决方案,我很想听听?

【问题讨论】:

  • 让每个人都知道我知道关于recaptcha - 我不是在谈论完整垃圾邮件保护,更简单垃圾邮件保护 - 我个人认为 recaptcha 对小事(例如联系表格)来说非常痛苦
  • 在我使用过的一些简单表单上,机器人提交通常会选择第一个非默认选项。所以,既然你已经预先选择了机器人,他们很可能会选择人类。
  • 虽然recaptcha有点多,但这是防止垃圾邮件的最佳方法之一。如今,机器人变得越来越聪明,可以轻松解析页面。如果您始终使用相同的图像/文本作为防止垃圾邮件的机制,则某些用户可能曾经将该选项输入机器人,然后它可以轻松地继续向您发送垃圾邮件。
  • @Michael 很有趣!...也许我应该选择三个选项 - RobotMonsterHuman 或其他什么? :)
  • @AlexCoplan 或 3 个机器人和 1 个人类,并随机排列顺序。虽然 ReCaptcha 真的很有效......

标签: php html web-crawler spam-prevention


【解决方案1】:

另一种选择是使用人类图片和机器人图片。图像给机器人增加了额外的难度。

【讨论】:

  • 虽然对视障用户不太友好 - 请务必包含 alt 属性!`
  • ...然后 alt 属性会破坏额外的难度层。回到第一方 :) 我想,基本的验证码和问题多年来一直存在是有原因的。
【解决方案2】:

不,我认为这不足以阻止机器人。你真的应该考虑为此添加 Captacha 或类似的东西。

试试:http://www.google.com/recaptcha 它免费且易于与您的网站集成。

更新(上面的评论):虽然recaptcha 有点多,但这是防止垃圾邮件的最佳方法之一。如今,机器人变得越来越聪明,可以轻松解析页面。如果您始终使用相同的图像/文本作为防止垃圾邮件的机制,则某些用户可能曾经将该选项输入机器人,然后它可以轻松地继续向您发送垃圾邮件

【讨论】:

    【解决方案3】:

    简单的垃圾邮件防护: 添加名为“网站”的输入或任何其他流行的垃圾邮件发送者字段,并使用 CSS 将其隐藏。在服务器端检查是否设置了该字段,那么它是垃圾邮件机器人。

    【讨论】:

    • 这实际上相当不错!...这很有意义:)
    【解决方案4】:

    你可以测量很多东西来确定这个请求是否是由机器人发出的。有些是,

    1. 用户加载联系人页面与提交页面之间的时间差。对于机器人来说,这将是非常低的。或者可以是 1-2-5 系列型号。说 10、50、100 秒。在用户的情况下,这将是现实的价值。比如 11.345 秒。是的,您可以测量毫秒。机器人可能每 17 秒发送一次请求,以说服您它是由人类完成的。但是人类在 17.000 秒发送请求不是太难了吗?

    2. 检查 javascript 是否打开。机器人不会有 JS。

    3. 类似地尝试加载闪存。 Flash 文件可以隐藏其实现。它还可以设置一些JS值。

    【讨论】:

      【解决方案5】:

      这似乎是一个简单的解决方案。结果可能太简单了。 请查看这些现成的解决方案:

      但如果您希望保持简单,请查看this tutorial by PHPBuilder。然后,您将决定脚本的复杂性

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-17
        • 2011-03-23
        • 2017-08-10
        • 2020-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-26
        相关资源
        最近更新 更多