如何设置 Google Analytics 可以读取的自定义用户代理

How to set custom user-agent that Google Analytics can read

我想为嵌入我网站的 webview 应用程序设置自定义用户代理。我可以像这样设置自定义代理 ("My App Android")。 问题是 Google Analytics 将此代理的流量读取为桌面,而不是像常规网络视图那样移动。 设置自定义用户代理的最佳方法是什么,同时仍然保留移动数据和设备 OS,以便像 Google Analytics 这样的工具仍然可以读取它。

您可以操纵用户代理,但无法控制 Google 将如何解释结果 device/OS:

  • 处理是在服务器端完成的 (Google) 所以没有办法直接修改那个数据(即使 sending data via the measurement protocol).

  • Google 未公开处理细节,因此在报告之前您不会知道实验的结果通过 Google Analytics(由于 24-48 hour data processing latency 可能会使此类实验变得乏味)。

  • 试图操纵它可能 "break" 您的分析:Google 对此含糊不清,they just say: "Google has libraries to identify real user agents. Hand crafting your own agent could break at any time". 2 consequences I can think of: Google simply drops the traffic if it can't parse the User Agent OR marks it as bot/spider traffic (which will also be dropped if you have enabled the bot filtering option)。

虽然文档中没有提到,我也怀疑Google依赖于其他数据点,可能是:

我找不到关于该主题的更多详细信息,我认为您不会从 Google 中找到更多详细信息,解释他们使用什么来计算 browser/device,因为他们不想要人们弄乱它(打个比方:你不会找到关于哪些数据点用于 SEO 的详细信息,因为他们不希望人们弄乱它)。我列出的 4 个维度(用户代理、屏幕分辨率、Java 支持、Flash 版本),据我所知是所有 GA 收集中唯一特定于设备的 4 个(其他源自它们): https://developers.google.com/analytics/devguides/reporting/core/dimsmets#view=detail&group=platform_or_device

MAX 的回答 是的,在保持所有属性(如 OS 和渲染引擎等)的同时操纵用户代理非常困难。 .

与此同时,我仍然希望使用自定义用户代理来定位我的应用用户,并能够将流量与此 webview 应用分开。

我做的是这样的:

1- 设置自定义用户代理

我没有用自定义用户代理替换整个用户代理,而是将其附加到用户代理 [AppID/AppVersion],从这个博客中找到了很好的信息: Webviews and User-Agent strings.

现在用户代理看起来像这样:

Mozilla/5.0 (Linux; Android 9; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/68.0.3440.91 Mobile Safari/537.36 [Custom App/1.0.1]

检查:

2- 在 Google Analytics

中设置自定义维度

由于 Google Analytics 会将来自此代理的所有浏览器价值访问标记为 Android Webview,我去分配一个自定义维度以便能够识别 自定义用户代理 会话并为其创建单独视图

在后端 PHP 我根据用户代理设置维度的值。

<script>
<?php
  if(strpos($_SERVER['HTTP_USER_AGENT'], 'Custom user agent here')!==false)
  {
     $customAgent_value = 'your agent';
  }
?>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-', {
  'custom_map': {'dimension1': 'custom_agent'}
  });
gtag('event', 'custom_agent_event', {'custom_agent': '<?= $customAgent_value;?>'}); 
</script>   

现在这对我来说工作正常。我可以从特定的 webview 应用程序定位用户,同时能够在 Analytics 中分离来自不同 webviews 的流量。