首页 > 解决方案 > 防止机器人夸大我的读取/命中计数?

问题描述

我认为我遇到了机器人和爬虫夸大我的阅读次数的问题(基本上是博客文章上的点击计数器,每次刷新都会增加 +1)。

有什么办法可以过滤掉机器人和爬虫?我想也许可以$_SERVER['HTTP_USER_AGENT']用来过滤,但我不知道该怎么做,或者它是否会起作用

或者即使有人有更好的想法......

标签: php

解决方案


您可以使用这个技巧来检查浏览器是否真的启用了 cookie 和 javascript,大多数机器人没有,但大多数机器人确实伪造了一个有效的用户代理。

 $browser = get_browser(null, true);
 if($browser['javascript'] !== 1 || $browser['cookies'] !== 1){
      //probably a bot
 }

另一种也可能失败的方法是检查会话是否已启动。许多机器人,因为它们不接受 cookie 或启用了 cookie,因此不会启动会话(由于标头中缺少 cookie 数据)。

 if(!$_SESSION){//bot probable}

甚至检查您在会话开始时设置的会话变量

 if(!isset($_SESSION['your_var'])){ //bot probable}

推荐阅读