node.js - 我如何使用node.js获取用户信息

标签 node.js express browser socket.io userinfo

我正在使用express.js

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

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

最佳答案

您可以从请求 header 中获取大量信息。用户所在国家/地区会更困难,您可能需要从请求的 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"}));
});

请求 header 将包含一堆有用的内容,例如:

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 
}

关于node.js - 我如何使用node.js获取用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48543405/

相关文章:

javascript - ESLint simple React App.js 括号后出现意外的换行符 function-paren-newline

node.js - NodeJS : Parsing csv and returning the list through a promise

javascript - 如何使用 https 在本地网络上构建 gatsby 开发服务?

javascript - Node.js/Express/Jade Javascript 未按正确顺序加载

Javascript 拼写检查方法

node.js - 仅对 GET 请求使用快速中间件

http - 使用 express.js 进行路由 - 无法获取错误

javascript - 只允许经过 passportjs 身份验证的用户访问 protected 页面

java - 当我单击浏览器上的停止按钮时会发生什么?

html - 浏览器调整背景图片大小时图片下方出现 1px 故障