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


Posted in Javascript onSeptember 03, 2018

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

1.购买服务

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

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

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

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

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

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

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

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

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

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

2.搭建服务器

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

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

先创建一个test文件夹

文件夹里有两个文件

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

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

node.js使用免费的阿里云ip查询获取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查询获取ip所在地【推荐】

安装完成后就可以运行test.js了

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

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

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

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

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

下面进入Api的使用

3.Api接口的调用

在之前的官方页面中有个调试工具点进去你会看见

node.js使用免费的阿里云ip查询获取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查询获取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所在地【推荐】

 到这里就可以查到访问用户的IP所在地了

总结

以上所述是小编给大家介绍的node.js使用免费的阿里云ip查询获取ip所在地,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
一个加载js文件的小脚本
Jun 28 Javascript
图片延迟加载的实现代码(模仿懒惰)
Mar 29 Javascript
jQuery cdn使用介绍
May 08 Javascript
JQuery中操作Css样式的方法
Feb 12 Javascript
iframe如何动态创建及释放其所占内存
Sep 03 Javascript
node.js中的fs.chownSync方法使用说明
Dec 16 Javascript
使用Node.js实现HTTP 206内容分片的教程
Jun 23 Javascript
SublimeText自带格式化代码功能之reindent
Dec 27 Javascript
浅谈js算法和流程控制
Dec 29 Javascript
thinkjs 文件上传功能实例代码
Nov 08 Javascript
基于vue+canvas的excel-like组件实例详解
Nov 28 Javascript
react router4+redux实现路由权限控制的方法
May 03 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
Sep 03 #Javascript
Vue 中对图片地址进行拼接的方法
Sep 03 #Javascript
VUE预渲染及遇到的坑
Sep 03 #Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
Sep 03 #Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
Sep 03 #Javascript
vue完成项目后,打包成静态文件的方法
Sep 03 #Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
Sep 03 #Javascript
You might like
php实现的九九乘法口诀表简洁版
2014/07/28 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
Js基础学习资料
2010/11/23 Javascript
这段js代码得节约你多少时间
2011/12/20 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
javascript类型转换示例
2014/04/29 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
vue实现添加与删除图书功能
2018/10/07 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
python实现吃苹果小游戏
2020/03/21 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
德国高尔夫商店:Par71.de
2020/11/29 全球购物
实习单位推荐信范文
2013/11/27 职场文书
详细的大学生创业计划书模板
2014/01/27 职场文书
签约仪式主持词
2014/03/19 职场文书
生产文员岗位职责
2014/04/05 职场文书
骨干教师培训方案
2014/05/06 职场文书
化妆品活动策划方案
2014/05/23 职场文书
营业员岗位职责
2015/02/11 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers