什么是好的隐形验证码?我的网站需要 JavaScript,所以任何需要它的东西都可以。
6 回答
添加一个新的输入字段,将其标记为“请留空”,使用 CSS 将其隐藏,如果该字段已填写,则忽略该帖子。像这样:
<style type='text/css'>
#other_email_label, #other_email {
display: none;
}
</style>
...
<form action='mail'>
<label id='other_email_label' for='other_email'>Please leave blank:</label>
<input type='text' name='other_email' id='other_email'>
...
</form>
因此人类不会看到该字段(除非他们关闭了 CSS,在这种情况下他们会看到标签并将其留空)但垃圾邮件机器人会填写它。任何填充该字段的帖子必须来自垃圾邮件机器人。
这是Phil Haack 的一个简单的数学验证码。它甚至可以在禁用 javascript 的情况下使用。
用他自己的话来说:
它的工作方式是渲染一些 javascript 来执行非常简单的计算,并使用 javascript 将答案写入隐藏的文本字段。当用户提交表单时,我们从隐藏的表单字段中获取提交的值,将其与秘密盐值组合,然后将整个事情散列在一起。然后我们将该值与预期答案的哈希值进行比较,该哈希值存储在 base64 编码的隐藏表单字段中。如果禁用了 javascript,那么我们会将问题呈现为可见文本字段旁边的文本,从而使通过非 javascript 浏览器阅读您网站的用户有机会发表评论。
我使用了 Display:None 文本框的技术,并拒绝了任何填写它的提交,并且很幸运。
对于谷歌推出“Invisible ReCAPTCHA”(https://www.google.com/recaptcha/intro/comingsoon/invisible.html)的价值,我已经被我的网站列入白名单。目前正在实施它,但是文档并没有那么详细...... :)
MTCaptcha是一种 reCaptcha 替代验证码服务,支持隐形验证码,类似于最近推出的 reCaptcha V3,它对大多数用户不可见,但如果感觉流量有风险,则会显示验证码。
如果您的意思是 - 使用人类无法看到的验证码作为人类验证测试 - 我认为这是不可能的。
这样一来,忽略验证码的机器人就会被认为是真人!似乎是一个天真的垃圾邮件机器人的陷阱。
如果您希望您的受验证码保护的站点与没有 javascript 的客户端一起使用 - 那么您应该将其硬编码为 html。
此外,如果您可以可靠地识别受信任的用户(通过判断调用或通过检测某些使用模式) - 您可以让他们在没有验证码的情况下发布到您的网站。