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 相关文章推荐
让IE8支持DOM 2(不用框架!)
Dec 31 Javascript
JavaScript对数字的判断与处理实例分析
Feb 02 Javascript
Backbone.js的一些使用技巧
Jul 01 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
Sep 15 Javascript
解决js图片加载时出现404的问题
Nov 30 Javascript
js仿腾讯QQ的web登陆界面
Aug 19 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
Sep 28 Javascript
webpack多入口多出口的实现方法
Aug 17 Javascript
vue实现记事本功能
Jun 26 Javascript
开源一个微信小程序仪表盘组件过程解析
Jul 30 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
Jul 30 Javascript
JS访问对象两种方式区别解析
Aug 29 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
CI框架中数据库操作函数$this->db->where()相关用法总结
2016/05/17 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
2010/12/30 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
js实现按钮控制图片360度翻转特效的方法
2015/02/17 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
ant-design-vue中tree增删改的操作方法
2020/11/03 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
使用Python脚本操作MongoDB的教程
2015/04/16 Python
python修改操作系统时间的方法
2015/05/18 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
实习教师个人的自我评价
2013/11/08 职场文书
聚美优品励志广告词
2014/03/14 职场文书
团队口号大全
2014/06/06 职场文书
机关作风建设工作总结
2014/10/23 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
新员工入职感想
2015/08/07 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
python3实现无权最短路径的方法
2021/05/12 Python