我是否正确地认为垃圾邮件机器人无法模拟'按键'事件,因此如果我需要在我的联系表单中为每个字段提供按键才能提交垃圾邮件?/ p>
如果我不关心我的观众是否启用了JavaScript,这是验证码等的一个很好的替代品吗?
奇才,让我说对了。答案 0 :(得分:1)
我不确定他们是否可以“本机地”生成按键事件(我认为你可能不对,但我不会惊讶地发现有一些边缘情况可以这样做)。
但是,我认为仅仅直接执行element.onkeypress()
会产生问题。如果机器人可以确定它需要按一个键来推进,那么实际归结为需要调用特定的事件处理程序方法 - 而机器人可以执行后者。它可以创建自己的假Event对象,也包含键码,然后将其传入和/或在window.event
上设置。
理论上,可能能够通过非常严格地检查处理程序中的事件对象来检测这一点。我不认为机器人很容易就能够创建一个本机等效的事件对象,所以也许通过检查原型链你可能会在两者之间产生歧视。但是,对于一般用途来说,这几乎肯定太脆弱了,并且无法在不同的浏览器/环境/插件/等中可靠地工作。
因此,我不认为这是一条富有成效的道路,因为你无法告诉事件处理程序事件是否“真实”。浏览器本机代码是不同的,因为机器人实际上不能触发点击事件,但在Javascript中我没有看到一种简单的方法来阻止您的方法被简单地调用。
答案 1 :(得分:0)
当前的spambots实现可能无法做到这一点。但是模拟按键并不难。如果您只是一个小型网站,那么机器人作者可能无法绕过您的系统,但如果它足够大,以便教师能够非常快速地打破您的系统。