【问题标题】:PHP: Differentiate between a human user and a bot / otherPHP:区分人类用户和机器人/其他
【发布时间】:2010-08-25 05:36:33
【问题描述】:

我想使用 PHP 区分真人和机器人。我目前跟踪页面浏览量,并且由于机器人抓取我的页面,它们被大量膨胀,所以我只想记录真实的人。如果它不是 100% 准确也没关系,我只想要一个简单的方法通过 PHP 来完成。

需要明确的是,这不是为了分析本身;这样我就可以跟踪每天提供哪些图像,这样我就可以生成“当天的热门图像”之类的脚本。

【问题讨论】:

    标签: php tracking


    【解决方案1】:

    您应该检查用户代理字符串,大多数表现良好的搜索机器人都会这样报告自己。

    例如Google's spider

    【讨论】:

    • 有没有办法检查某人是不是人类(即网络浏览器)而不是打折机器人?
    • 顺便说一句,如果您正在寻找“最受欢迎的图片”并且您的网站正在被索引,您可以假设蜘蛛访问所有图片的次数相同,它应该不要影响受欢迎程度。
    • @Chris 不是真的,不。如果没有强制所有用户为每个页面回答验证码,就无法验证他们是不是人类——即使这样也不会 100% 有效。
    【解决方案2】:

    首先,显而易见:检查用户代理。

    我使用了另一个效果很好的技巧。我将 robots.txt 映射到 PHP 文件并将 IP 记录到数据库中。然后在记录用户活动时,我确保他们不是来自这些记录的 IP 之一。如果用户通过登录系统进行身份验证,那么我无论如何都会跟踪他们。

    当然,这两种解决方案都不能保证任何准确性,但对于一般的日志记录,这对我的目的来说已经足够了。

    【讨论】:

      【解决方案3】:

      我不确定 PHP 是否是此类问题的最佳解决方案。
      您可以阅读 How to block bad botsHow to block spambots, ban spybots, and tell unwanted robots to go to hell 以了解更多关于阻止机器人的解决方案,但这次使用的是 apache。

      与 php 程序相比,Apache 执行此类任务所需的 CPU 速度更快。

      【讨论】:

      • 屏蔽与区分非常不同,尤其是如果您确实希望自己的网站在 Google 上列出。
      猜你喜欢
      • 2018-08-21
      • 2013-12-08
      • 1970-01-01
      • 2020-12-27
      • 2021-11-10
      • 2019-08-14
      • 2021-03-24
      • 2021-11-10
      • 1970-01-01
      相关资源
      最近更新 更多