我有一个网站项目,可以计算某些页面的视图。 我将这些视图存储为IP地址和日期,所以我知道 当用户在该页面上多次点击时,它只计算一次。
问题是我也想要从计数中消除搜索机器人 作为真实用户,当他们访问我的网站时。
我通常通过将IP转换为真实来在其他网站上执行此操作 地址,并将字符串与'google'等进行比较
但转换成真实地址有时需要3-4秒 这让我的网站变慢了。
我该如何解决这个问题?
更新
我研究了更多,我想出了这个简单的解决方案(基于你的答案)
$global_bots = array("bot", "slurp", "spider", "crawl", "archiver", "facebook");
//上面的这个变量放在我的全局设置文件中,该文件包含在我的所有文件中
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$bot_count = 0;
do{
$pos = stripos($user_agent, $global_bots[$bot_count]);
$bot_count++;
}while($pos===false && ( $bot_count < count($global_bots) ) );
if($pos!==false){
//check if user already clicked today on this page, else record his ip
}else{
//don't record it, it's mostly a BOT
}
如果您对此有任何其他更新, 比如机器人中的字符串, 随时快速回答。
感谢。
答案 0 :(得分:2)
不是&#34;转换&#34; (在涉及数学的意义上):它是对外部数据库(DNS服务器)的查找。您应该使用与任何其他外部服务查找中相同的规则:
一旦你知道这一点,我的谦虚建议就是你不要这样做:
区分机器人的通常(非排他性)方法是:
您可以借用用户代理数据库(甚至是用户代理检测库)。
答案 1 :(得分:0)
表现良好的僵尸程序将首先请求/robots.txt路径,而人类通常不会请求它。因此,您可以通过查找首先请求此路径的用户代理来识别机器人。