我们正在尝试为我们一直存在的主要垃圾邮件和机器人问题提出解决方案。基本上,我们有一个报名表,供人们填写询问基本信息(姓名,电子邮件,地址等 - 有时我们只要求发送电子邮件)。
我们的表单发布在数千个网站和域名中,因此我们开始看到传入的垃圾邮件和机器人执行表单,提交虚假信息。
到目前为止,我们已经采用这些措施来制止它们:
1)来自同一IP的3次提交后IP被阻止。
2)我们检查http referrer以确保它来自预期的页面。如果不是,我们就会删除该条目。
3)如果已经输入一次电子邮件,系统将不会再次录制。
4)我们添加了验证码,但我们的大多数客户都不想使用它,因为它减少了表单提交。
我们的表单是通过AJAX请求提交的。目前,僵尸程序正在向AJAX文件提交请求,而HTTP_REFERRER来自预期的页面,并且没有任何信息表明他们正在使用代理。
我可能是不正确的,但似乎他们有一个宏设置,每次使用一个新的IP旋转,并自动填写我们的表单字段,并提交它们,就像人类一样。
最近我们看到这些机器人提交我们的表格数千次,都使用相同类型的地址(如@yahoo或@hotmail),但提交的内容都来自不同的IP地址,所以我们不能检测并阻止它们。将其中一些IP输入到IP检查器后,看起来大部分IP都来自代理服务器。
我们试图阻止垃圾邮件的一个想法是当用户输入其中一个字段时,javascript会调用一个cookie。当他们去提交表单时,如果找不到cookie,我们会删除该条目。这会有用吗?
我们还没有实现Honeypot方法,因为表单是使用AJAX提交的,而且我们已经读过许多机器人知道这个方法很容易解决。
非常感谢任何关于如何最好地打击这一点的建议/想法!
答案 0 :(得分:0)
您不需要cookie。只需要一个onload()javascript在隐藏的表单字段中设置一个值。如果提交的表单中此字段为空,请将其丢弃。
当然,您确实意识到任何基于javascript的解决方案都要求实际客户端的浏览器启用javascript,并且有各种面向隐私的工具可让用户控制是否启用了javascript一个特定的网站。这是你需要决定的事情,不管它是否适合你。
但是这个简单的,基于javascript的黑客应该很简单,可以工作;至少直到垃圾邮件发展到能够处理它的程度。
答案 1 :(得分:0)
您可以提出非常简单的验证问题,例如"什么是2 + 3 =?"。它们并不像CAPTCHA那样烦人,但显然不是最有效的。它应该减少垃圾邮件的数量。