溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

發(fā)布時(shí)間:2020-09-11 11:11:06 來(lái)源:腳本之家 閱讀:313 作者:巽秋 欄目:web開(kāi)發(fā)

在項(xiàng)目過(guò)程中,我們常常需要獲取IP的所在地。而這一功能一般都是通過(guò)一些數(shù)據(jù)網(wǎng)站的對(duì)外接口來(lái)實(shí)現(xiàn),這些接口一般情況下都是付費(fèi)使用的。在這篇文章中我將記錄,基于node.js的阿里云免費(fèi)IP地址查詢接口的使用。

1.購(gòu)買服務(wù)

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

 這是阿里云的一個(gè)AIP接口,點(diǎn)擊上面鏈接后你會(huì)進(jìn)入以下頁(yè)面

node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

點(diǎn)擊購(gòu)買后,會(huì)讓你登錄。阿里云可以用淘寶賬戶登錄,想來(lái)應(yīng)該大家都有。并且這個(gè)API不要錢100萬(wàn)次查詢,應(yīng)該足夠支撐所有的非商業(yè)用途了。

node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

購(gòu)買后在控制臺(tái)的云市場(chǎng)中你可以找到這個(gè)訂單,點(diǎn)擊右側(cè)的接口進(jìn)入AIP使用教程界面

node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

這里進(jìn)去之后是剛才的購(gòu)買頁(yè)面,向下滑動(dòng)就可以看到該API的使用方法

node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

這里有各種語(yǔ)言的官方示例,當(dāng)然意料之中的沒(méi)有Node版,所以下方我將介紹Node的使用方法

2.搭建服務(wù)器

由于本文主題是使用該接口,所以如果搭建服務(wù)器有描述不清的地方請(qǐng)大家諒解。

這里我使用express搭建的服務(wù)器

先創(chuàng)建一個(gè)test文件夾

文件夾里有兩個(gè)文件

第一個(gè)是test.js(服務(wù)器配置文件)

第二個(gè)是package.json(用于引入express模塊)

node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

 //這里是測(cè)試文件test.js
 const http = require('http'),
  express = require('express'),
  app = express();
 app.use('/',function (req,res) {//訪問(wèn)localhost所有的請(qǐng)求都會(huì)進(jìn)入這里
  res.send('服務(wù)器啟動(dòng)');
 });
 http.createServer(app).listen(80,'0.0.0.0');//創(chuàng)建服務(wù)器實(shí)例
{
 "name": "test",
 "version": "1.0.0",
 "dependencies": {
  "express": "latest"
 }
}
//package.json

先在package.json中右鍵 npm install(cnpm也行)

我的編譯器是webstorm(不一樣的同學(xué)請(qǐng)按自己的來(lái)操作)

node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

安裝完成后就可以運(yùn)行test.js了

node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

服務(wù)器啟動(dòng)后我們打開(kāi)瀏覽器測(cè)試一下

node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】


node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

到這里服務(wù)器的搭建就完成了

下面進(jìn)入Api的使用

3.Api接口的調(diào)用

在之前的官方頁(yè)面中有個(gè)調(diào)試工具點(diǎn)進(jìn)去你會(huì)看見(jiàn)

node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

 根據(jù)這個(gè)我們進(jìn)行相關(guān)的配置

首先我們要引入https因?yàn)檫@個(gè)請(qǐng)求雖然是get但是要使用https(之前被這個(gè)卡了好久一直沒(méi)有找到原因)

let option = {
  hostname:"dm-81.data.aliyun.com",//上圖的接口域名
  path:`/rest/160601/ip/getIpInfo.json?ip=${ip}`,//上圖的path格式 在最后附上你要查詢的IP地址(我這里是獲取的用戶的IP)
  headers:{//設(shè)置請(qǐng)求頭
   "Content-Type":"application/json; charset=utf-8",
   "Authorization": "APPCODE 這里是你阿里云中那個(gè)appcode",
  }
 };

appcode

node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

配置參數(shù)完成后就可以開(kāi)始寫https請(qǐng)求了

https.request使用方法與http.request 一致詳情請(qǐng)見(jiàn)官網(wǎng)文檔(http://nodejs.cn/api/http.html#http_http_request_options_callback)

let re = https.request(option,(Res)=>{//為了與外層的res區(qū)別故此處響應(yīng)文件用Res
  Res.setEncoding('utf8');
  if(Res.statusCode===200){//若http狀態(tài)碼為200則請(qǐng)求成功
   Res.on('data', (data) => {
    res.send(data);//將接口返回的數(shù)據(jù)返回到頁(yè)面上
   });
  }
 });
 re.on('error', (e) => {
  console.error(`請(qǐng)求遇到問(wèn)題: ${e.message}`);
 });
 re.end();

下面粘出完整代碼(需要的同學(xué)拿走請(qǐng)注明出處 把a(bǔ)ppcode換成你自己的即可 創(chuàng)作不易望大家點(diǎn)點(diǎn)訂閱 手動(dòng)滑稽)

//這里是測(cè)試文件
const http = require('http'),
 https = require('https'),
 express = require('express'),
 app = express();
app.use('/',function (req,res) {//訪問(wèn)localhost所有的請(qǐng)求都會(huì)進(jìn)入這里
 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:{//設(shè)置請(qǐng)求頭
   "Content-Type":"application/json; charset=utf-8",
   "Authorization": "APPCODE 你的appcode",
  }
 };
 let re = https.request(option,(Res)=>{//為了與外層的res區(qū)別故此處響應(yīng)文件用Res
  Res.setEncoding('utf8');
  if(Res.statusCode===200){//若http狀態(tài)碼為200則請(qǐng)求成功
   Res.on('data', (data) => {
    res.send(data);//將接口返回的數(shù)據(jù)返回到頁(yè)面上
   });
  }
 });
 re.on('error', (e) => {
  console.error(`請(qǐng)求遇到問(wèn)題: ${e.message}`);
 });
 re.end();
});
http.createServer(app).listen(80,'0.0.0.0');//創(chuàng)建服務(wù)器實(shí)例

然后我們?cè)俅卧L問(wèn) 服務(wù)器那個(gè)頁(yè)面返回結(jié)果如下(這里我是本地測(cè)試所以返回值為內(nèi)網(wǎng)IP)

node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

 到這里就可以查到訪問(wèn)用戶的IP所在地了

總結(jié)

以上所述是小編給大家介紹的node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI