Answers:
您可以做几件事,包括:
放置一个只有机器人才能看到的假字段。然后,如果该字段与表单的其余部分一起提交,则可以忽略它(并根据需要禁止它们)。您还可以捕获遵循隐藏链接的恶意机器人。
使用要求用户回答5 + 3之类的问题的字段。任何人都可以回答该问题,但由于它会根据字段名称自动填充字段,因此机器人不知道该怎么办。因此,该字段将不正确或丢失,在这种情况下,提交将被拒绝。
使用令牌并将其放入会话中,并将其添加到表单中。如果令牌未与表单一起提交或不匹配,则它是自动的,可以忽略。
寻找来自同一IP地址的重复提交。如果您的表单不会收到太多请求,但是突然被僵尸程序攻击了,您应该考虑暂时阻止IP地址。
使用Askimet。它非常适合识别垃圾邮件。
John Conde概述了许多很好的方法。选择反僵尸/反垃圾邮件技术的问题是在有效性和便利性之间取得平衡。每次要发表评论或消息时都必须填写CAPTCHA,这确实很不方便,但是如果您只需要注册时输入CAPTCHA,则有时并不能阻止垃圾邮件发送者。
某些被动技术是不错的选择,因为它们不需要任何人工操作。问题在于,机器人越来越复杂,如果机器人可以解决验证码,那么他们肯定可以处理JS和CSS。因此,您需要发挥一些独创性,例如使用不太明显的CSS隐藏bot-trap字段。
但是根据您的问题,我想您可能已经意识到,重点并不是创建一个防僵尸网站,而仅仅是创建足够的威慑力,使僵尸用户可以简单地选择其他目标。因此,此处所需的内容因站点而异,并且可能需要进行一些反复试验。我将首先尝试使用干扰最小的技术。
最后,您可以对站点进行垃圾邮件处理的另一种方法是使用对等审核来删除所有由bot提交的评论或漏失的手动提交的垃圾邮件。
正如John Conde在他的#1中提到的那样,您也提到过,蜜罐在大多数情况下和大多数网站上都可以很好地工作。如果它是由机器人完成的,则也可以执行John提到的其他方法之一。但老实说,如果您的网站访问量较低或访问量平均,则可以解决问题。
例如,我的最爱之一:
<form action="/process-form">
<input name="email" placeholder="Enter Your Email">
<input name="email_address" placeholder="Enter Your Email" style="display:none;">
<input type="submit" value="Submit"></form>
现在,提交表单后,非常高比例的僵尸程序将同时填写“电子邮件”和“电子邮件地址”,而人类只会填写他们看到的“电子邮件”而不是“电子邮件地址”。因此,在您的/ process-form代码中,您只需要检查email_address是否为空即可进行验证。
简单有效。