scoby / analytics
用于测量 scoby 中的网站流量的客户端
Requires
- mlocati/ip-lib: 1.18.0
- php-http/discovery: ^1.17
- psr/http-client: ^1.0
- psr/http-client-implementation: *
- psr/http-factory: ^1.0
- psr/http-factory-implementation: *
- psr/log: 1.1.4
- spatie/url: 1.3.5
Requires (Dev)
- guzzlehttp/guzzle: 7.5.0
- nyholm/psr7: 1.8.1
- phpunit/phpunit: ^9.5
- spatie/phpunit-snapshot-assertions: 4.2.16
README
scoby 是一款道德分析工具,它可以帮助你在不牺牲有意义指标的情况下保护访客的隐私。数据直接来自您的网站服务器,不使用 cookie,也不需要 GDPR、ePrivacy 和 Schrems II 的同意。
现在就在 https://app.scoby.io/ 开始免费试用
你知道吗?
Scoby 可免费用于非营利性开源项目。
现在就申请您的免费账户
安装
composer require scoby/analytics
要求
Scoby 分析客户端使用 php-http/discovery
包来自动查找和使用已安装的 PSR-18 兼容的 HTTP 客户端。此更改允许与各种 HTTP 客户端实现具有更高的灵活性和互操作性。
要使用 Scoby 分析,您需要在项目中安装一个 PSR-18 兼容的 HTTP 客户端。如果您没有特定的客户端,则如果可用,包将回退到使用 Guzzle。
重要:如果未找到 PSR-18 兼容的适配器,将记录错误,通常指出 未找到 PSR-18 客户端。请确保安装提供 "psr/http-client-implementation" 的包。例如:"php-http/guzzle7-adapter"。在这种情况下,您应手动安装一个 PSR-18 兼容的客户端。作为一个方便的回退,您可以通过以下命令安装 Guzzle:
composer require guzzlehttp/guzzle
先决条件
您需要两个值来实例化您的 scoby 分析客户端:您的 API 密钥和一个盐。盐用于在将流量发送到我们的服务器之前匿名化您的流量。您可以使用以下命令生成一个加密安全的盐:
openssl rand -base64 32
请在你的 工作区的设置 中找到您的 API 密钥 - 还没有工作区?现在免费创建一个 这里
用法
使用您的 API 密钥和盐实例化您的 scoby 分析客户端。
use Scoby\Analytics\Client; $client = new Client('INSERT_YOUR_API_KEY_HERE', 'INSERT_YOUR_SALT_HERE');
之后,客户端支持同步和异步记录页面视图
// count page view synchronously ... $client->logPageView(); // ... count page view asynchronously $client->logPageViewAsync();
免责声明:PHP 脚本始终是阻塞的。`logPageViewAsync` 在脚本退出之前执行,在所有主要工作完成后。
客户端将自动扫描超级全局变量 $_SERVER
以获取所有它需要正常工作的数据。所有值都可以使用流畅设置器覆盖
使用 PSR-3 Logger 启用调试
为了便于调试并获得更多关于 Scoby 分析客户端操作的信息,您可以使用 $client->setLogger
方法。此方法接受一个 PSR-3 兼容的日志记录器实例,允许您集成您首选的日志解决方案。
PSR-3 是一个定义 PHP 中日志库公共接口的标准,确保兼容性和灵活性。通过使用 PSR-3 日志记录器,您可以轻松记录各种严重级别的消息,例如调试、信息、警告和错误。
要启用日志记录,只需将 PSR-3 兼容的日志记录器实例传递给 setLogger
方法。以下是一个使用流行的日志库 Monolog 的示例:
use Scoby\Analytics\Client; use Monolog\Logger; use Monolog\Handler\StreamHandler; // Create a logger instance $logger = new Logger('name'); $logger->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING)); // Instantiate your Scoby Analytics client $client = new Client('INSERT_YOUR_API_KEY_HERE', 'INSERT_YOUR_SALT_HERE'); // Set the logger $client->setLogger($logger); // Now you can use your client as usual
设置日志记录器后,您将收到有助于您调试问题或更好地了解客户端行为的日志消息。
IP 地址
// set IP address manually $client->setIpAddress('1.2.3.4');
用户代理
// set User Agent manually $client->setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0');
请求的 URL
// set requested URL manually $client->setRequestedUrl('https://example.com/some/path?and=some&query=parameters');
引用 URL
// set referrer manually $client->setReferringUrl('https://eyample.com/the/page/that?was=visited&before=yay');
访客细分
访客细分是提高您网站性能和用户参与度的强大工具。通过根据访客的共同特征或行为将您的受众划分为不同的细分市场,您可以更好地了解他们的需求,并针对他们的特定偏好定制您的网站内容、营销信息和用户体验。
要使用访客细分,您需要定义您希望根据其细分受众的特征或行为,例如年龄、性别、位置、兴趣或购买历史。一旦您定义了细分市场,您就可以根据从访客与您网站互动中收集的数据将它们分配给您的网站访客。请注意,细分市场应始终以复数形式使用,因为在Scoby Analytics仪表板上查看和分析访客细分数据时,这最有意义。此外,访客的所有未来互动都将与其互动时的细分市场相关联。
要使用Scoby Analytics库在您的PHP代码中记录访客细分,您可以使用addVisitorToSegment方法将访客分配到特定细分市场,并使用logPageView方法记录带有分配细分市场的页面查看事件。以下是一个示例
use Scoby\Analytics\Client; $client = new Client('INSERT_YOUR_API_KEY_HERE', 'INSERT_YOUR_SALT_HERE'); $client ->addVisitorToSegment('Subscribers') ->addVisitorToSegment('Women') ->addVisitorToSegment('Young Adults') ->logPageView();
在这个示例中,我们正在记录一个页面查看事件,并将访客细分市场订阅者、女性和青年分配给触发事件的访客。您可以根据自己的细分策略替换这些细分市场名称。
Scoby Analytics旨在保护隐私,并应用于访客细分市场的25个k-Anonymity。这意味着每个细分市场在包含在分析报告中之前,必须至少有25个独特的访客,以保护个别访客的匿名性。
访客ID
为了提高访客计数的准确性,您可以选择提供一个自定义标识符,例如帐户ID或类似值。在传输到我们的服务器之前,此标识符会被哈希处理,以防止共享可识别个人信息的值。尽管如此,咨询您的数据保护官员以确保使用此功能符合您组织的法律和隐私要求至关重要。
$client->setVisitorId('some-anonymous-identifier');
完整示例
use Scoby\Analytics\Client; $client = new Client('INSERT_YOUR_API_KEY_HERE', 'INSERT_YOUR_SALT_HERE'); $client ->setIpAddress('1.2.3.4') ->setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0') ->setVisitorId('some-anonymous-identifier') ->setRequestedUrl('https://example.com/some/path?and=some&query=parameters') ->setReferringUrl('https://eyample.com/the/page/that?was=visited&before=yay') ->logPageViewAsync();
IP黑名单
默认情况下,Scoby不会排除您的测量中的任何流量。然而,我们了解您可能需要过滤掉来自特定IP地址或范围的流量。blacklistIpRange方法允许您这样做,支持方便地使用通配符模式和CIDR子网表示法。您可以根据需要添加多个IP、模式和范围。
$client ->blacklistIpRange('12.34.*.*') ->blacklistIpRange('87.65.43.21/16') ->blacklistIpRange('1.2.3.4') ->blacklistIpRange('::1');
完整示例
use Scoby\Analytics\Client; $client = new Client('INSERT_YOUR_API_KEY_HERE', 'INSERT_YOUR_SALT_HERE'); $client ->blacklistIpRange('12.34.*.*') ->setIpAddress('12.34.56.78') // pattern '12.34.*.*' includes '12.34.56.78' ->logPageView(); // returns: false
测试
./vendor/bin/phpunit tests
支持
有什么难题吗?我们在这里帮助您,请发邮件至hello@scoby.io