Node Js — определите, поступает ли запрос с мобильного или немобильного устройства.

Я все еще новичок в узле js. Есть ли какой-либо обходной путь или методы определения запроса со стороны клиента с мобильных или немобильных устройств с использованием узла js? Потому что сейчас я хочу ограничить доступ к определенному API в зависимости от типа устройства (мобильное/настольное). Я использую restify для серверной части. Спасибо.


person H.Mustafa    schedule 12.05.2020    source источник
comment
Вы можете использовать пакет npm для получения подробной информации о каждом устройстве, посещающем ваш веб-сайт, — npmjs.com/package/ баузер   -  person goto1    schedule 12.05.2020
comment
Проверьте эту ссылку stackoverflow.com/a/22286027/8159775, это должно помочь!   -  person Alex Karpov    schedule 26.02.2021


Ответы (2)


@H.Mustafa, основной способ определить, использует ли клиент мобильное устройство, — это сопоставить определенный набор строк в файле 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);
    });
}

(Ссылка: Обнаружение мобильного браузера)

Запустите этот фрагмент кода на клиентском устройстве. Если возвращенный результат равен true, вы знаете, что это мобильное устройство, иначе настольный компьютер/ноутбук. Надеюсь это поможет.

person Melvin Abraham    schedule 12.05.2020

Я бы предложил использовать пакет npm express-useragent, поскольку он более надежен, чем долгосрочная перспектива.

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);

Он также работает с 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);
person João Pimentel Ferreira    schedule 15.08.2020
comment
Если вы используете Typescript, обязательно импортируйте @types/express-useragent в свой пакет, чтобы тип Request был правильно расширен. - person Gibolt; 15.07.2021