我建立统计数据对于我的用户并不希望访问的机器人,计算。

现在我有一个基本php with mysql增加1每次页面。

但机器人也被添加到该计数。

没有人可以想办法?

主要是只是主要的那些乱七八糟的事情了。谷歌、雅虎和Msn,等等。

有帮助吗?

解决方案

您应该按用户代理字符串进行过滤。您可以在此处找到由机器人提供的约300个常见用户代理的列表: http://www.robotstxt。 org / db.html 在运行SQL语句之前运行该列表并忽略bot用户代理应该可以解决所有实际问题。

如果您不希望搜索引擎甚至到达该页面,请使用基本的 robots.txt 文件阻止他们。

其他提示

您可以检查用户代理字符串,空字符串或包含'robot','spider','crawler','curl'的字符串可能是机器人。

  

preg_match('/ robot | spider | crawler | curl | ^ $ / i',$ _SERVER ['HTTP_USER_AGENT']));

我们有一个类似的使用情况以自己,一个选项我们最近发现的很有帮助,是的 UASParser类user-agent-string.info.

这是一个PHP类拉的最新设置的用户代理串的定义和缓存在本地。类可配置到拉的定义,因为往往或者作为少您认为合适的。自动获取它们喜欢这意味着你不必把顶上的各种改变机器人用户代理人或新到来的市场上,虽然你都是依靠UAS.info 要做到这一准确。

当这类被称,它分析了当前的游客户的代理,并返回联阵脱离的组成部分,例如

Array
(
    [typ] => browser
    [ua_family] => Firefox
    [ua_name] => Firefox 3.0.8
    [ua_url] => http://www.mozilla.org/products/firefox/
    [ua_company] => Mozilla Foundation
    ........
    [os_company] => Microsoft Corporation.
    [os_company_url] => http://www.microsoft.com/
    [os_icon] => windowsxp.png
)

该领域 typ 被设定为 browser 当UA被确定为可能属于一个人来访,在这种情况下,可以更新的统计数据。

几个告诫:

  • 你依靠UAS.info 对于用户代理串提供准确和最新的
  • 机器人,如谷歌、雅虎宣布自己在他们的户串代理,但这种方法仍将计访问的机器人假装是人的访客(发送欺骗性的无人驾驶航空器系统)
  • 作为 @amdfan 上所述,阻止通过机器人robots.txt 应该停止他们中的大多数达到你的网页。如果你需要的内容被编入索引的,但不增量统计,然后robots.txt 方法不会是一个现实的选择

在递增网页浏览量之前,请检查用户代理,但请记住,这可能是欺骗。 PHP在 $ _ SERVER ['HTTP_USER_AGENT'] 中公开用户代理,假设Web服务器为其提供此信息。有关 $ _ SERVER 的更多信息,请访问 http://www.php.net/manual/en/reserved.variables.server.php

您可以在 http://www.user-agents.org ;谷歌搜索还将提供属于主要提供商的名称。第三个可能的来源是您的Web服务器的访问日志,如果您可以聚合它们。

您是否尝试通过其用户代理信息识别它们?一个简单的谷歌搜索应该为您提供谷歌等使用的用户代理。

当然,这并非万无一失,但主要公司的大多数抓取工具都提供了独特的用户代理。

编辑:假设您不想限制机器人访问权限,但只是不计算其在您的统计信息中的访问权。

scroll top