📜  python获取公共IP地址 - Python(1)

📅  最后修改于: 2023-12-03 15:04:41.820000             🧑  作者: Mango

Python获取公共IP地址

在很多情况下,我们需要获取公共IP地址,以便在网络上传输数据或者进行其他网络操作。Python提供了一些方法来实现这个目的。本文将介绍三种获取公共IP地址的方法。

方法一:使用socket获取

使用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获取

有一些第三方API可以提供公共IP地址的查询服务,我们可以使用Python来调用这些API。

import requests

def get_public_ip_address():
    response = requests.get('https://api.ipify.org/')
    return response.text

上面的代码使用ipify提供的API来获取公共IP地址。缺点是需要联网才能获取。

方法三:使用urllib获取

还有一种方法是使用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地址。

参考链接: