zazama/analytics

此包已废弃,不再维护。作者建议使用wakeworks/analytics包。

集成了Silverstripe的以隐私为重点的分析模块

安装: 53

依赖项: 0

建议者: 0

安全性: 0

星标: 3

关注者: 3

分支: 0

开放性问题: 4

类型:silverstripe-vendormodule

1.0.0-beta6 2022-07-29 11:23 UTC

This package is auto-updated.

Last update: 2023-02-15 22:45:10 UTC


README

当前处于测试版


Packagist Version GitHub Scrutinizer code quality (GitHub/Bitbucket)

介绍

此模块可以在Silverstripe中启用基本分析,而不保存识别数据。

Screenshot

要求

  • silverstripe/framework ^4.0
  • silverstripe/admin ^1.0

此模块仅在 >= 4.9 的版本上进行了测试。

安装

composer require wakeworks/analytics

/dev/build 后,模块将开始记录请求。您可以在 /admin/analytics 中找到数据概述。

注意:如果您不希望数据库无限增长,请阅读 "垃圾回收"。

它是如何工作的?

  • 在每次请求中,用户都会将其 User-Agent 字符串发送到服务器。使用中间件和 matomo/device-detector,我们可以解析它并检查它使用的是哪种浏览器/设备或是否为机器人。
  • 这些信息将与其他收集到的分析数据一起存储在数据库中。
  • 在用户的首次访问中,我们在会话中写入一条注释,以便能够将其标记为唯一。
  • 为了尽可能多地过滤掉机器人,我们不保存任何具有未知 User-Agent 的请求。为了优化机器人检测,请使用图像验证
    此外,一些路由会自动跳过,例如 UserDefinedFormController/ping、/admin/* 或 /dev/*,请参阅 "何时不存储信息?"。

通过使用图像验证来提高机器人检测

虽然删除未知 User-Agent 已经移除了一部分机器人,但仍有许多爬虫只是调用您的网站而不加载其内容。

为了从统计中移除它们,您可以通过以下配置激活它,以插入图像跟踪代码。

WakeWorks\Analytics\Middlewares\AnalyticsProcessorMiddleware:
  image_verification: true

此方法通过在每次有效的跟踪请求之前在 </body> 前插入一个隐藏的 <img> 标签来实现。如果用户加载了图像,则请求将在数据库中创建一个条目,否则不会。

垃圾回收

经过一段时间,您的数据库将充满许多您可能不再关心的请求(例如非常旧的请求)。

使用任务 /dev/tasks/AnalyticsGarbageCollectionTask 来删除它们。

您应该通过 cron 作业或,如果不可能,通过通过中间件激活垃圾回收来每 x 次请求自动执行此操作。

WakeWorks\Analytics\Middlewares\AnalyticsProcessorMiddleware:
  # Run AnalyticsGarbageCollectionTask with probability of 1/100
  # => ~ every 100 requests. (Default: 0, off)
  gc_divisor: 100
  # Delete requests older than (default) 365 days.
  preserve_for_days: 365

仅当收集的请求数量合理时才这样做,否则删除查询可能对访客来说会非常耗时。

子站点的扩展

如果您已安装silverstripe/subsites并希望通过子站点进行跟踪,您只需启用SubsiteExtension,一切即可自动正常运行。

WakeWorks\Analytics\Models\AnalyticsLog:
  extensions:
    - WakeWorks\Analytics\Extensions\SubsitesExtension

存储哪些信息?

  • 当前日期
  • 请求的URL
  • 操作系统及版本
  • 浏览器及版本
  • 设备类型(桌面、智能手机等)
  • 唯一访问
  • 如果可能,SiteTreeID(页面ID)

在哪些情况下不存储信息?

  • 无法识别的/机器人用户代理
  • 由于机器人垃圾邮件等原因,状态码不在200-204之间的情况
  • 管理员后台URL
  • 安全URL/控制器
  • 开发管理员控制器(/dev URL)
  • 用户自定义表单控制器/ping