检测设备品牌

问题描述 投票:0回答:6

我正在从事网络分析工作。我正在使用 JavaScript 客户端和 NodeJS 服务器端。我知道我们可以使用 userAgent 找出

设备类型
,但是如何检测设备品牌(客户端或服务器端)?

javascript node.js device
6个回答
8
投票

你不能直接这样做; userAgent 字段根本不包含供应商。但是,您可以构建一个映射到特定供应商的 userAgent 令牌库。不过,这将涉及在各种设备上进行大量研究和测试。

例如,用户代理中带有“iOS”、“iPhone”或“iPad”的任何内容都可以安全地映射到“Apple”。 那么以三星 Galaxy S3 为例,userAgent 中的型号为“GT-I9300”。然后您可以将其映射到“Samsung”。 ...然后您需要对您想要识别的每个其他设备重复此操作。在线查找用户代理字符串可能是最快的方法。


7
投票

为您解析此内容的一个库是 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>

请注意,您在通用浏览器上不会找到制造商,但应该在移动设备上获得品牌,例如苹果、三星等


1
投票

在服务器端,您可以使用设备 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/


0
投票

通过 userAgent 字符串进行检测可能会导致检测错误。您可以将浏览器字符串更改为您想要的任何内容。在大多数情况下,它不会告诉您它是什么设备。


0
投票

您可能从客户端获得的每个数据都可能被欺骗,因此不要期望每个用户仅传输 100% 正确的数据。

但是您可以通过nodeJS中的

req.headers['user-agent']
获取客户端用户代理,这里是许多移动浏览器的列表


0
投票

在大多数情况下,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();
console.log(result.device.vendor);

</script>

请注意,截至 2024 年,ua-parser-js 版本 2 已发布,并进行了某些更改。

请检查并验证 ua-parser-js 的最新文档,因为它经常更新。

© www.soinside.com 2019 - 2024. All rights reserved.