如何使用 node.js 获取用户信息
How can i get user info with node.js
我正在使用express.js
我应该知道用户的浏览器名称、浏览器语言、国家。我怎样才能学会这些?
我试过 useragent 但我认为它只是给浏览器。
您可以使用 req.headers['accept-language']
作为语言,但对于国家/地区,您必须参考用户 IP,这不是您可以从 useragent 或 headers 获得的数据。
你可以从请求中得到一堆信息headers。用户国家会比较困难,您可能需要从请求的 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将包含一堆有用的东西,例如:
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"
}
地理 object 的示例是:
{
country: 'US',
region: 'FL',
city: 'Tallahassee',
ll: [ 30.5252, -84.3321 ],
metro: 530,
zip: 32303
}
我正在使用express.js
我应该知道用户的浏览器名称、浏览器语言、国家。我怎样才能学会这些?
我试过 useragent 但我认为它只是给浏览器。
您可以使用 req.headers['accept-language']
作为语言,但对于国家/地区,您必须参考用户 IP,这不是您可以从 useragent 或 headers 获得的数据。
你可以从请求中得到一堆信息headers。用户国家会比较困难,您可能需要从请求的 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将包含一堆有用的东西,例如:
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"
}
地理 object 的示例是:
{
country: 'US',
region: 'FL',
city: 'Tallahassee',
ll: [ 30.5252, -84.3321 ],
metro: 530,
zip: 32303
}