nodejs 获取网络地址
发布于 1 个月前 作者 yundian 269 次浏览 来自 问答

node自带接口获取本机ip但是我想获取网络地址怎么获取?就是上网的那个ip ubuntu

3 回复

判断下非内网地址就行了。

if (ip.indexOf('10.') == 0 ||
           ip.indexOf('172.') == 0 ||
           ip.indexOf('192.') == 0) {
         // do nothing
}

如果没有, 则 exec 调用 curl ip.cn

这个应该是获取不到的,因为你本地环境的node能取到的只有局域网内部dhcp分配给你的ip 你所谓的“上网的那个ip” 是你当地网络环境的出口ip, 也就是你访问baidu时候 baidu服务器拿到的你的那条网络请求的remote ip address 但是网络环境是复杂的,你的一条网络请求首先经过你电脑wifi所连接的那台路由器,然后可能经过一两台交换机 也有可能要经过好几层的交换机 这都说不好 ,最后不同的运营商分配给你的ip也不一定,另外如果你是在公司、企业的网络环境,通常都拥有不止一个出口ip,公司一买很可能就买下了若干个ip网段,即使是办公网络 出口ip的最后一段也很可能是动态的。 比较简单的办法就是,你需要自己搭一台vps,在vps上用node起一个httpserver 或者你用其他的随便什么php+nginx java+apache随便你, 在前台页把访问者的ip地址吐出来,然后你想获取自己公网ip的时候就去访问那个页面就可以了。

一楼说的请求可行 用request,superagent这种库去请求ipinfo.io,可以得到一个json,ip.cn也可以,匹配一下ip就行 From Noder

回到顶部