php - 防止机器人夸大我的读取/命中计数?
问题描述
我认为我遇到了机器人和爬虫夸大我的阅读次数的问题(基本上是博客文章上的点击计数器,每次刷新都会增加 +1)。
有什么办法可以过滤掉机器人和爬虫?我想也许可以$_SERVER['HTTP_USER_AGENT']
用来过滤,但我不知道该怎么做,或者它是否会起作用
或者即使有人有更好的想法......
解决方案
您可以使用这个技巧来检查浏览器是否真的启用了 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}
推荐阅读
- laravel - 有没有办法(管理)在 laravel 中添加毫秒(到 now() )?
- azure-iot-hub - 从 Azure IoT Hub 升级固件
- django - 序列化程序是否有 get_model 等效项?
- sql - java.sql scala 中不支持 oracle 时间戳
- ocaml - 为什么 OCaml 使用异常而不是用 Sum Types 表示错误?
- entity-framework - Linq 实体框架返回值但不显示
- jenkins - Rundeck 的 HTTPS URL 在 Jenkins 中不起作用
- javascript - 全局过渡到“catch-all-do-cleanup-exit-nicely”状态
- python - 如何将 .txt 读入 Python 对象列表?
- javascript - 具有二维数组的状态