Wakeworks/Analytics

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

安装: 185

依赖项: 0

建议者: 0

安全性: 0

星标: 5

关注者: 4

分支: 0

开放性问题: 4

类型:silverstripe-vendormodule

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

This package is auto-updated.

Last update: 2024-09-16 02:20:04 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

此方法通过在每次有效的跟踪请求之前插入一个隐藏的 <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)

何时不存储信息?

  • 无法识别/机器人 User-Agent
  • 由于机器人垃圾邮件等原因,状态码不在 200-204 范围内的状态码
  • 管理员后端 URL
  • 安全URLs / 控制器
  • 开发管理控制器 (/dev URLs)
  • 用户自定义表单控制器/ping