2013-05-03 89 views
6

我正在从事网络分析。我正在使用JavaScript客户端和NodeJS服务器端。我知道我们可以使用userAgent找到device type,但是如何检测设备品牌(客户端或服务器端)?检测设备品牌

+0

一种方法是使用一个实际的设备和访问这些“我的用户代理”的网站之一,并找出。据我所知,其中一个网站让我的设备型号正确。它应该回答你的问题*“是否有可能”*。 – Joseph 2013-05-03 10:07:07

回答

1

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

例如,userAgent中的任何“iOS”,“iPhone”或“iPad”都可以安全地映射到“Apple”。 然后,例如,Samsung Galaxy S3在userAgent中具有型号,即“GT-I9300”。然后,您可以将其映射到“三星”。 ...然后你需要重复这个你想识别的其他设备。在线查找用户代理字符串可能是最快捷的方式。

0

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

4

为您解析这个问题的一个库是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> 

请注意,您将得到通用的浏览器没有生产厂家,但应该得到该品牌在移动设备例如苹果,三星等。

+0

感谢宝贵的信息。我会测试并通知您。 – karthick 2013-05-15 05:41:38

0

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

但是,您可以通过nodeJS中的req.headers['user-agent']获得客户端代理,这里是a list of many mobile browsers

1

在服务器端,您可以使用设备npm模块非常轻松地完成此操作,并且如果您使用的是Express.js,那么它就像蛋糕一样简单。

安装模块。

npm i --S express-device 

在express code中添加中间件。

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/