如何在express JS中獲取客戶端正確的國家名稱或電話代碼?
uj5u.com熱心網友回復:
您可以嘗試通過 IP 獲取請求的國家/地區。看看 NPM 包geoip-lite。實際上,類似這樣的包還有很多。
下面是一個實作的例子
const express = require('express');
const app = express();
const { lookup } = require('geoip-lite');
const router = express.Router();
router.get('/someroute', (req,res) => {
const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
console.log(ip); // ip address of the user
console.log(lookup(ip)); // location of the user
});
app.use('/', router);
app.listen(5000);
結果console.log(lookup(ip));將看起來像
{ range: [ 3479298048, 3479300095 ],
country: 'US',
region: 'TX',
eu: '0',
timezone: 'America/Chicago',
city: 'San Antonio',
ll: [ 29.4969, -98.4032 ],
metro: 641,
area: 1000 }
重要提示:坐標可能是操作員的大致位置,而不是特定設備
uj5u.com熱心網友回復:
您可以詢問用戶(在他們的服務器端組態檔中),然后記住將其與他們的 login 相關聯。
或者,您可以使用報告為屬于客戶端的 IP 地址,并使用一些基于服務器的庫來嘗試猜測用戶所在的國家和地區和郵政編碼。這有時有效,有時無效,因此它實際上只是一個猜測。
VPN 之類的東西會完全混淆這個 IP 查找,因為您要查找的 IP 地址是 VPN 的主機 IP,而不是實際的客戶端 IP(對您的服務器隱藏)。例如,如果您是在意大利旅行的商業用戶并使用您公司英國的公司 VPN,IP 查找會認為您在英國。
而且,如果真正的客戶端 IP 地址實際上可用,那么郵政編碼或區號查找通常只是近似值,因為它實際上取決于用戶的 ISP 如何部署其公共 IP 地址。我注意到許多服務都可以告訴我我在我所在州的北部,但與我所在的實際郵政編碼相去甚遠。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/380251.html
