当前位置:  开发笔记 > 编程语言 > 正文

如何用php识别机器人?

如何解决《如何用php识别机器人?》经验,为你挑选了3个好方法。

我正在为我的用户构建统计信息,并且不希望机器人的访问被计算在内.

现在我有一个基本的php,每次调用页面时mysql增加1.

但机器人也被添加到计数中.

有没有人能想到办法?

主要是那些搞乱的主要因素.谷歌,雅虎,Msn等



1> Rob..:

您可以检查用户代理字符串,空字符串或包含"机器人","蜘蛛","爬虫","卷曲"的字符串可能是机器人.

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


很有用.如果用**bot**替换**机器人**以匹配最活跃的机器人之一,那就更有用了:`Mozilla/5.0(兼容; Googlebot/2.1; + http://www.google.com/bot. HTML)`
我在http://www.useragentstring.com/pages/Browserlist/上搜索了"bot"并没有点击..所以我猜匹配"bot"不应该抛出误报.

2> ine..:

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

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



3> ConroyP..:

我们有一个类似的用例,我们最近发现一个非常有用的选项是来自user-agent-string.info的UASParser类.

它是一个PHP类,它提取最新的用户代理字符串定义集并在本地缓存它们.可以将类配置为根据您的需要经常或很少地提取定义.像这样自动获取它们意味着您不必继续对bot用户代理或市场上出现的新代理进行各种更改,尽管您依靠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为所提供的用户代理字符串提供准确和最新的信息

像google和yahoo这样的机器人在他们的用户代理字符串中声明自己,但是这种方法仍会计算假装成人类访问者的机器人访问(发送欺骗性UA)

正如上面提到的@amdfan一样,通过robots.txt阻止僵尸程序应该阻止他们中的大多数人到达你的页面.如果您需要索引内容但不增加统计数据,那么robots.txt方法将不是一个现实的选择

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有