I'm still new with node js. Is there any workaround or methods on how to identify the request from client-side is from mobile or non-mobile devices using node js? Because what i'm doing now is i want to restrict the access on certain API based on the device type (mobile / desktop). I'm using restify for the server-side. Thanks.
Asked
Active
Viewed 2.2k times
7
-
You could use an `npm` package to grab detailed information for each device that visits your website - https://www.npmjs.com/package/bowser – goto May 12 '20 at 17:33
-
Check this link https://stackoverflow.com/a/22286027/8159775, it should help! – Alex K - JESUS first Feb 26 '21 at 12:06
2 Answers
7
@H.Mustafa, a basic way to detect if a client is using a mobile device is by matching a particular set of strings in the userAgent
.
function detectMob() {
const toMatch = [
/Android/i,
/webOS/i,
/iPhone/i,
/iPad/i,
/iPod/i,
/BlackBerry/i,
/Windows Phone/i
];
return toMatch.some((toMatchItem) => {
return navigator.userAgent.match(toMatchItem);
});
}
(Reference: Detecting a mobile browser)
Run this snippet of code in client's device. If the returned result is true
, you know it's a mobile device else a desktop/laptop. Hope this helps.

Melvin Abraham
- 2,870
- 5
- 19
- 33
7
The method I'd suggest is to use the npm package express-useragent
since is more reliable over the long term.
var http = require('http')
, useragent = require('express-useragent');
var srv = http.createServer(function (req, res) {
var source = req.headers['user-agent']
var ua = useragent.parse(source);
// a Boolean that tells you if the request
// is from a mobile device
var isMobile = ua.isMobile
// do something more
});
srv.listen(3000);
It also works with expressJS:
var express = require('express');
var app = express();
var useragent = require('express-useragent');
app.use(useragent.express());
app.get('/', function(req, res){
res.send(req.useragent.isMobile);
});
app.listen(3000);

João Pimentel Ferreira
- 14,289
- 10
- 80
- 109
-
If using Typescript, make sure to import `@types/express-useragent` in your package so that `Request` type is correctly extended – Gibolt Jul 14 '21 at 23:27
-
2It seems that `ua-parser-js` is the standard library for parsing user-agent strings now. `express-useragent` hasn't been updated in 3 years at this point. https://www.npmjs.com/package/ua-parser-js – SamB Apr 07 '23 at 20:34