node.js使用免费的阿里云ip查询获取ip所在地【推荐】
作者:巽秋 发布时间:2024-05-13 09:30:23
在项目过程中,我们常常需要获取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模块)
//这里是测试文件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了
服务器启动后我们打开浏览器测试一下
到这里服务器的搭建就完成了
下面进入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所在地了
总结
以上所述是小编给大家介绍的node.js使用免费的阿里云ip查询获取ip所在地网站的支持!
来源:https://www.cnblogs.com/lhyxq/p/9577082.html
猜你喜欢
- 写在前面很长一段时间内,我都在研究在线地图的开发者文档,百度地图和高德地图的开发者中心提供了丰富的在线地图服务,虽然有一定的权限限制,但不得
- js表单验证只能是写限定的东西大收集 代码如下:ENTER键可以让光标移到下一个输入框<input onkeydown=&q
- 本文实例为大家分享了Mysql实现通讯录的具体代码,供大家参考,具体内容如下#-*-code:utf-8-*-import pymysqld
- PHP echo() 函数实例输出一些文本:<?php echo "Hello world!"; ?>定义和
- 各人觉得这些LOGO的设计都很好,简洁,明了,大方。特整理出来与大家分享,希望能吸取设计经验。asp之家祝愿各位09年身体健康,万事如意,网
- 1. 很多情况下需要进行不同进制之间的转换其中比较常用到的是python的内置函数进行进制的转换,一般使用内置函数进行转换的时候是先将控制台
- 解决办法一(ThinkPHP官方提供的办法,我并没有测试过):升级到ThinkPHP3.1最新的UploadFile.class.php(h
- 本文实例讲述了Python使用type动态创建类操作。分享给大家供大家参考,具体如下:使用type动态创建类动态语言和静态语言最大的不同,就
- 首先介绍下怎么发现的吧, 线上的项目日志是通过 logging 模块打到 syslog 里, 跑了一段时间后发现 syslog 的 UDP
- <input id="workname" style="width: 200px" name=
- 前言网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或
- 基于python的Appium进行b站直播消费记录爬取之前看文章说fiddler也可以进行爬取,但尝试了一下没成功,这次选择appium进行
- CUDACUDA是显卡厂商NVIDIA推出的运算平台。CUDA™是一种由NVIDIA推出的通用并行计算架构,是一种并行计
- 一、简介我们知道在购买股票的时候,可以使用历史数据来对当前的股票的走势进行预测,这就需要对股票的数据进行获取并且进行一定的分析,当然了,人们
- multiprocessing多进程概念创建多进程基本流程创建进程对象启动进程 回收进程代码:import multiprocessing
- 1、先看看什么是 iterable 对象以内置的max函数为例子,查看其doc:>>> print max.__doc__
- mysql按照某个时间段分组统计今天刚好是碰到一个报表需求,要求根据时段统计各工单的数量。这个就有点皮实了,以前都没搞过这玩意。于是研究了几
- python的库一般都用pip安装。但是有时候也会出现在线安装失败的情况,如下图安装PIL模块时报错:这时候可以采取离线安装的方式;一、首先
- 一、概述spark 有三大引擎,spark core、sparkSQL、sparkStreaming,spark core 的关键抽象是 S
- Python3安装第三方爬虫库BeautifulSoup4,供大家参考,具体内容如下在做Python3爬虫练习时,从网上找到了一段代码如下: