【发布时间】:2010-08-25 05:36:33
【问题描述】:
我想使用 PHP 区分真人和机器人。我目前跟踪页面浏览量,并且由于机器人抓取我的页面,它们被大量膨胀,所以我只想记录真实的人。如果它不是 100% 准确也没关系,我只想要一个简单的方法通过 PHP 来完成。
需要明确的是,这不是为了分析本身;这样我就可以跟踪每天提供哪些图像,这样我就可以生成“当天的热门图像”之类的脚本。
【问题讨论】:
我想使用 PHP 区分真人和机器人。我目前跟踪页面浏览量,并且由于机器人抓取我的页面,它们被大量膨胀,所以我只想记录真实的人。如果它不是 100% 准确也没关系,我只想要一个简单的方法通过 PHP 来完成。
需要明确的是,这不是为了分析本身;这样我就可以跟踪每天提供哪些图像,这样我就可以生成“当天的热门图像”之类的脚本。
【问题讨论】:
您应该检查用户代理字符串,大多数表现良好的搜索机器人都会这样报告自己。
【讨论】:
首先,显而易见:检查用户代理。
我使用了另一个效果很好的技巧。我将 robots.txt 映射到 PHP 文件并将 IP 记录到数据库中。然后在记录用户活动时,我确保他们不是来自这些记录的 IP 之一。如果用户通过登录系统进行身份验证,那么我无论如何都会跟踪他们。
当然,这两种解决方案都不能保证任何准确性,但对于一般的日志记录,这对我的目的来说已经足够了。
【讨论】:
我不确定 PHP 是否是此类问题的最佳解决方案。
您可以阅读 How to block bad bots 和 How to block spambots, ban spybots, and tell unwanted robots to go to hell 以了解更多关于阻止机器人的解决方案,但这次使用的是 apache。
与 php 程序相比,Apache 执行此类任务所需的 CPU 速度更快。
【讨论】: