我的web服务登录页面包括一个注册表单,一方面,我想在此表单中使用验证码字段阻止注册机器人,但另一方面,验证码字段使表单变得丑陋。所以我需要的是只有当我的服务器检测到机器人行为时才包含这个captcha字段。
我如何识别一个机器人并有效地阻止它?(验证码或非验证码) IP地址?(NAT中的客户端如何?)会话?用户代理?
附注:我对机器人的定义是在单个客户端上重复创建新帐户的任何尝试。因此,阻止被定义为“机器人”的用户代理是不可行的,因为垃圾邮件发送者可以编写脚本来驱动浏览器,或者使用假的用户代理字符串。
这个问题的答案提到了一些使用隐藏字段的技巧,这些字段应该是空白的,但这个技巧并不能说服我非常有效:How websites like Facebook are protected against bot without any captcha
发布于 2014-04-30 18:15:05
有多种常见的策略。在类似的问题here上查看我的答案。混合使用策略通常效果最好。但请注意,你真的不应该太着迷。简单的策略通常工作得很好。另一方面,如果有人一心想要伤害你的网站,开发定制的机器人只会破坏你的保护,即使是Captcha也是无效的,因为有许多非常强大的光学字符识别库。此外,他们可能会更容易只是DDoS你,而不是拿出定制机器人。
https://stackoverflow.com/questions/21758403
复制相似问题