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

4
我需要跟踪某人从我的服务器下载文件的时间,因此我创建了一个端点,以文件名作为参数。
这个端点只是发送一个GA事件并将文件返回给用户。
但是,由于我是在服务器端,所以无法轻松获取客户端ID并将其发送回Google Analytics。经过一些研究,发现CID可用于_ga cookie中,但Google建议不要依赖它,因为cookie可能会在未来更改:
https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id#getting_the_client_id_from_the_cookie)。
那么,我如何收集客户端ID服务器端并将其与我的事件一起发送回去?
1个回答

6
_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');
});

我会这样处理:使用这个回调函数,获取CID,将其加密发送到我的请求负载中(例如作为额外的参数),在服务器端解码后再发送测量协议请求。

2
非常感谢您的详细回答。我考虑将cid作为GET参数发送,但是想到了这个问题:如果用户与其他人分享链接呢?我的统计数据将会被破坏,因为我将为同一用户注册2次点击... - Anthony Granger
1
这种情况实际上在这里有描述 link。首先,您可以使用特定的元数据(如用户代理等)来辨别在这种情况下的用户。其次,您可以将自己应用程序的“会话”ID作为自定义客户端ID发送到GA。通过这种方式,如果另一个用户点击了链接,只要您的应用程序加载,您就会知道。最后,您可以在链接页面等待ga库加载,然后开始下载。 - Igneel64

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接