2012-11-09 17 views
0

所以我有一个基本的PHP表单蜜罐。它看起来像..PHP表格蜜罐正在被击败

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

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

谢谢。

+2

'$ error =“你是一个机器人”;' - 你甚至告诉机器人你发现了。你想知道什么?回馈200好,机器人认为一切都很好。你也真的命名该领域*蜜罐*? – hakre

+3

您可以随时尝试标题('Location:http://www.youtube.com/watch?v=UGS8re8cIVI');和rick滚动机器人。也许他们的电路将xplode。 –

+0

欺骗和检测机器人都是关于变化的方法。 – mario

回答

4

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

无论你做什么,它都可以被机器人击败。如果有人用5分钟的时间手动调整他们的机器人到你的表单,情况尤其如此。此外,越来越多的僵尸工具运行完整的webkit浏览器实例,它将像“真实”用户一样执行JavaScript。

-1

一个验证码将是最好的(尽可能多我恨他们)。

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

+0

我将字段名更改为“评论“为了吸引机器人来填补它,但无济于事。我真的不想用captcha ..我也恨他们。 – Pieter

1

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

一些复杂的机器人可能仍然能够解决它,但基本上在所有情况下都是如此。如果你没有收到垃圾邮件是至关重要的,那么你可以使用验证码(我讨厌验证码,并不会向用户推荐它们 - 他们对我来说过于侵扰),但是一些漫游器甚至可以击败验证码。如果您收到很多意见书,您可能不得不容忍一些垃圾邮件。

0

您可以尝试使该字段完全可见并标记为供机器人使用。不幸的是,真正的用户有些不便。我还没有理由尝试这一点呢。错误可能会说“谢谢你,但机器人输入是不允许的”(注意好的'谢谢你';-)