Node.js 调用阿里云免费 IP 查询接口实现地理位置获取
本文介绍如何在 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 接口页面,点击链接后将进入产品详情页。

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

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

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

官方示例提供了多种编程语言的代码,但并未包含 Node.js 版本。因此,下文将补充 Node.js 的具体调用方法。
搭建本地服务器环境
第二步:搭建本地服务器环境
本文重点在于接口调用,服务器搭建部分的描述若不够详尽,敬请谅解。
此处使用 Express 框架搭建基础服务器。
首先创建一个名为 test 的文件夹作为项目根目录。
该文件夹内包含两个主要文件。
第一个文件是 test.js,用于配置服务器逻辑。
第二个文件是 package.json,用于管理依赖并引入 express 模块。

//这里是测试文件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 编译器为例,其他开发工具请按相应操作执行。

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

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


至此,基础服务器搭建完成。
接下来进入 API 接口的具体调用环节。
调用 API 接口
第三步:调用 API 接口
在之前的官方页面中有一个调试工具,点击进入后可看到接口参数说明。

根据调试工具提供的信息,进行相应的代码配置。
首先需要引入 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(应用码)参数。

参数配置完成后,即可开始编写 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)。

至此,成功获取访问用户的 IP 所在地信息。
总结
以上介绍了在 Node.js 中使用阿里云免费 IP 查询接口获取 IP 所在地的方法,希望对你有帮助。如有疑问请留言,小编会及时回复。感谢大家对本站的支持!
Java和JavaScript应用场景对比:企业级后端 vs Web前端与Node.js
2026-11-04 16:42:01
JavaScript模块化开发入门:CommonJS与ES Module的区别
2026-11-03 23:31:34
怎么创建并运行第一个js文件
2026-11-03 21:49:02
JavaScript运行环境怎么搭建?Node.js官方下载与安装教程
2026-11-03 20:03:04
NestJS 集成 TypeORM 或 Prisma 实现数据库持久化操作
2026-11-03 18:56:13
