防止恶意机器人发布垃圾邮件


15

我记得一个网站因滥用而关闭,我想知道机器人是否参与其中。如果该机器人将某些内容发布到我的网站上,那么我可以采取哪些措施来应对它?我当时正在考虑设置一些Cookie,并通过JavaScript +时间戳和符号更改Cookie(因此,今天和下周无法使用昨天的Cookie)。

我确信大多数人/机器人都只会使用其他网站,而不是在其机器人中启用JavaScript。

我还可以做些什么?我正在考虑每日POST限制,以及那些只是随机发布垃圾邮件的通用漫游器的蜜罐。

Answers:


13

您可以做几件事,包括:

  1. 放置一个只有机器人才能看到的假字段。然后,如果该字段与表单的其余部分一起提交,则可以忽略它(并根据需要禁止它们)。您还可以捕获遵循隐藏链接的恶意机器人

  2. 使用像reCAPTCHA这样的验证码

  3. 使用要求用户回答5 + 3之类的问题的字段。任何人都可以回答该问题,但由于它会根据字段名称自动填充字段,因此机器人不知道该怎么办。因此,该字段将不正确或丢失,在这种情况下,提交将被拒绝。

  4. 使用令牌并将其放入会话中,并将其添加到表单中。如果令牌未与表单一起提交或不匹配,则它是自动的,可以忽略。

  5. 寻找来自同一IP地址的重复提交。如果您的表单不会收到太多请求,但是突然被僵尸程序攻击了,您应该考虑暂时阻止IP地址。

  6. 使用Askimet。它非常适合识别垃圾邮件。


5
+1-并且,理想情况下,您将以用户友好的方式实现上述建议的组合(例如,如果用户禁用了Javascript,因此未通过基于Javascript的身份验证,请向用户提供CAPTCHA)
danlefree 2010年

6

John Conde概述了许多很好的方法。选择反僵尸/反垃圾邮件技术的问题是在有效性和便利性之间取得平衡。每次要发表评论或消息时都必须填写CAPTCHA,这确实很不方便,但是如果您只需要注册时输入CAPTCHA,则有时并不能阻止垃圾邮件发送者。

某些被动技术是不错的选择,因为它们不需要任何人工操作。问题在于,机器人越来越复杂,如果机器人可以解决验证码,那么他们肯定可以处理JS和CSS。因此,您需要发挥一些独创性,例如使用不太明显的CSS隐藏bot-trap字段。

但是根据您的问题,我想您可能已经意识到,重点并不是创建一个防僵尸网站,而仅仅是创建足够的威慑力,使僵尸用户可以简单地选择其他目标。因此,此处所需的内容因站点而异,并且可能需要进行一些反复试验。我将首先尝试使用干扰最小的技术。

最后,您可以对站点进行垃圾邮件处理的另一种方法是使用对等审核来删除所有由bot提交的评论或漏失的手动提交的垃圾邮件。


你能解释一下同伴节制的想法吗?这是否涉及普通用户获得主持人权限,或者我该如何想象?
0xC0000022L

@STATUS_ACCESS_DENIED:抱歉,您的回复很晚,但是同级审核基本上类似于digg,slashdot,stackexchange等,用户可以通过提供某种形式的正面或负面反馈来审核网站上的内容。因此,您可以使系统自动化,以便当足够多的用户对某条内容给出负面反馈时,该系统会自动隐藏或标记为要查看。在StackExchange之类的网站上,用户还可以将评论/答案标记为垃圾邮件,以引起管理员的注意。这减少了付费管理员必须要做的工作。
冒犯君主

谢谢。当然,这仅适用于高流量的站点,在这些站点上,足够多的用户会被困扰以提供反馈;)
0xC0000022L

1

正如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是否为空即可进行验证。

简单有效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.