【前言】

nodejs自带的获取ip的一些api,获取的都是用户本地的ip,

不是公网ip(public ip),公网ip只有在用户连入internet后才会有,

获取用户公网ip,一般的方法是通过一些收费的ip库获取,

同样也有一些免费获取自己公网ip的方法。

【icanhazip】

http://icanhazip.com/,是国外的一个免费获取ip的地址,只要访问这个地址就会返回用户自己的公网ip

【sohu获取ip】

上述网址是国外的网站,有时候可能响应较慢,国内也有很多免费获取公网ip的网站,

比如sohu的一个网址,http://txt.go.sohu.com/ip/soip

只是这个网站访问后返回的内容比较多,需要自己筛选出其中的公网ip,

大概的思路是通过正则表达式获取返回内容中的ip地址

【qiao-get-ip】

综上,封装了一个npm包,qiao-get-ip,qiao-get-ip - npm

主要功能:

  • getIpByIcanhazip,通过上述第一个网址获取公网ip;
  • getIpBySohu,通过上述第二个网址获取公网ip;
  • getIp,先通过第二个网址获取ip,如果不成功再通过第一个网址获取公网ip
  • 以上方法适用于nodejs环境和浏览器环境

使用方法也很简单:

'use strict';

var q = require('qiao-get-ip');

var test = async function(){
    try{
        var ip = await q.getIp();
        console.log(ip);
    }catch(e){
        console.log(e);
    }
};

test();

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐