据我所知,如果我们想阻止机器人访问我们的网站,我们必须解析http请求中的“User-Agent”标头,然后检查请求是来自机器人还是浏览器。
我认为我们不能完全阻止机器人访问我们的网站,因为有人可以编程使用任何http客户端发送带有FAKE浏览器用户代理的Http请求所以对于这种情况,我们无法知道假用户代理是真实用户-agent来自浏览器或来自机器人程序(通过编程)。
我的问题是,有什么方法可以阻止机器人完全访问我们的网站?
答案 0 :(得分:1)
你无法消除僵尸程序,但你可以大大减少它们。
您已经使用的明显选项是用户代理检测
您还可以使用JavaScript通过ajax加载页面内容,这将消除任何无法处理javascript的机器人。所以只需要一个带有id =“content”的空div,并在页面就绪时执行ajax调用以插入内容。这意味着如果任何人使用curl或类似物来刮取您的页面内容,它将无法正常工作。如果机器人是专门为您的网站构建的,那么它很容易解决,但大多数随机机器人可能无法通过它。
你也可以在JS中混淆目标网址...和/或使用location.href使其自动化,告诉ajax在不同的文件夹中查找同名的内容文件。
当然,您可以在用户(或机器人)进入网站之前使用验证码,但这对用户来说很烦人。
如果它不是关于访问页面并且与表单提交有关,那么验证码是一个很好的选择,或者你可以做一个蜜罐,你放入一个被css隐藏的表单字段,机器人将填写字段,但人类不会(因为它是隐藏的),你可以检测到。
答案 1 :(得分:0)
除了将您的网页置于某种身份验证方法之外,答案是否定的。
显然,身份验证也适用于人类。
答案 2 :(得分:0)
我认为使用验证码进行身份验证是更简单的方法,也是最常用的方法。其他选择是向用户提出简单的问题(仅限于人类,而不是机器人)。然而,所有这些方法都令人类用户烦恼。