我正在为我的用户构建统计信息,并且不希望计算机器人的访问次数。如何使用php识别机器人?
现在我每次页面被调用时有一个基本的PHP与MySQL增加1。
但机器人也添加到计数。
有没有人可以想办法?
主要是只是主要的东西搞砸了。谷歌,雅虎,MSN等
我正在为我的用户构建统计信息,并且不希望计算机器人的访问次数。如何使用php识别机器人?
现在我每次页面被调用时有一个基本的PHP与MySQL增加1。
但机器人也添加到计数。
有没有人可以想办法?
主要是只是主要的东西搞砸了。谷歌,雅虎,MSN等
您应该按照用户代理字符串进行过滤。您可以在这里找到约300个常见用户代理的列表:http://www.robotstxt.org/db.html在运行SQL语句之前遍历该列表并忽略bot用户代理应该可以解决您的问题。
如果您不希望搜索引擎甚至到达页面,请使用基本的robots.txt文件来阻止它们。
您是否尝试过使用它们的用户代理信息识别他们?一个简单的谷歌搜索应该给你谷歌等使用的用户代理。
这当然不是万无一失的,但大多数公司的爬虫提供不同的用户代理。
编辑:假设你不想限制机器人访问,但只是不计算它在你的statistc访问。
在增加页面查看次数之前检查user agent,但请记住这可能是欺骗性的。 PHP公开用户代理$_SERVER['HTTP_USER_AGENT']
,假设Web服务器为其提供此信息。有关$_SERVER
的更多信息,请参阅http://www.php.net/manual/en/reserved.variables.server.php。
你可以找到http://www.user-agents.org用户代理的列表;谷歌搜索也将提供属于主要提供者的名称。第三个可能的来源是你的Web服务器的访问日志,如果你可以聚合它们。
您可以检查用户代理字符串,空字符串或包含'robot','spider','crawler','curl'的字符串可能是机器人。
preg_match('/robot|spider|crawler|curl|^$/i', $_SERVER['HTTP_USER_AGENT']));
我们还有一类似用途的情况下给自己,并选择一个我们最近发现非常有帮助的是user-agent-string.info的UASParser class。
这是一个PHP类拉最新的一组用户代理字符串的定义和本地缓存他们。该类可以配置为按照您认为合适的频率或罕见频率提取定义。像这样自动获取它们意味着您不必对bot用户代理或市场上的新用户进行各种更改,尽管您依赖UAS.info来准确执行此操作。
当这个类被调用时,它解析当前访问者的用户代理并返回一个关联数组来分解组成部分,例如,当UA被确定为有可能属于人类访客,在这种情况下,您可以更新您的统计
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
。需要注意的地方
夫妇在这里:
非常有用。如果用** bot **替换** robot **以匹配其中一个最活跃的机器人,则更为有用:“Mozilla/5.0(兼容; Googlebot/2.1; + http://www.google.com/bot。 html)` – 2013-12-30 02:06:39