如何设置 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 的流量。
我想为嵌入我网站的 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 的流量。