正如 MAX 的回答,这是真的,在保留所有属性的同时操作用户代理非常困难,比如操作系统和渲染引擎等...
同时,我仍然希望使用自定义用户代理来定位我的应用用户,并能够从这个 webview 应用中分离流量。
我做的是这样的:
1- 设置自定义用户代理
我没有用自定义的用户代理替换整个用户代理,而是将其附加到用户代理 [AppID/AppVersion],从这个博客中找到了很好的信息:Webviews and User-Agent strings。 p>
现在用户代理看起来像这样:
Mozilla/5.0(Linux;Android 9;wv)
AppleWebKit/537.36 (KHTML, like Gecko) 版本/4.0 Chrome/68.0.3440.91
移动 Safari/537.36 [自定义应用程序/1.0.1]
查看:Correct way to format user-agent string in an Android WebView App?
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 中分离来自不同 webview 的流量。