python 获取自己机器的公网IP
时间: 2023-08-18 20:44:28 浏览: 131
你可以使用以下 Python 代码获取自己机器的公网 IP:
```python
import requests
ip = requests.get('https://api.ipify.org').text
print('My public IP address is:', ip)
```
该代码使用 requests 库来向 https://api.ipify.org 发送 HTTP GET 请求并获取返回的公网 IP 地址。你可以将该代码复制到 Python 解释器中并执行,即可在控制台中看到自己机器的公网 IP 地址。
相关问题
python 获取内网ip对应公网ip
在Python中,获取内网IP对应到公网IP通常需要用到第三方库,比如`requests`、`socket`或`fping`等。以下是一个基本的例子,通过发送GET请求到外部网站来获取公共IP:
```python
import requests
def get_public_ip():
try:
response = requests.get('https://ifconfig.co')
if response.status_code == 200:
public_ip = response.text.split('\n')[0]
return public_ip
else:
raise Exception("Failed to get IP address")
except Exception as e:
print(f"Error: {str(e)}")
print(get_public_ip())
```
然而这种方式可能会遇到网络限制或服务器返回错误的情况。另一种常见做法是使用`socket`模块来查询网络信息,但这需要计算机连接到互联网:
```python
import socket
def get_public_ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
# 这里尝试连接Google DNS,如果成功则返回公网IP
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
except (ConnectionRefusedError, OSError):
ip = '127.0.0.1' # 如果无法连接,则可能是内网IP
finally:
s.close()
return ip
print(get_public_ip())
```
python获取公网ip不相同
在Python中,如果你需要获取客户端的公网IP地址,可以使用第三方库如`requests`或者`socket`模块。这里有个简单的例子:
```python
import requests
def get_public_ip():
try:
response = requests.get('https://api.ipify.org')
return response.text.strip()
except Exception as e:
print(f"无法获取公共IP:{e}")
return None
public_ip = get_public_ip()
if public_ip:
print(f"您的公网IP地址是:{public_ip}")
else:
print("获取公网IP失败")
# 或者使用socket模块
def get_ip_by_socket():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
s.close()
return ip
except Exception as e:
print(f"无法获取公共IP:{e}")
return None
ip_via_socket = get_ip_by_socket()
if ip_via_socket:
print(f"通过socket获取的公网IP地址是:{ip_via_socket}")
```
这两个函数会尝试从不同的源获取IP,第一个是从一个提供公共IP查询服务的网站,第二个是通过发送UDP数据包到外部服务器来获取。
阅读全文