【问题标题】:How can i get user info with node.js如何使用 node.js 获取用户信息
【发布时间】:2018-07-10 15:16:13
【问题描述】:

我正在使用 express.js

我应该了解用户的浏览器名称、浏览器语言、国家。我怎样才能学会这些?

我试过useragent,但我认为它只是给浏览器。

【问题讨论】:

    标签: node.js express browser socket.io userinfo


    【解决方案1】:

    您可以使用req.headers['accept-language'] 作为语言,但对于国家/地区,您必须参考用户 IP,这不是您可以从用户代理或标头获取的数据。

    【讨论】:

      【解决方案2】:

      您可以从请求标头中获取大量信息。用户国家会更难,你可能需要从请求的 IP 地址中查找。注意:这并不完全可靠,当然取决于获取原始请求,而不是任何代理服务器地址。您可以为此使用 geoip-lite 之类的库 (https://www.npmjs.com/package/geoip-lite)。

      我会这样做:

      var app = express();
      app.set('trust proxy', true);
      
      var geoip = require('geoip-lite');
      
      app.get('/test', function(req, res){
      
          console.log('Headers: ' + JSON.stringify(req.headers));
          console.log('IP: ' + JSON.stringify(req.ip));
      
          var geo = geoip.lookup(req.ip);
      
          console.log("Browser: " + req.headers["user-agent"]);
          console.log("Language: " + req.headers["accept-language"]);
          console.log("Country: " + (geo ? geo.country: "Unknown"));
          console.log("Region: " + (geo ? geo.region: "Unknown"));
      
          console.log(geo);
      
          res.status(200);
          res.header("Content-Type",'application/json');
          res.end(JSON.stringify({status: "OK"}));
      });
      

      请求头会包含一堆有用的东西,一个例子:

      Headers: 
      {
          "host": "testhost:3001",
          "user-agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0",
          "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
          "accept-language": "en-US,en;q=0.5",
          "accept-encoding": "gzip, deflate",
          "connection": "keep-alive",
          "upgrade-insecure-requests": "1"
      }
      

      地理对象的一个​​例子是:

      { 
        country: 'US',
        region: 'FL',
        city: 'Tallahassee',
        ll: [ 30.5252, -84.3321 ],
        metro: 530,
        zip: 32303 
      }
      

      【讨论】:

        猜你喜欢
        • 2012-05-07
        • 2018-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-05
        • 2022-01-10
        • 2021-10-12
        • 1970-01-01
        相关资源
        最近更新 更多