如何在使用Measurement协议向GA发送数据时获取客户端id

How to get the client id while sending data to GA using Measurement protocol?

本文关键字:数据 获取 id 客户端 GA 协议 Measurement      更新时间:2023-09-26

我尝试过通过前端(js)和后端(测量协议)使用Analytics .js (Universal Analytics)。

当通过前端使用时(js方式):
我检查有一个名为_ga的cookie,其值为GA1.2.1360127879.1438853622。它通过请求'http://www.google-analytics.com/collect?…'向带有cid=1360127879.1438853622的GA发送数据。我知道1360127879是唯一的id, 1438853622是时间戳。

当通过后端(测量协议)使用时:
我有几个问题:

1。如何从浏览器获得客户端id ?

一种方法是从后端读取_ga cookie并从中解析客户端id。但我读到不建议这样做。因为谷歌可以随时改变格式。我在某个地方看到过这样的用法:

 ga(function(tracker) {
 var clientId = tracker.get('clientId');
 });

但我不知道如何获得客户端id在后端使用这个?我想使用与前端使用的相同的客户端id。

2。客户端的实际id是什么?是单独的唯一id还是unique_id.timestamp的组合。我应该从后端发送给GA什么?

如果你看一个使用推荐的Google Analytics JavaScript Snippet的网站,你会看到它发送的客户端ID看起来像这样:

324729700.1423421585

存储在_ga cookie中的值看起来像这样:

GA1.3.324729700.1423421585

注意最后两个部分是相同的,只有GA1.3部分不同。

您需要关心的唯一部分是发送到测量协议的客户端ID,因此,如果您可以从服务器访问_ga cookie,则应该剥离GAX.X.前缀并仅发送其余部分。

但是我读到不建议这样做。因为google可以随时更改格式。

这不是真的。这些cookie有两年的过期时间,所以它们可能不会被更改。想想看,如果谷歌真的改变了它们,数百万个网站的数据就会突然出错,所以他们没有很好的理由这样做。

当然,跟踪服务器端用户的最好方法是使用User ID特性,但是如果您的用户没有经过身份验证,那么使用现有的客户端ID是完全可以的。

更新:

回答你的第二个问题,时间戳是客户端ID的一部分,不要剥离它。时间戳用于使ID"更独特"。