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 相关文章推荐
多选列表框动态添加,移动,删除,全选等操作的简单实例
Jan 13 Javascript
购物车选中得到价格实现示例
Jan 26 Javascript
关闭时刷新父窗口两种方法
May 07 Javascript
png在IE6 下无法透明的解决方法汇总
May 21 Javascript
用js动态添加html元素,以及属性的简单实例
Jul 19 Javascript
vue loadmore 组件滑动加载更多源码解析
Jul 19 Javascript
Vue官方文档梳理之全局配置
Nov 22 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
Sep 27 Javascript
详解基于electron制作一个node压缩图片的桌面应用
Jan 29 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
Apr 19 Javascript
js实现页面导航层级指示效果
Aug 25 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
Nov 12 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
PHP6 mysql连接方式说明
2009/02/09 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
PHP中Memcache操作类及用法实例
2014/12/12 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
xtree.js 代码
2007/03/13 Javascript
定义select的边框颜色
2008/04/28 Javascript
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
javascript 进阶篇1 正则表达式,cookie管理,userData
2012/03/14 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
2018/02/10 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
浅析Python中yield关键词的作用与用法
2016/11/29 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
英国森林假期:Forest Holidays
2021/01/01 全球购物
医学专业五年以上个人求职信
2013/12/03 职场文书
《中华少年》教学反思
2014/02/15 职场文书
法律进机关实施方案
2014/03/12 职场文书
初中英语演讲稿
2014/04/29 职场文书