检测非人类访客


Detect non human visitors

我页面上的访问者可以选择将他们喜欢的设置保存为cookie(我知道有些人反对,但这不是讨论的重点)。

如果用户没有cookie,则会询问用户是否要设置设置,如果是,则会使用javascript重定向。

我能检测到非人类交通而不向他们提出"问题"吗?我注意到谷歌速度分析总是被重定向到我的设置页面,这在分析页面中给了我错误的数据。

那么,我可以通过php或javascript检测非人类trafic吗?

编辑:我更喜欢在php中检测它们,因为我计划尽可能多地淘汰javascript

使用蜜罐-机器人可能会填写的一个空的、不可见(但不隐藏)的字段。此外,你可以尝试捕捉点击事件,因为像谷歌这样的机器人不太可能模仿它抓取你的页面。不过,总的来说,你最好的选择是使用.htaccess文件(或robots.txt)来禁用对不需要的页面的爬网-看看这个:用htaccess 阻止特殊目录的所有bots/crawlers/spider

这很容易做到,尽管如此,根据您的具体需求,仍有许多选项。

这里有一个简单的解决方案:

  • 在每个页面上,将第一个链接设置为"不可见"(opacity:0),它指向某个触发javascript的地方,或者指向你想要机器人的某个地方;也把它放在屏幕外(顶部:-999px)

  • 在页面加载上设置timeout(如500ms),给机器人一些时间"点击"链接

  • 超时后,它应该是一个人类用户-如果"陷阱"没有触发

  • 可选地,你也可以检查鼠标的活动,但以上应该足够

这应该很好,因为"人类用户"不能点击链接,但机器人可以,因为它可以读取HTML。注意不要:"display:none",否则机器人可能会跳过这个。

我建议使用蜜罐来检测它们。

这里有一篇有趣的文章。