📅  最后修改于: 2023-12-03 15:04:41.820000             🧑  作者: Mango
在很多情况下,我们需要获取公共IP地址,以便在网络上传输数据或者进行其他网络操作。Python提供了一些方法来实现这个目的。本文将介绍三种获取公共IP地址的方法。
使用Python的socket模块可以很容易地获取公共IP地址。我们只需要连接一个远程主机,然后获取该连接的IP地址即可。
import socket
def get_public_ip_address():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
return s.getsockname()[0]
上面的代码使用Google的公共DNS服务器(8.8.8.8)建立连接,然后获取连接socket的IP地址。该方法的优点是简单快捷,但前提是能够连接远程主机。
有一些第三方API可以提供公共IP地址的查询服务,我们可以使用Python来调用这些API。
import requests
def get_public_ip_address():
response = requests.get('https://api.ipify.org/')
return response.text
上面的代码使用ipify提供的API来获取公共IP地址。缺点是需要联网才能获取。
还有一种方法是使用Python的urllib模块来获取公共IP地址。这种方法与第二种方法类似。
import urllib.request
def get_public_ip_address():
response = urllib.request.urlopen('https://ident.me')
return response.read().decode('utf8')
上面的代码使用ident.me提供的服务来获取公共IP地址。缺点是需要联网才能获取。
总之,以上三种方法都可以用来获取公共IP地址,根据具体的应用场景选择适合的方法即可。
注意:以上代码可能会受到网络状况和服务器变化的影响,因此可能不能100%准确地获取公共IP地址。
参考链接: