如何阻止垃圾邮件机器人填写表格?

Posted

技术标签:

【中文标题】如何阻止垃圾邮件机器人填写表格?【英文标题】:How to block spam bots from filling out forms? 【发布时间】:2014-10-22 23:42:31 【问题描述】:

我们正在努力想出一个解决方案来解决我们一直遇到的主要垃圾邮件和机器人问题。基本上,我们有一个报名表供人们填写,要求提供基本信息(姓名、电子邮件、地址等——有时我们只要求提供电子邮件)。

我们的表单张贴在数以千计的网站和域上,因此我们开始看到传入的垃圾邮件和机器人执行表单,提交虚假信息。

到目前为止,我们已经使用这些方法来阻止它们:

1) 来自同一 IP 的 3 次提交后 IP 被阻止。

2) 我们检查 http referrer 以确保它来自预期的页面。如果不是,我们就杀死该条目。

3) 如果邮件已经输入过一次,系统将不再记录。

4) 我们添加了验证码,但我们的大多数客户不想使用它,因为它减少了表单提交。

我们的表单是通过 AJAX 请求提交的。目前,机器人正在向 AJAX 文件提交请求,并且 HTTP_REFERRER 来自预期页面,并且没有任何信息表明它们正在使用代理。

我可能是不正确的,但似乎他们有一个宏设置,每次使用一个新的 IP 轮换,并自动填写我们的表单字段并提交它们,就像人类所做的那样。

最近,我们已经看到这些机器人提交我们的表单数千次,都使用相同类型的地址(如 @yahoo 或 @hotmail),但提交都来自不同的 IP 地址,所以我们不能检测并阻止它们。在将其中一些 IP 输入 IP 检查器后,看起来其中大部分来自代理服务器。

我们想出尝试阻止垃圾邮件的一个想法是,当用户在其中一个字段中键入内容时,javascript 会调用一个 cookie。当他们去提交表单时,如果没有找到 cookie,我们会删除该条目。这行得通吗?

我们还没有实现 Honeypot 方法,因为表单是使用 AJAX 提交的,而且我们了解到许多机器人都知道很容易绕过该方法。

任何关于如何最好地解决这个问题的建议/想法将不胜感激!

【问题讨论】:

尝试使用内容分发网络 (CDN) cloudflare.com/waf 您可以将来自代理的 IP 地址一起删除。 【参考方案1】:

您可以提出非常简单的验证问题,例如“2 + 3 = 是什么?”。它们不像 CAPTCHA 那样烦人,但显然不是最有效的。不过,它应该会减少垃圾邮件的数量。

【讨论】:

我们已经有了一个简单的验证码选项(他们点击相应的图片),但同样,客户不想使用它,因为这会损害他们的转化率。【参考方案2】:

您不需要 cookie。只需让 onload() javascript 在隐藏的表单字段中设置一个值。如果提交的表单该字段为空,则扔掉它。

当然,您确实意识到任何基于 javascript 的解决方案都需要实际客户端的浏览器启用 javascript,并且有各种面向隐私的工具可以让用户控制是否为特定网站启用 javascript .这是你自己决定的事情,对你来说是否有问题。

但是这个简单的、基于 javascript 的 hack 应该足够简单才能工作;至少在垃圾邮件机器人发展到能够处理它的地步之前。

【讨论】:

以上是关于如何阻止垃圾邮件机器人填写表格?的主要内容,如果未能解决你的问题,请参考以下文章

更好的蜜罐实现(表单反垃圾邮件)

apache_conf 阻止来自social-buttons.com的垃圾邮件机器人

apache_conf 阻止亚洲交通。 :( SItes正在受到坏机器人和垃圾邮件发送者的攻击。

如何阻止 Gmail 将我的网络应用程序发送的邮件标记为垃圾邮件? [关闭]

如何阻止垃圾邮件发送者从 mailto 链接获取电子邮件地址? [复制]

ini 列出nginx以阻止多个服务器内的垃圾邮件机器人。每次更改时都需要自动提取此列表。