如何从 GET 请求中收集 Google Analytics 的客户端 ID 服务器端?

Ant*_*ger 4 javascript google-analytics request

我需要跟踪某人何时从我的服务器下载文件,因此我创建了一个将文件名作为参数的端点。

此端点仅发送 GA 事件并将文件返回给用户。

但是,由于我是服务器端,我无法轻松获取客户端 ID 将其发送回 Google Analytics。经过一些研究,此 CID 在_gacookie 中可用,但 Google 建议不要指望它,因为 cookie 将来可能会发生变化:

https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id#getting_the_client_id_from_the_cookie)。

那么,我如何收集客户端 ID 服务器端以将其与我的事件一起发回?

小智 5

_ga cookie 由 analytics.js 库生成和使用,它是 Google Analytics 识别您网站上用户的方式。生成此值以存储在 cookie 中,因此据我所知,您无法通过 API 调用生成它。即使您已经完成研究,也请允许我为您提供一些有关 _ga 值的信息。您所看到的 cookie 值类似于 GA1.2.XXXXXXXXX.XXXXXXXXXX

您必须提取以获取将与服务器端请求一起发送的 CID 值的部分是该值的最后两个部分,由点 (.) 分隔,意思是:

GA1.2. XXXXXXXXX.XXXXXXXXXX <-- 粗体部分,包括中间的点

此外,正如您所提到的,Google 报告说您不应依赖 cookie 的“名称”。这意味着像 getCookie('_ga') 这样的函数将来不能保证工作。但是,如果您继续阅读分析跟踪器对象提供的函数回调,它将为您提供此值保证。

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});
Run Code Online (Sandbox Code Playgroud)

我要处理的方法是使用此回调,获取 CID,在我的请求的有效负载中将其加密发送(例如作为额外参数),在服务器上对其进行解码,然后发送测量协议请求。

  • 谢谢你非常完整的回答。我想过将 cid 作为 GET 参数发送,但想了想:如果用户与其他人共享链接怎么办?我的统计数据将被破坏,因为我将为同一用户注册 2 次点击... (2认同)