Wakeworks / Analytics
集成到 Silverstripe 的以隐私为重点的分析模块
1.0.0-beta6
2022-07-29 11:23 UTC
Requires
Requires (Dev)
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: ^3
This package is auto-updated.
Last update: 2024-09-16 02:20:04 UTC
README
目前处于测试版
简介
此模块允许在 Silverstripe 中启用基本分析,而不保存任何标识数据。
要求
- 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