防止机器人在没有验证码的情况下发送垃圾邮件

时间:2014-04-21 15:33:34

标签: php html bots spam-prevention

我必须阻止机器人向帐户创建页面发送垃圾邮件请求(按照HTTP邮件请求),但我不想使用验证码,也不能访问其IP(这是隐藏服务)。

顺便说一句,我不能使用javascript(tor浏览器)。 有没有合理的方法来做到这一点?

5 个答案:

答案 0 :(得分:3)

另一种解决方案是使用蜜罐:

  • 在表单中添加一个表单字段,并将其从访问者视图中隐藏(例如,将其置于屏幕外);
  • 添加一个tekst通知访问者(屏幕阅读器......)将该字段留空;
  • Bots很可能会填写所有表单字段;
  • 放弃所有填写了蜜罐字段的表单提交(非空)。

答案 1 :(得分:1)

如果它是机器人,那么很可能(但不是最终确定),POST请求是根据您的表单参数预先手工制作的。在这种情况下,您可以在隐藏的输入中生成一个随机数,您将在POST中验证来自"他的"会话/饼干/不管。

最好的解决方案仍然是验证码。

答案 2 :(得分:0)

您可能希望做的最好的事情是衡量您在注册的输入框中输入的速度。一个人将需要“有限的时间”,而机器人将基本上“没有时间”(虽然他们可以很快发现你寻找这个,并适应)。但是这样的测量需要“一些”客户端代码才能运行。

或者你可以给表单名称(对用户不可见)疯狂的名字:调用表单字段,人们必须在其中输入他们的名字“ZIP”,很多机器人会在那里输入数字。

答案 3 :(得分:0)

您可以在表单中添加不应修改的空白或预填充表单元素:

<form method="post" action="createaccount.php">
    <input type="text" name="username" />
    <input type="password" name="password" />
    <input type="email" name="email" value="" placeholder="Leave me blank!" style="display: none;" />
    <input type="submit" name="submit" />
</form>

然后在你的php中:

<?php
    if($_POST["email"] != "")
    {
        die("You must be a bot!");
    }
?>

如果机器人了解css,这种方法效果不好。

更多信息可以在这里找到:http://www.landauer.at/preventing-spam-in-form-submissions-without-using-a-captcha/

答案 4 :(得分:0)

MFA就是答案。 我遇到了类似的问题,并最终使用Google身份验证器使用MFA(多重身份验证)。 Captcha和honeypot只是让它变得困难,但并没有解决问题。 Captcha获得了可访问性问题,并且确定的攻击者可以跳过蜜罐字段