在项目过程中,我们常常需要获取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所在地的更多相关文章

  1. 阿里云服务器迁移更改IP,导致网站挂掉

    从昨日下午三点阿里云主机迁移变更IP导致网站挂点,到刚刚网站.手机客户端均恢复访问,这个过程持续了24个钟头.最后还是我自己解决了问题. 哎,真是揪心. 其间和阿里云工程师反复沟通,昨日沟通到今日凌晨 ...

  2. Java使用纯真IP库获取IP对应省份和城市

    原文:http://blog.csdn.net/chwshuang/article/details/78027873?locationNum=10&fps=1 Java使用纯真IP库获取IP对 ...

  3. 使用新浪IP库获取IP详细地址

    使用新浪IP库获取IP详细地址 <?php class Tool{ /** * 获取IP的归属地( 新浪IP库 ) * * @param $ip String IP地址:112.65.102.1 ...

  4. python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码

    python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...

  5. Node.js 部署免费/自动续订 HTTPS

    随着互联网快速发展,互联网信息安全越来越受到大家重视,HTTPS 应该是近两年各大厂商都在尽力普及的技术之一.国内大厂基本上已经全面普及了 HTTPS. 本文首发于我的个人网站:听说 - https: ...

  6. 通过阿里云ECS服务器公网ip访问tomcat,nginx

    一.概述 1.操作系统:centos7 2.安装nginx方法:https://www.cnblogs.com/boonya/p/7907999.html,亲测可用. 3.tomcat版本:apach ...

  7. 通过阿里云域名动态解析 IP 地址

    这两天在家里用树莓派折腾了一个家用服务器,主要用来做 mac 的 Time Machine ,还有就是当做下载机和 nas ,想着平时上班时间家里没人用网络,空着也是空着,就可以利用空闲带宽下个美剧啥 ...

  8. 阿里云服务器 nginx 公网 IP 无法访问 浏览器

    配置完成 nginx 后, 在浏览器输入:http://ip,正常的话,会有页面,welcome to nginx但是浏览器显示访问失败 主要从两个方面找原因,一个是阿里云的安全组和服务器的防火墙是否 ...

  9. 阿里云服务器怎么用ip访问不了

    个人想做个网站,就买了个阿里云服务器,不得不说阿里的安全做的很好,但是对于我这种小白,就成了麻烦了 工具/原料   阿里云服务器 方法/步骤     首先百度搜索阿里云,进入登录界面,输入账号密码登录 ...

随机推荐

  1. 分析abex-crackme#1

    1.分析环境2.运行程序,了解大致的运行过程3.运行Ollydbg调试程序3.1.分析结果简述4.破解4.1.方法一4.2.方法二5.运行结果6.与书中不同之处 1.分析环境 操作系统:Win10 1 ...

  2. python写注册

    # coding = UTF-8 注释格式 import datetime 引用日期 today = datetime.datetime.today().strftime("%Y-%m-%d ...

  3. qt布局管理-缩放、多窗口切换

    关于缩放的布局 所有控件要求与主窗口同时缩放,那么在所有控件设置好布局后,最后点击最外侧的主控件,选择水平布局或者垂直布局即可. 另外每个空间的属性可更改,如SizePolicy用于设置空间是否可缩放 ...

  4. 腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一)

    腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一) 在看Accept阶段代码之前, 我们再回想一下 Basic Paxos算法; 1.  Basic Paxos 算法是为 ...

  5. 抖音分享和授权(iOS)

    准备工作 注册appkey 抖音开放平台 集成sharesdk 下载地址 Xcode配置:urlScheme为注册的appkey, 白名单:douyinsharesdk ,douyinopensdk ...

  6. bugku题目“cookie欺骗”

    先上成功截图 题目写的cookie欺骗,但其实是一道考察写脚本能力和代码审计类的题目,首先观察开始的页面 可以看到只有这一串字母,粗略观察可以认为这绝对不是密码,而是胡乱写上的字符,在观察页面源代码后 ...

  7. 使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取

    web scraper 下载:Web-Scraper_v0.2.0.10 使用 Chrome 浏览器插件 Web Scraper 可以轻松实现网页数据的爬取,不写代码,鼠标操作,点哪爬哪,还不用考虑爬 ...

  8. wx支付

    开通微信商户号且开通微信公众平台微信支付功能   104680c86fd352725be198b02dc8258b 微信公众号和微信商户平台在微信支付中扮演的角色,公众号是我们在网页要进行支付的场所, ...

  9. 实现PHP服务端和c#客户端数据交换

    服务端实现功能1,数据库的访问dbhelper.php包括执行语句返回多行,返回json数据,返回单条记录,返回第一行第一列的整数,返回第一行第一列的浮点数,返回第一行第一列的双精度数,返回第一行第一 ...

  10. 微信小程序的自定义插件

    第一步,创建一个页面和普通页面一样 第二不,在这个页面上进行对json配置, "component":true 第三不在需要插入的页面中进行设置 插入标签 <dialog i ...