我们能完全阻止机器人访问我们的web应用程序吗?

我们能完全阻止机器人访问我们的web应用程序吗?,web,user-agent,robots.txt,Web,User Agent,Robots.txt,我知道,如果我们想阻止机器人访问我们的网站,我们必须解析http请求中的“用户代理”头,然后检查请求是来自机器人还是来自浏览器 我认为我们不能完全阻止robot访问我们的网站,因为有人可以编程使用任何http客户端发送http请求,并使用假浏览器用户代理。因此,在这种情况下,我们无法知道假用户代理是来自浏览器或机器人程序(通过编程)的真实用户代理 我的问题是,有没有办法完全阻止机器人访问我们的网站?除了将您的页面置于某种身份验证方法之后,答案是否定的 显然,身份验证也适用于人类。我认为使用cap

我知道,如果我们想阻止机器人访问我们的网站,我们必须解析http请求中的“用户代理”头,然后检查请求是来自机器人还是来自浏览器

我认为我们不能完全阻止robot访问我们的网站,因为有人可以编程使用任何http客户端发送http请求,并使用假浏览器用户代理。因此,在这种情况下,我们无法知道假用户代理是来自浏览器或机器人程序(通过编程)的真实用户代理


我的问题是,有没有办法完全阻止机器人访问我们的网站?

除了将您的页面置于某种身份验证方法之后,答案是否定的


显然,身份验证也适用于人类。

我认为使用captcha进行身份验证是最简单、最常用的方法。其他选择是简单地向用户提问(简单地向人类提问,而不是向机器人提问)。然而,所有这些方法对人类用户来说都很烦人。

你不能消除机器人,但你可以大大减少它们

显然,您已经在使用的选项是用户代理检测

您还可以使用JavaScript通过ajax加载页面内容,这将消除任何无法处理JavaScript的bot。因此,只需要有一个id=“content”的空div,并在page ready上执行ajax调用以插入内容。这意味着,如果有人使用curl或类似的工具来刮取你的页面内容,它将无法工作。如果这个机器人是专门为你的站点构建的,那么很容易操作,但是大多数随机机器人可能无法通过

您还可以在JS中混淆目标url。。。和/或使用location.href命令ajax在不同文件夹中查找同名内容文件,从而使其自动运行

当然,你可以在用户(或机器人)进入网站之前获得验证码,但这对用户来说很烦人


如果不是为了访问页面,而是为了提交表单,那么captcha是一个不错的选择,或者你可以做一个蜜罐,将表单字段放入css隐藏的表单字段中,机器人将填充该字段,但人类不会(因为它是隐藏的),你可以检测到。

为什么要投否决票?这不是我们可以问的问题吗?你的问题在这里得到了回答@不,这是不现实的,我明白了。我以前没有在这个网站上搜索过这个。谢谢。查阅。谢谢你的好建议:在身体负荷时使用空div+ajax调用。