很难理解应用程序的位置以及外部环境的确切位置。但我使用的一个简单的机器人删除技术是放置一个名为'的隐藏字段 的 登录 强> ' 要么 ' 的 名称 强> '并给它一个空值。
人类永远不会填补这个隐藏的领域,但是 的 垃圾邮件机器人 强> 总是填补它。因此,您可以丢弃该字段不为空的任何请求。
现在你必须防止 的 爬虫 强> 而且不仅仅是垃圾邮件机器人。从未做过,但这里有一些想法。您可以在第一个mouseMove事件中添加隐藏的“人类”隐藏输入(但仅限键盘 - 并考虑盲人 - 用户将被视为机器人)。因此,如果此字段不存在,您可以启动javascript'确认',询问“确认您是机器人,或者如果您是人类则单击取消”。 您可以使锚点链接包含此隐藏字段值将在js中覆盖的默认值。大多数抓取工具都不会覆盖这些值,尤其是如果您必须取消确认才能获得正确的行为(并避免大多数用户使用mouseMove事件进行确认)。
如果您能够修改用户来的地方,您可以尝试包含校验和。计算GET请求中所有字段的某种校验和或散列,并将其添加到GET请求本身(即通过javascript,但是在用户来自的地方,而不是他们登陆的位置)。然后,在您的应用程序中,拒绝所有具有错误校验和的命中。