我正在研究网络分析。我正在使用 JavaScript 客户端和 NodeJS 服务器端。我知道我们可以使用找出设备类型userAgent
,但是如何检测设备品牌(客户端或服务器端)?
6 回答
一个为您解析这个的库是Platform.js,您可以在客户端或服务器端使用它,如上面链接的介绍页面中所述。
这是一个客户端示例:
<script type='text/javascript' src='platform.js'></script>
<script type='text/javascript'>
alert('you are using ' + platform.description + ' on an ' + (platform.manufacturer || 'unknown vendor') )
</script>
请注意,您不会在通用浏览器上获得制造商,但应该在移动设备上获得品牌,例如 Apple、Samsung 等。
你不能直接这样做;userAgent 字段根本不包含供应商。但是,您可以建立一个映射到特定供应商的 userAgent 令牌库。不过,这将涉及对各种设备进行大量研究和测试。
例如,任何在 userAgent 中带有“iOS”、“iPhone”或“iPad”的东西,您都可以安全地映射到“Apple”。然后以三星 Galaxy S3 为例,在 userAgent 中有型号,即“GT-I9300”。然后,您可以将其映射到“三星”。...然后您需要为要识别的所有其他设备重复此操作。在线查找用户代理字符串可能是最快的方法。
在服务器端,您可以使用设备 npm 模块非常轻松地完成此操作,如果您使用的是 Express.js,那么它就像蛋糕一样简单。
安装模块。
npm i --S express-device
将 express 代码添加为中间件。
var express = require('express');
var app = express();
var device = require('express-device');
app.use(device.capture());
app.get('/hello',function(req,res) {
res.send("Hi to "+req.device.type.toUpperCase()+" User");
});
app.listen(3000);
console.log("Listening to Port 3000");
简单又甜美。
参考:https ://codeforgeek.com/2016/07/how-to-detect-device-type-in-nodejs/
通过 userAgent 字符串进行的检测可能会导致您的检测出错。您可以将浏览器字符串更改为您想要的任何内容。在大多数情况下,它不会告诉您它是哪个设备。
您可能从客户端获得的每个数据都可能被欺骗,因此不要期望每个用户只传输 100% 正确的数据。
但是您可以通过req.headers['user-agent']
nodeJS 获取客户端用户代理,这里是许多移动浏览器的列表。
就我而言,ua-parser-js 是最好的免费解决方案。缩小版在https://github.com/faisalman/ua-parser-js/tree/master/dist
你需要做的就像
<script src="ua-parser.min.js" charset="utf-8"></script>
<script type="text/javascript">
var parser = new UAParser();
var result = parser.getResult();
alert(result.device.vendor);
</script>
在此之前我已经尝试过 platform.js 和 mobile-detect.js,但是它们的检测范围对于我的应用程序来说太窄了。