Node.js 调用阿里云免费 IP 查询接口实现地理位置获取

作者:服务小站时间:2026-10-22 17:29:46浏览:554

本文介绍如何在 Node.js 项目中利用阿里云市场提供的免费 IP 查询接口获取用户 IP 所在地。文章详细记录了从购买服务、配置 Express 服务器到使用 https 模块发起请求的完整流程,包含关键代码示例与参数配置说明,帮助开发者低成本实现 IP 定位功能。

Node.js 调用阿里云免费 IP 查询接口实现地理位置获取

在项目开发中,获取访问者 IP 所属地理位置是一项常见需求。通常这类功能依赖第三方数据网站提供的付费接口。本文将记录如何在 Node.js 环境中使用阿里云提供的免费 IP 地址查询接口来实现这一功能。

获取服务授权

第一步:获取服务授权

访问阿里云市场相关页面:https://market.aliyun.com/products/57002003/cmapi010805.html?spm=5176.2020520132.101.9.R0owP9#sku=yuncode480500000

上述链接指向阿里云的一个 API 接口页面,点击链接后将进入产品详情页。

Node.js 调用阿里云免费 IP 查询接口实现地理位置获取

点击购买按钮后需登录阿里云账号,支持使用淘宝账户登录。该 API 提供 100 万次免费查询额度,足以满足大多数非商业用途的需求。

Node.js 调用阿里云免费 IP 查询接口实现地理位置获取

购买完成后,在控制台云市场找到对应订单,点击右侧接口进入 API 使用教程界面。

Node.js 调用阿里云免费 IP 查询接口实现地理位置获取

进入页面后向下滚动,即可查看该 API 的具体使用方法。

Node.js 调用阿里云免费 IP 查询接口实现地理位置获取

官方示例提供了多种编程语言的代码,但并未包含 Node.js 版本。因此,下文将补充 Node.js 的具体调用方法。

搭建本地服务器环境

第二步:搭建本地服务器环境

本文重点在于接口调用,服务器搭建部分的描述若不够详尽,敬请谅解。

此处使用 Express 框架搭建基础服务器。

首先创建一个名为 test 的文件夹作为项目根目录。

该文件夹内包含两个主要文件。

第一个文件是 test.js,用于配置服务器逻辑。

第二个文件是 package.json,用于管理依赖并引入 express 模块。

Node.js 调用阿里云免费 IP 查询接口实现地理位置获取


 //这里是测试文件test.js
 const http = require('http'),
  express = require('express'),
  app = express();
 app.use('/',function (req,res) {//访问localhost所有的请求都会进入这里
  res.send('服务器启动');
 });
 http.createServer(app).listen(80,'0.0.0.0');//创建服务器实例
{
 "name": "test",
 "version": "1.0.0",
 "dependencies": {
  "express": "latest"
 }
}
//package.json

在 package.json 文件上右键,执行 npm install(或使用 cnpm)安装依赖。

此处以 WebStorm 编译器为例,其他开发工具请按相应操作执行。

Node.js 调用阿里云免费 IP 查询接口实现地理位置获取

依赖安装完成后,即可运行 test.js 文件启动服务。

Node.js 调用阿里云免费 IP 查询接口实现地理位置获取

服务器启动后,打开浏览器访问 localhost 进行测试。

Node.js 调用阿里云免费 IP 查询接口实现地理位置获取


Node.js 调用阿里云免费 IP 查询接口实现地理位置获取

至此,基础服务器搭建完成。

接下来进入 API 接口的具体调用环节。

调用 API 接口

第三步:调用 API 接口

在之前的官方页面中有一个调试工具,点击进入后可看到接口参数说明。

Node.js 调用阿里云免费 IP 查询接口实现地理位置获取

根据调试工具提供的信息,进行相应的代码配置。

首先需要引入 https 模块,因为尽管请求方式为 GET,但该接口强制要求使用 HTTPS 协议(此前因未注意此点曾遇到请求失败的问题)。


let option = {
  hostname:"dm-81.data.aliyun.com",//上图的接口域名
  path:`/rest/160601/ip/getIpInfo.json?ip=${ip}`,//上图的path格式 在最后附上你要查询的IP地址(我这里是获取的用户的IP)
  headers:{//设置请求头
   "Content-Type":"application/json; charset=utf-8",
   "Authorization": "APPCODE 这里是你阿里云中那个appcode",
  }
 };

配置 appcode(应用码)参数。

Node.js 调用阿里云免费 IP 查询接口实现地理位置获取

参数配置完成后,即可开始编写 https 请求代码。


https.request使用方法与http.request 一致详情请见官网文档(http://nodejs.cn/api/http.html#http_http_request_options_callback)

let re = https.request(option,(Res)=>{//为了与外层的res区别故此处响应文件用Res
  Res.setEncoding('utf8');
  if(Res.statusCode===200){//若http状态码为200则请求成功
   Res.on('data', (data) => {
    res.send(data);//将接口返回的数据返回到页面上
   });
  }
 });
 re.on('error', (e) => {
  console.error(`请求遇到问题: ${e.message}`);
 });
 re.end();

以下为完整代码示例(如需使用请注明出处,将 appcode 替换为你自己的即可。创作不易,欢迎订阅支持):


//这里是测试文件
const http = require('http'),
 https = require('https'),
 express = require('express'),
 app = express();
app.use('/',function (req,res) {//访问localhost所有的请求都会进入这里
 let ip = req.headers['x-forwarded-for'] ||
  req.connection.remoteAddress ||
  req.socket.remoteAddress ||
  req.connection.socket.remoteAddress;
 let option = {
  hostname:"dm-81.data.aliyun.com",//上图的接口域名
  path:`/rest/160601/ip/getIpInfo.json?ip=${ip}`,//上图的path格式 在最后附上你要查询的IP地址(我这里是获取的用户的IP)
  headers:{//设置请求头
   "Content-Type":"application/json; charset=utf-8",
   "Authorization": "APPCODE 你的appcode",
  }
 };
 let re = https.request(option,(Res)=>{//为了与外层的res区别故此处响应文件用Res
  Res.setEncoding('utf8');
  if(Res.statusCode===200){//若http状态码为200则请求成功
   Res.on('data', (data) => {
    res.send(data);//将接口返回的数据返回到页面上
   });
  }
 });
 re.on('error', (e) => {
  console.error(`请求遇到问题: ${e.message}`);
 });
 re.end();
});
http.createServer(app).listen(80,'0.0.0.0');//创建服务器实例

再次访问服务器页面,返回结果如下(本地测试时返回值为内网 IP)。

Node.js 调用阿里云免费 IP 查询接口实现地理位置获取

至此,成功获取访问用户的 IP 所在地信息。

总结

以上介绍了在 Node.js 中使用阿里云免费 IP 查询接口获取 IP 所在地的方法,希望对你有帮助。如有疑问请留言,小编会及时回复。感谢大家对本站的支持!

作者最新文章