我必须阻止机器人向帐户创建页面发送垃圾邮件请求(按照HTTP邮件请求),但我不想使用验证码,也不能访问其IP(这是隐藏服务)。
顺便说一句,我不能使用javascript(tor浏览器)。 有没有合理的方法来做到这一点?
答案 0 :(得分:3)
另一种解决方案是使用蜜罐:
答案 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获得了可访问性问题,并且确定的攻击者可以跳过蜜罐字段