0

所以我有一个基本的 PHP 表单蜜罐。看起来像 ..

$honeypot = $_POST['honeypot'];    
if($honeypot)
     $error = "You are a bot";
else{   

并且输入蜜罐是显示:隐藏。从技术上讲,它有效,已经工作了一年多,但最近垃圾邮件机器人已经开始击败它。我的猜测是机器人意识到它是一个隐藏的领域,我知道还有其他一些方法可以做到这一点。我可以使该字段可见但很小,与背景颜色相同,将其放置在页面之外。但我想获得一些关于其他人关于什么是最有效的经验的意见。

谢谢。

4

4 回答 4

5

您可以通过使用 JavaScript 完全删除该字段来实现相同的效果。

不管你做什么,它都可以被机器人打败。如果有人花 5 分钟手动调整他们的机器人以适应您的表单,则尤其如此。此外,越来越多的机器人运行完整的 webkit 浏览器实例,它们将像“真实”用户一样执行 JavaScript。

于 2012-11-09T21:22:16.210 回答
1

除了使用display: hidden,您可以尝试使用类似的东西来隐藏输入position: absolute; top: 100%,或者甚至只是删除边框并将其混合到背景中。我也会考虑从 更改名称honeypot,因为这是一个已知术语。

一些复杂的机器人可能仍然能够绕过它,但基本上在所有情况下都是如此。如果您不收到垃圾邮件至关重要,您可以使用验证码(我讨厌验证码并且不会向用户推荐它们——在我看来它们太侵入性了),但有些机器人甚至可以击败验证码。如果您收到很多提交,您可能不得不容忍一点垃圾邮件。

于 2012-11-09T21:27:24.573 回答
0

您可以尝试使用标签标记该字段以供机器人使用,使该字段完全可见。不幸的是,这对于真实用户来说有些不便。我还没有理由尝试这个。错误可能会说“谢谢,但不允许机器人输入”(注意很好的“谢谢”;-)

于 2013-08-26T21:37:57.347 回答
-1

最好使用验证码(尽管我讨厌它们)。

如果这只是一个联系表格,请尝试使用$_POST['password'];. 机器人会将其检测为正常、有效的字段并填写。蜜罐太明显了。

于 2012-11-09T21:22:41.310 回答