我正在通过记录 url、推荐代码、会话、时间等对页面浏览量进行非常基本的跟踪,但发现它正在被机器人(谷歌、雅虎等)轰炸。我想知道过滤掉或不记录这些统计信息的有效方法是什么?
我已经尝试过机器人 IP 列表等,但这并不是万无一失的。
是否有某种 robots.txt、htaccess、PHP 服务器端代码、javascript 或其他可以“欺骗”机器人或忽略非人类交互的方法?
我正在通过记录 url、推荐代码、会话、时间等对页面浏览量进行非常基本的跟踪,但发现它正在被机器人(谷歌、雅虎等)轰炸。我想知道过滤掉或不记录这些统计信息的有效方法是什么?
我已经尝试过机器人 IP 列表等,但这并不是万无一失的。
是否有某种 robots.txt、htaccess、PHP 服务器端代码、javascript 或其他可以“欺骗”机器人或忽略非人类交互的方法?
这取决于你要达到什么目标。如果您希望搜索机器人停止访问某些路径/页面,您可以将它们包含在 robots.txt 中。大多数表现良好的机器人将停止攻击它们。
如果您希望机器人为这些路径编制索引,但又不想在报告中看到它们,那么您需要实现一些过滤逻辑。例如,所有主要的机器人都有一个非常清晰的用户代理字符串(例如 Googlebot/2.1)。您可以使用这些字符串从您的报告中过滤掉这些匹配。
只是添加 - 您可以在界面中使用的一种技术是使用 Javascript 来封装导致某些用户交互视图/计数器增量的操作,对于一个非常基本的示例,机器人将(不能)遵循:
<a href="javascript:viewItem(4)">Chicken Farms</a>
function viewItem(id)
{
window.location.href = 'www.example.com/items?id=' + id + '&from=userclick';
}
为了使这些点击更易于跟踪,它们可能会产生一个请求,例如
www.example.com/items?id=4&from=userclick
这将帮助您可靠地跟踪某些东西被“点击”的次数,但它有明显的缺点,当然它实际上取决于您想要实现的目标。
好吧,机器人都将使用特定的用户代理,因此您可以忽略这些请求。
但是,如果您只是使用 robots.txt 并拒绝他们访问;好吧,那也行。
不要重新发现轮毂!
目前任何统计工具都会过滤机器人请求。即使您有共享主机,您也可以安装 AWSTATS(开源)。如果您不想在您的服务器中安装软件,您可以使用 Google Analytics(分析)在页面末尾添加一个脚本。两种解决方案都非常好。这样,您只需记录您的错误(500、404 和 403 就足够了)。