获取本机的外网/广域网IP地址是一个常见的需求,可以通过以下步骤来实现:
- 使用第三方服务获取IP地址:有一些网站提供了API,可以通过发送HTTP请求获取本机的外网IP地址。其中一个常用的服务是
https://api.ipify.org
,它返回一个包含IP地址的简单文本响应。
javascript
// 使用fetch函数发送HTTP请求获取IP地址
fetch('https://api.ipify.org?format=json')
.then(response => response.json())
.then(data => {
const ipAddress = data.ip;
console.log(ipAddress);
})
.catch(error => {
console.error('获取IP地址失败:', error);
});
这段代码使用了fetch
函数发送GET请求到https://api.ipify.org?format=json
,然后解析响应的JSON数据,提取出IP地址并打印到控制台。
- 使用STUN服务器获取IP地址:STUN(Session Traversal Utilities for NAT)服务器是一种用于获取网络地址转换(NAT)后的IP地址的协议。可以使用WebRTC库来实现与STUN服务器的通信,并获取本机的外网IP地址。
```javascript
// 创建一个RTCPeerConnection对象
const pc = new RTCPeerConnection();
// 添加一个ICE候选项处理程序
pc.onicecandidate = event => {
if (event.candidate) {
const ipAddress = event.candidate.address;
console.log(ipAddress);
}
};
// 创建一个数据通道
pc.createDataChannel('dummy');
// 创建一个SDP(Session Description Protocol)offer
pc.createOffer()
.then(offer => pc.setLocalDescription(offer))
.catch(error => {
console.error('创建SDP offer失败:', error);
});
```
这段代码创建了一个RTCPeerConnection
对象,并添加了一个ICE候选项处理程序。当ICE候选项可用时,从候选项中提取出IP地址并打印到控制台。然后,创建一个数据通道和一个SDP offer,并将offer设置为本地描述。
这两个示例说明了两种常用的方法来获取本机的外网/广域网IP地址。第一种方法使用了第三方服务,通过发送HTTP请求获取IP地址。第二种方法使用了STUN服务器,通过WebRTC库与STUN服务器通信来获取IP地址。根据具体的需求和环境,选择适合的方法即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js获取本机的外网/广域网ip地址完整源码 - Python技术站