python 取外网 ip
时间: 2023-11-26 20:36:16 浏览: 171
你可以使用 `requests` 库来获取外网 IP 地址。以下是一个示例代码:
```python
import requests
url = 'https://api.ipify.org'
response = requests.get(url)
if response.status_code == 200:
print('My public IP address is:', response.text)
else:
print('Failed to get public IP address.')
```
该代码会向 `https://api.ipify.org` 发送 GET 请求以获取外网 IP 地址,并将其打印出来。请注意,这个网站只允许每小时发送 100 个请求。如果你需要频繁获取外网 IP,建议使用其他服务。
相关问题
python 获取外网ip
在Python中获取外网IP,通常可以使用第三方服务的API来实现。这些API服务可以返回你的公网IP地址。以下是一个使用Python的requests库访问一个公共API来获取外网IP的示例代码:
```python
import requests
def get_external_ip():
try:
response = requests.get('https://api.ipify.org')
if response.status_code == 200:
return response.text # 返回IP地址字符串
else:
return "Error: Unable to reach the IP service."
except requests.RequestException as e:
return f"Error: {e}"
if __name__ == "__main__":
ip = get_external_ip()
print(f"Your external IP address is: {ip}")
```
在上述代码中,`api.ipify.org` 是一个提供IP信息的服务,当你访问它的网址时,它会返回你的公网IP地址。我们使用Python的requests库来发起HTTP GET请求,然后返回响应的内容,这个内容就是你的外网IP地址。
查询外网IP地址 python
### 如何使用Python获取公网IP地址
#### 方法一:利用 `socket` 库连接外部服务器
通过创建一个 UDP 套接字并尝试连接到一个已知的外部 IP 地址(如 Google 的 DNS 服务),可以间接获得本机用于访问该目标的服务端口所绑定的真实外网出口 IP。
```python
import socket
dgram = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
dgram.connect(('8.8.8.8', 80))
ip = dgram.getsockname()[0]
finally:
dgram.close()
print(f"My public IP address via socket is: {ip}")
```
这种方法适用于大多数情况,但在某些复杂的 NAT 或代理环境下可能无法得到预期的结果[^1]。
#### 方法二:借助第三方 API 请求返回自身的公网 IP
另一种更可靠的方式是从提供此类信息服务的网站请求数据。这些站点会将客户端发起 HTTP/HTTPS 请求时携带的信息反馈给用户,其中包括了实际使用的公有 IP 地址。
```python
from requests import get
response = get('https://api.myip.la')
if response.status_code == 200:
ip = response.text.strip()
else:
raise Exception("Failed to retrieve the public IP")
print(f'My public IP address via third-party service is: {ip}')
```
这种方式相对简单直接,并且不受本地网络环境的影响较大程度上能保证准确性[^3]。
另外还有一种基于标准库 urllib 实现的方法也可以考虑:
```python
from urllib.request import urlopen
with urlopen('http://checkip.amazonaws.com/') as f:
external_ip = f.read().decode('utf-8').strip()
print(f'Public IP using AWS check IP endpoint: {external_ip}')
```
此段代码同样能够有效地取得用户的公网 IP 地址[^2]。
阅读全文