用户代理在Express中使用Regex进行嗅探有50%的失败率?

时间:2017-04-28 17:34:46

标签: javascript node.js regex express

我在快递路由器中定义了一个正则表达式,以确定UA是否可移动,并且取决于是否移动,呈现不同的页面。

在我们的生产现场进行测试后,它的失败率为25% - 50%。

我想了解根本原因并解决问题。

谢谢。

Index.js

  const moment = require('moment');
        var _ = require('lodash');
        var mobileRegex = new RegExp(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i, 'ig');

    ......
    .....
    .....

    router.get('/', function(req, res, next) {

      if (mobileRegex.test(req.headers['user-agent']) == true) {
          console.log('User-Agent: ' + req.headers['user-agent']);
        res.render('index-mobile')
      } else {
        res.render('index');
      }
    });

    router.get('/([\*])', function(req,res, next) { //Escaping * because cloudflare page rules aren't built right
      res.redirect('/')
    });

etc...

1 个答案:

答案 0 :(得分:0)

我认为“失败”是指您的移动设备未被检测到?

浏览器嗅探并不是特别可靠。您可以尝试使用WhichBrowser之类的内容,但您必须保持最新状态。 Mozilla自己recommend只是测试“Mobi”的用户代理字符串,所以你可能会看到更小的失败率。