Php 从用户代理检测bot的最佳方法?

Php 从用户代理检测bot的最佳方法?,php,search,Php,Search,时间流逝,但仍然没有完美的解决方案。。。 看看是否有人有一个聪明的想法来区分机器人和人工加载的网页? 最先进的技术仍在加载一长串著名的SE机器人和解析用户代理 测试必须在页面加载之前完成!没有GIF或CAPTCHA 用户代理由客户端设置,因此可以进行操作。因此,恶意机器人肯定不会向您发送I-Am-MalBot用户代理,而是将自己称为IE的某个版本。因此,使用用户代理来防止垃圾邮件或类似事件是毫无意义的 那么,你想做什么?你的最终目标是什么?如果我们知道这一点,我们可以提供更好的帮助。没有挑战(如

时间流逝,但仍然没有完美的解决方案。。。 看看是否有人有一个聪明的想法来区分机器人和人工加载的网页? 最先进的技术仍在加载一长串著名的SE机器人和解析用户代理


测试必须在页面加载之前完成!没有GIF或CAPTCHA

用户代理由客户端设置,因此可以进行操作。因此,恶意机器人肯定不会向您发送
I-Am-MalBot
用户代理,而是将自己称为IE的某个版本。因此,使用用户代理来防止垃圾邮件或类似事件是毫无意义的


那么,你想做什么?你的最终目标是什么?如果我们知道这一点,我们可以提供更好的帮助。

没有挑战(如验证码),你只是在黑暗中射击。用户代理可以简单地设置为任意字符串。

如果可能,我会尝试使用这种方法。它对大多数用户来说是不可见的,并且会阻止许多机器人,尽管没有一个机器人决心工作,因为他们可以为你的站点实现特殊代码,一旦他们发现你的游戏,他们就跳过了蜜罐领域。但这将需要更多的关注,由业主的机器人比可能是值得的,为大多数。将有数以吨计的其他网站接受垃圾邮件没有任何额外的努力,他们的一部分


经常被跳过的一件事是,让机器人认为一切正常、没有错误消息或拒绝页面非常重要,只需像对待任何其他用户一样重新加载页面,除了跳过将机器人内容添加到站点之外。这样,机器人程序日志中就不会出现任何危险信号,而所有者也会对此采取行动,因此需要更多的仔细检查才能发现您不允许这些评论。

SO的创建者应该知道他们为什么使用Captcha来阻止机器人程序编辑内容。原因是实际上无法确定客户机不是bot。我想永远不会有

我自己正在为不同的目的编写网络爬虫。我使用一个web浏览器用户代理

据我所知,如果机器人使用合法的用户代理,你就无法区分机器人和人类。比如:

Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Chrome/9.0.570.1 Safari/534.11

我唯一能想到的就是JavaScript。大多数自定义web机器人(如我编写的那些)无法执行javascript代码,因为这是一个浏览器作业。但是,如果机器人被链接或使用网络浏览器(如firefox),那么它将不会被检测到。

其他人所说的在某种程度上是正确的。。。如果一个机器人制造商想让你认为一个机器人是一个真正的用户,那是无法避免的。但许多流行的搜索引擎都能识别自己的身份。这里有一个清单(http://www.jafsoft.com/searchengines/webbots.html)在其他地方。您可以将它们加载到数据库中并在那里搜索它们。我似乎还记得,为他们的机器人制作自定义页面是违反谷歌用户协议的。

我肯定我会对此表示强烈反对,但我不得不发布:

在任何情况下,除了批准所有用户提交的内容外,验证码是目前防止机器人攻击的最佳方式

--编辑--


我刚注意到你的p.S.,我不确定在没有与机器人交互的情况下是否能诊断出机器人。在这种情况下,您最好尽早捕获BOT并实施1个月的IP限制,在此之后,如果您不断地将HTTP 404返回给BOT,则BOT应该放弃。Bot通常从服务器上运行,不会更改其IP,因此这应该是一种普通的方法。

我建议使用防止垃圾邮件插件,而不是任何类型的验证码或CSS技巧,因为它在捕获垃圾邮件方面非常出色,而不会破坏用户体验。

诚实的Bot,如搜索引擎,通常会访问robots.txt。从中,您可以了解他们的useragent字符串,并将其添加到您的bot列表中


显然,这对伪装成人类的恶意机器人没有帮助,但对于某些应用程序来说,如果您只想从日志中过滤搜索引擎机器人(例如),这就足够了。

可能与Pekka重复,是的,这非常相似!但是那里没有公认的解决方案。。。谁知道这次也许有人能启发我们呢?:-)这里的答案是假设机器人可能试图欺骗用户代理。如果机器人愿意声明它是机器人呢?看起来robots.txt规范正在标准化,RPA变得越来越普遍,所以我认为这很快就会成为一个问题。定制的web机器人当然可以执行javascript,即使它们不是在图形环境中运行browser@Gareth我同意,编辑了我的答案。实际上,我指的是不需要javascript的简单scraper。我想大多数人都不会。蜜罐是对付自动“随意”网络蜘蛛的一个很好的方法,但它们当然不能帮助任何类型的有针对性的机器人活动。是的,我不认为这是对抗恶意机器人的斗争结束的地方,但这是一个很好的第一步,它可能会让你的网站在相当长的一段时间内免受垃圾邮件的影响,在你真正受欢迎,机器人开始专门针对你之前,你必须提高你的游戏水平。我需要收集用户统计数据,过滤掉非人类用户代理,希望自己做这件事,请不要使用谷歌分析等工具!虽然这篇文章本身是一篇有用的文章,但它不符合回答的条件;在我看来,作为评论更合适。@Core:不,这不是评论。我的回答是,他不能用这种方式解决问题。至少没有理由否决投票。他要求的是最好的方式,而不是是否可以/应该按照他想象的方式。因此,你的回答并没有增加什么内容。首先,请告诉我你是否投了反对票,这样我就知道参加这个完全脱离主题的讨论是否有意义。PS:他确实问你是否应该使用用户代理来识别一个机器人(至少)