node.js使用免费的阿里云ip查询获取ip所在地

简介: 在项目过程中,我们常常需要获取IP的所在地。而这一功能一般都是通过一些数据网站的对外接口来实现,这些接口一般情况下都是付费使用的。在这篇文章中我将记录,基于node.js的阿里云免费IP地址查询接口的使用。

在项目过程中,我们常常需要获取IP的所在地。而这一功能一般都是通过一些数据网站的对外接口来实现,这些接口一般情况下都是付费使用的。在这篇文章中我将记录,基于node.js的阿里云免费IP地址查询接口的使用。

1.购买服务

https://market.aliyun.com/products/57002003/cmapi010805.html?spm=5176.2020520132.101.9.R0owP9#sku=yuncode480500000 

 这是阿里云的一个AIP接口,点击上面链接后你会进入以下页面

点击购买后,会让你登录。阿里云可以用淘宝账户登录,想来应该大家都有。并且这个API不要钱100万次查询,应该足够支撑所有的非商业用途了。

购买后在控制台的云市场中你可以找到这个订单,点击右侧的接口进入AIP使用教程界面

这里进去之后是刚才的购买页面,向下滑动就可以看到该API的使用方法

这里有各种语言的官方示例,当然意料之中的没有Node版,所以下方我将介绍Node的使用方法

2.搭建服务器

由于本文主题是使用该接口,所以如果搭建服务器有描述不清的地方请大家谅解。

这里我使用express搭建的服务器

先创建一个test文件夹

文件夹里有两个文件

第一个是test.js(服务器配置文件)

第二个是package.json(用于引入express模块)

 

 

 1 //这里是测试文件test.js
 2 
 3 const http = require('http'),
 4     express = require('express'),
 5     app = express();
 6 
 7 app.use('/',function (req,res) {//访问localhost所有的请求都会进入这里
 8     res.send('服务器启动');
 9 });
10 
11 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了

服务器启动后我们打开浏览器测试一下

到这里服务器的搭建就完成了

下面进入Api的使用

3.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所在地了

感谢浏览

欢迎大家一起探讨,共同进步

目录
相关文章
|
23天前
|
安全 API 持续交付
要利用阿里云控制API查询您的阿里云资源
【2月更文挑战第33天】要利用阿里云控制API查询您的阿里云资源
16 3
|
1月前
|
SQL 存储 JSON
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
亲爱的社区小伙伴们,Apache Doris 2.1.0 版本已于 2024 年 3 月 8 日正式发布,新版本开箱盲测性能大幅优化,在复杂查询性能方面提升100%,新增Arrow Flight接口加速数据读取千倍,支持半结构化数据类型与分析函数。异步多表物化视图优化查询并助力仓库分层建模。引入自增列、自动分区等存储优化,提升实时写入效率。Workload Group 资源隔离强化及运行时监控功能升级,保障多负载场景下的稳定性。新版本已经上线,欢迎大家下载使用!
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
|
2月前
|
弹性计算 API Python
如何利用通义千问查询阿里云资源
本篇文章详细阐述了如何利用LangChain框架构建一款Python工具,该工具能够调用通义千问大模型来查询和获取阿里云资源信息。
115561 48
|
4月前
|
消息中间件 Kafka
Kafka【问题 03】Connection to node -1 (/IP:9092) could not be established. Broker may not be available.
Kafka【问题 03】Connection to node -1 (/IP:9092) could not be established. Broker may not be available.
182 0
|
2月前
|
弹性计算 云计算 开发者
阿里云服务器租用价格表整理汇总,2024年阿里云价格表查询整理
在云计算服务市场上,阿里云凭借其卓越的性能和稳定的品质,赢得了广大用户的信赖。对于许多个人开发者和小型企业来说,选择阿里云的服务器往往是一个明智的选择。那么,阿里云服务器的租用价格是怎样的呢?今天我们就为大家带来最新的阿里云服务器租用价格表。
|
2月前
|
存储 缓存 安全
阿里云网盘与相册问题之如何解除限制境外IP登录
阿里云网盘与相册是阿里云提供的云存储服务,用户可以安全便捷地存储和管理个人文件、照片等数据;本合集将介绍如何使用阿里云网盘和相册服务,包括文件上传、同步、分享,以及处理常见使用问题的技巧。
42 0
|
3月前
|
存储 关系型数据库 分布式数据库
阿里云PolarDB解决乐麦多源数据存储性能问题
乐麦通过使用PolarDB数据库,使整个系统之间的数据查询分析更加高效
390 3
提问 阿里云的公网IP 跟 内网IP 有什么区别?
提问 阿里云的公网IP 跟 内网IP 有什么区别?
|
3月前
|
存储 人工智能 Cloud Native
阿里云向量检索服务测评:高效、易用、强大的向量管理与查询能力
摘要:本文对阿里云向量检索服务进行了全面的测评,从其基于自研Proxima内核的高性能、全托管、云原生特性,到简洁易用的SDK/API接口,再到在多种应用场景下的集成能力,为读者提供了一个全面了解阿里云向量检索服务的机会。
1107 0
|
4月前
|
存储 弹性计算 运维
太原阿里云代理商:阿里云ECS是否支持增加指定IP
简介:@luotuoemo 飞机@TG 【聚搜云】服务器运维专家! www.4526.cn 太原阿里云代理商:阿里云ECS是否支持增加指定IP阿里云ECS(Elastic Compute Service)是阿里云为用户提供的可扩展的云服务器服务。作为太原阿里云代理商,我们了解到阿里云ECS具有不少优势,其中之一就是可以增加指定IP。