📜  获取 IP 地址 - Python (1)

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

获取 IP 地址 - Python

在编写网络应用程序时,获取用户的 IP 地址是一项非常常见的任务。Python 提供了多种方式来获取用户的 IP 地址,包括使用系统命令或第三方库等。

下面我们来介绍一下常用的方法。

使用 socket 模块获取 IP 地址

socket 模块是 Python 内置的用于处理网络编程的模块,它提供了获取用户 IP 地址的方法。

import socket

def get_ip_address():
    # 获取本机名称
    hostname = socket.gethostname()
    # 获取本机 IP
    ip_address = socket.gethostbyname(hostname)
    return ip_address

上面的代码中,我们调用 socket 模块中的 gethostname() 方法获取本机名称,然后使用 gethostbyname() 方法获取本机 IP 地址。

使用 ifconfig 命令获取 IP 地址

另一种获取 IP 地址的方式是使用系统命令。在 Linux 和 macOS 系统中,可以使用 ifconfig 命令获取 IP 地址,而在 Windows 系统中,可以使用 ipconfig 命令。

import os

def get_ip_address():
    # 执行系统命令
    response = os.popen('ifconfig').read()
    # 在输出中匹配 IP 地址
    ip_address = re.findall(r'\d+.\d+.\d+.\d+', response)[0]
    return ip_address

上面的代码中,我们使用 os 模块中的 popen() 方法执行系统命令,并使用正则表达式在输出中匹配出 IP 地址。

使用第三方库获取 IP 地址

除了使用 Python 内置的方法和系统命令,还可以使用第三方库来获取 IP 地址。目前比较流行的第三方库有 requestsurllib 等。

import requests

def get_ip_address():
    # 发起 GET 请求
    response = requests.get('http://ipinfo.io/ip')
    # 获取响应内容
    ip_address = response.text.strip()
    return ip_address

上面的代码中,我们使用 requests 库发起一个 GET 请求,访问 ipinfo.io 网站,该网站会返回用户的 IP 地址。

总结

无论是使用 socket 模块、系统命令还是第三方库,Python 提供了多种获取 IP 地址的方法。开发者可以根据自己的需要选择合适的方法。