如何在Node.js中运行IP地理定位查询?
在本文中,我将向您介绍使用 Node.js(也称为IP地理定位)。
可是,并没有标准的方法来确定 IP地址的物理位置。IP地理定位服务提供商将许多不同的数据放在一起,以构建一个准确的 IP 位置数据库。
IP 地理定位数据通常包括:
- 域名WHOIS 数据(其本身必须由数据提供商汇总)
- 区域互联网注册管理机构,向世界各地的各种互联网服务提供商分发大量 IP 地址( ISPs )
- 来自大型互联网服务提供商的BGP源
- 延迟信息(来自某些物理位置的数据包到达目标 IP 需要多长时间)
如自己获取上述所有信息非常复杂且昂贵,但值得庆幸的是,有一些服务提供商已经完成信息汇总,并为用户提供方便使用的IP地理定位数据。
现在我们将向您展示如何使用新发布的simple-geoipNode.js库来执行IP地理定位数据库查询,并返回您可能想要查询的任何IP地址的物理位置。
创建一个IP地理定位API 查询帐号
使用 simple-geoip 库,首先是创建一个免费的IP地理定位API 帐号: https://ip-geolocation.whoisxmlapi.com/signup 。
IP地理定位API是IP地理定位最大最便宜的服务提供商。用户可以使用IP地理定位API服务运行每月 1,000 次免费IP地理定位查询,或者支付每月 27 美元1000次查询的固定费用。点击此处可查看额外的价格计划。
当您创建并登录到IP地理定位API 帐户后,可查看帐户的产品页面并复制获取 API 密钥——稍后可用密钥来运行IP地理定位查询。
安装 simple-geoip 包
账户设置好后,安装以下安装包。从命令行运行以下命令:
$ npm 安装 simple-geoip
将从 NPM下载并安装最新版本的simple-geoip安装包。
使用 simple-geoip 运行IP地理定位查询
现在您已经拥有一个帐户并安装了 simple-geoip 包,接下来可以运行一些代码来查询您想要的任何 IP 地址的物理地址。
这是一个小脚本`geoip.js` ,它将找到常用 IP 地址( `8.8.8.8` ,Google 的核心 DNS 服务器之一)的物理位置:
const IpGeolocation = require("simple-geoip");
let ipGeolocationLookup = new IpGeolocation("your-api-key");
ipGeolocationLookup.lookup("8.8.8.8", (err, data) => {
if (err) throw err;
console.log(data);
});
如您所见,使用该数据库只需三个步骤:
- 导入库
- 提供您在注册时的API 密钥来创建一个“IpGeolocation”对象。
- 运行`lookup`方法,导入要验证的 IP 地址和回调函数。此回调函数将在IP地理定位查询中已完成。
回调中返回的数据将如下所示:
{
"ip": "8.8.8.8",
"location": {
"country": "US",
"region": "California",
"city": "Mountain View",
"lat": 37.40599,
"lng": -122.078514,
"postalCode": "94043",
"timezone": "-08:00"
}
}
此 JSON 数据告诉您有关“8.8.8.8” IP 地址物理位置的所有信息。
在后台, IP地理定位API服务正在处理所有IP地理定位数据库查询和数据聚合——从供应商处获取数据并每天处理数百万次更新。
自定义IP 地理定位 simple-geoip 中的查询行为
simple-geoip Node.js 库的优势之一是数据库可以最多五次连续自动重试失败的请求。
例如,您正在尝试执行一个IP地理定位查询请求,突然网络连接中断。 simple-geoip查询并不会简单地报错,而是会重试请求连接。
如果您更喜欢 simple-geoip 库 *not* 重试失败的请求,您可以在创建`IpGeolocation`查询时传入一些可选的配置数据,如下所示:
const IpGeolocation = require("simple-geoip");
let ipGeolocationLookup = new IpGeolocation("your-api-key", { retries: 2 });
ipGeolocationLookup.lookup("8.8.8.8", (err, data) => {
if (err) throw err;
console.log(data);
});
您可以将“重试”次数设置为“0”至您想要的数量之间的任意数字。但是,需谨记:您允许的重试次数越多,在失败的情况下请求的速度就越慢。
虽然重试在解决部分网络中断时很便捷,但如果您遇到严重的网络中断,最好尽早出错而避免浪费大量时间重试失败的请求。默认重试行为(五次重试)对于大多数人来说通常是一个不错的选择。
使用新的IP地理定位数据
现在用户可以轻松使用 simple-geoip 库查找 IP 地址的物理位置,快快开始运用IP地理定位查询所需的产品或服务吧!
一些常见的IP地理定位数据使用案例包括:
- 在用户访问您的网站时检测他们所在的国家/地区,并根据他们的位置(语言、广告、设计、货币等)为他们提供定制的体验
- 阻止来自某些特定位置的用户访问您的网站。例如,如果您是视频流媒体提供商并且仅有权在特定国家/地区传输视频, IP地理定位查询服务可以为您提供该数据,并仅为合法经营地区的客户提供服务。
- 欺诈和规避风险。如果注意到来自特定位置的大量欺诈,暂时阻止来自该位置的访问者可以快速地减少欺诈和其他问题。
通过分析您网站访问者的 IP 地址,可极大地增强任何网络产品和服务。
使用simple-geoip
总结一下:运行IP地理定位查询并不难或昂贵。使用我们新的https://github.com/whois-api-llc/php-simple-geoip PHP 库和IP 地理定位 API服务,你可轻松构建和管理一个大型的网络产品。
如需执行IP地理定位查询,请查看simple-geoip库,会让IP地址位置信息查询变得非常简单。
如果您有任何问题,请联系我们!