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 相关文章推荐
Javascript 自适应高度的Tab选项卡
Apr 05 Javascript
jquery实现弹出窗口效果的实例代码
Nov 28 Javascript
Javascript正则控制文本框只能输入整数或浮点数
Sep 02 Javascript
编写自己的jQuery提示框(Tip)插件
Feb 05 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
Mar 30 Javascript
详解Bootstrap按钮
Jan 04 Javascript
bootstrap table表格插件使用详解
May 08 Javascript
jQury Ajax使用Token验证身份实例代码
Sep 22 Javascript
AngularJS实时获取并显示密码的方法
Feb 06 Javascript
微信小程序文章详情页跳转案例详解
Jul 09 Javascript
javascript json对象小技巧之键名作为变量用法分析
Nov 11 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
Jan 18 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
PHPlet在Windows下的安装
2006/10/09 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
DOM_window对象属性之--clipboardData对象操作代码
2011/02/03 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
2017/03/01 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
ES6 javascript中class类的get与set用法实例分析
2017/10/30 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
axios封装与传参示例详解
2020/10/18 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
python实现员工管理系统
2018/01/11 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
Html5基于canvas实现电子签名并生成PDF文档
2020/12/07 HTML / CSS
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
护士自我鉴定
2013/10/23 职场文书
高中数学教学反思
2014/01/30 职场文书
2014年质检工作总结
2014/11/26 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
结婚主持人致辞
2015/07/28 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
古诗文之爱国名句(77句)
2019/09/24 职场文书