首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js获取公网ip 局域网ip

JavaScript 获取公网 IP 和局域网 IP 的方法有所不同,下面分别介绍这两种 IP 的获取方式及其基础概念。

公网 IP

基础概念: 公网 IP 是指能在互联网上直接访问的 IP 地址。每个连接到互联网的设备通常都会有一个公网 IP,这个 IP 是全球唯一的。

获取方法: 可以通过调用第三方 API 来获取当前设备的公网 IP。

示例代码

代码语言:txt
复制
fetch('https://api.ipify.org?format=json')
  .then(response => response.json())
  .then(data => console.log('公网 IP:', data.ip))
  .catch(error => console.error('获取公网IP失败:', error));

优势

  • 简单快捷,只需几行代码即可实现。
  • 第三方服务通常稳定可靠。

应用场景

  • 用户登录时的地理位置验证。
  • 动态IP环境下,需要实时获取当前IP的场景。

局域网 IP

基础概念: 局域网 IP 是指在局域网内部使用的 IP 地址,通常是私有 IP 范围内的地址(如 192.168.x.x, 10.x.x.x 等)。

获取方法: 在浏览器环境中,JavaScript 无法直接获取局域网 IP,因为这涉及到网络安全问题。但可以通过 WebRTC 技术间接获取。

示例代码

代码语言:txt
复制
function getLocalIPs(callback){
    var ips = [];
    var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; // 兼容不同浏览器

    var pc = new RTCPeerConnection({iceServers:[]});
    pc.createDataChannel('');
    pc.onicecandidate = function(e){
        if (!e.candidate) {
            pc.close();
            callback(ips);
            return;
        }
        var ip = /^candidate:.+ (\S+) \d+ typ/.exec(e.candidate.candidate)[1];
        if (ips.indexOf(ip) == -1){
            ips.push(ip);
        }
    };
    pc.createOffer().then(function(sdp){
        pc.setLocalDescription(sdp);
    }).catch(function(e){
        console.error(e);
    });
}

getLocalIPs(function(ips){
    console.log('局域网 IP:', ips);
});

优势

  • 可以在不依赖服务器的情况下获取本地 IP。
  • 适用于需要本地网络通信的应用。

应用场景

  • P2P 应用中的本地地址发现。
  • 本地网络服务的配置和管理。

常见问题及解决方法

问题1:为什么获取公网 IP 失败?

  • 可能是因为第三方服务不可用或网络连接问题。
  • 解决方法:尝试更换其他可靠的 IP 查询服务。

问题2:为什么获取局域网 IP 不准确?

  • WebRTC 获取的 IP 可能包括 VPN 或代理服务器的 IP。
  • 解决方法:确保在无代理或 VPN 的环境下测试,或者使用更精确的网络检测方法。

希望以上信息能帮助你理解如何在 JavaScript 中获取公网 IP 和局域网 IP,以及相关的应用场景和可能遇到的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python通过代码获取本机局域网ip和公网ip

Python 获取本机局域网 IP 通过创建一个 UDP 套接字,并连接到公共的 DNS 服务器(此处是 Google 的 8.8.8.8 ),然后通过套接字的 getsockname ()方法获取本地...Python 获取本机公网 IP 使用 requests 库发送一个 GET 请求到 https://api.ipify.org ?...format = json 的 API 端点,这个 API 会返回包含公网 IP 地址的 JSON 响应。我们从响应数据中提取出 IP 地址并将其返回。这样你就可以获取到你的公网 IP 地址。...IP地址 public_ip = data['ip'] return public_ip # 调用函数获取公网IP地址 public_ip = get_public_ip() print...("本机公网IP地址是:", public_ip) 效果图: ❤️ ❤️ ❤️ 知识拓展:局域网和公网的差异 局域网( LAN )和公共互联网( Internet )是两个不同的网络概念,它们具有许多差异和特点

55300
  • 公网IP、私网IP、动态IP、静态IP

    公网IP是在公网中使用的IP地址,私网IP是在局域网中使用的IP地址。...而私网IP处于局域网下,它想要访问互联网是需要先转换成公网IP的,这个公网IP就是局域网的网关IP。...对公网上的其他电脑来说,无论是路由器下的哪个设备访问它,它获取到的对方IP都是一样的,都是局域网的网关IP。至于是局域网内具体哪个设备访问它,它是无法知道的。...局域网由路由器产生,路由器即为网关,局域网IP是192.168.0.1。因为路由器既处于公网内,又处于私网内,所以路由器还有一个公网IP,假设为136.67.0.1。...但公网上的其他IP想要找到我们,是没法直接找到的,它最多只能找到局域网的网关一层,至于路由器下的多个设备,它是没办法区分的。这也就是为什么很多人都希望自己的IP是公网IP,而非私网IP。

    14.5K33

    公网IP和内网IP区别

    什么是公网IP(外网IP): 公网IP就是除了保留IP地址以外的IP地址,可以与Internet上的其他计算机随意互相访问。我们通常所说的IP地址,其实就是指的公网IP。...互联网上的每台计算机都有一个独立的IP地址,该IP地址唯一确定互联网上的一台计算机。这里的IP地址就是指的公网IP地址。...公网IP地址和内网IP地址也是同样,不同企业或学校的机器可能有相同的内网IP地址,但是他们的公网IP地址肯定不同。那么这些企业或学校的计算机是怎样IP地址共享的呢?...时,就可以通过NAT主机的NAT技术,将内网我IP地址修改为公网IP地址,如此一来,内网计算机就可以向Internet请求数据了。...在其他ISP那里,即使是拥有几百台计算机的大型局域网用户,当他们申请IP地址时,所分配的地址也不过只有几个或十几个IP地址。

    6.3K20

    公网IP和内网IP如何分辨?

    公网ip和内网ip之间如何分辨,公网ip和内网ip之间有什么区别?很多人都知道根据网络使用的范围不同又分为公有网络和私有网络。...公有网络就是指处于公有网络的电脑的IP是“互联网”中能够识别到的地址;而私有网络指公有网络的机器不能识别到的机器。本文主要给大家介绍公网ip和内网ip的相关知识。...1、公网ip和内网ip之间如何分辨? ②直观法 10开头的IP都是内网IP。即10.0.0.0 到 10.255.255.255是内网IP。以下IP段的地址都是内网IP地址。...如果花费很少的钱给你升级为100M光纤上网,99.99%是内网IP,那0.01%是我还没有发现过案例。 ③询问法 直接问自己的网络提供商,问他分配的IP是不是公网IP,跨网能不能访问到这个IP。...2、公网IP和内网IP有什么区别? ①访问权限不同 访问互联网需要公网IP作为身份的标识,而私网IP则用于局域网,在公网上是不能使用私网IP地址来实现互联网访问的。

    9.8K20

    什么是公网IP和内网IP?

    1、引言 搞网络通信应用开发的程序员,可能会经常听到外网IP(即互联网IP地址)和内网IP(即局域网IP地址),但他们的区别是什么?又有什么关系呢?...另外,内行都知道,提到外网IP和内网IP就不得不提NAT路由转换这种东西,那这双是什么鬼?本文就来简单讲讲这些到底都是怎么回事。 1、每台电脑都必须要一个公网IP吗? 答案:不是。...我们也知道,由于百度和电脑A不在一个局域网内,所以A要访问百度,那么必须得经过网关。而网关的这个IP地址,是真实存在的,是可以访问百度的。...而像A、B、C这样的IP地址我们也称之为内网IP,即内网IP;而像网关,百度这样的IP我们称之为外网IP(即互联网公网IP)。...所以,一个典型的内网访问公网的原理,就像下图这样就可以实现了: 现在知道外网IP和内网IP了吧?

    9.1K30

    内网IP和公网IP的区别

    IP地址对于经常上网的人应该都不陌生,ip地址又可以分成内网ip地址和公网ip地址,今天就来简单介绍下这两者的区别。...通常我们所说的内网也就是局域网,是内网的计算机以网络地址转换协议,通过一个公共的网关访问Internet。而内网的计算机也可以向Internet上的其他计算机发送连接请求。...公网ip是运营商所分配的ip地址,是独一无二的,可以与Internet上的其他计算机随意互相访问。可以访问因特网上的所有网络资源。...运营商所分配公网ip地址(某某市某某区某某酒店)也就是所住的酒店,而201房间(内网ip)则是酒店管家(路由器)所分配的。...所以一个酒店可以有很多的房间(内网ip)但是当外面的朋友问你住哪里,你肯定不会说你住在201房间(内网ip)而会说你住在某某市某某区某某酒店(公网ip)。这就是内网ip和公网ip的本质区别。

    5.9K20

    公网IP和内网IP的区别

    最近在学习shell反弹这块的时候,在向源主机发送报文的时候,由于不了解公网IP和内网IP的区别,导致在监听端口这块一直没有捕获到信息,后来才知道是因为我用的公司的局域网是192开头的,属于内网,因此只能在内部进行通信...,直接喊编号就行,理解成电脑的话,就相当与一个公司所有的电脑,一个网吧里面所有的电脑,这些都属于内网,也就是局域网,IP地址也都是属于内网IP地址。...公网IP,公网IP地址就是互联网IP,可以理解成我们小家庭,公司,网吧以外的IP地址。...所以内网IP可以理解成路由器以下的IP,公网IP可以理解成路由器以外的IP。因为IPV4的地址是有限的, 不可能给全世界每个人都都分配一个固定的公网IP,所以内网IP就很好的解决了这个问题。...网IP地址段:(0.0.0.0—-223.255.255.255)地址之间,除以上局域网专用地址和一些特殊地址以外的的地址即为公网地址。一般来说,购买云服务器的时候都会有公网IP。

    6.2K61

    不通过浏览器获取公网 IP

    一.不通过浏览器获取公网 IP 有的时候我们的计算机处于受限状态,不能使用浏览器或者 HTTP 协议。 也就不能使用类似: curl ifconfig.io 之类的命令来获取公网 IP。...但其实可以不通过浏览器,而是通过 DNS 来获取公网 IP,使用如下命令: dig @ns1.google.com TXT o-o.myaddr.l.google.com +short # 或者:nslookup...这些命令会返回公网 IP 的原理是: Google 等公司会编写程序,监听在它们类似 o-o.myaddr.l.google.com 的地址上。...二.nginx设置反向代理,如何获取真实客户端ip upstream这个模块提供一个简单方法来实现在轮询和客户端IP之间的后端服务器负荷平衡。...Host包含客户端真实的域名和端口号; X-Real-IP表示客户端真实的IP; X-Forwarded-For这个Header和X-Real-IP类似,但它在多层代理时会包含真实客户端及中间每个代理服务器的

    80420

    本地IP与公网IP:区别与应用

    这两种IP地址在定义、用途和安全性等方面存在显著差异。本地IP(内网IP)本地IP地址是在局域网(LAN)内部使用的IP地址,这些地址不能在互联网上直接访问。...本地IP地址通常由路由器或网络设备通过动态主机配置协议(DHCP)分配给局域网内的设备,用于在局域网内部进行通信。...区别与应用使用范围:本地IP地址仅在局域网内有效,无法直接访问互联网;而公网IP地址可以在全球范围内进行通信,实现跨地域连接和数据传输。...安全性:由于公网IP地址可以直接访问,因此需要考虑网络安全性,采取适当的防火墙和安全措施;而本地IP地址通常在受保护的局域网内,相对较安全。在实际应用中,本地IP和公网IP都有各自的用途。...例如,在搭建网站时,需要将服务器的公网IP地址配置到域名解析中,以便用户可以通过互联网访问网站。而在局域网内,可以使用本地IP地址为设备分配地址,以实现内部网络通信。

    12300
    领券