📅  最后修改于: 2023-12-03 15:41:26.732000             🧑  作者: Mango
在编写网络应用程序时,获取用户的 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 地址。
除了使用 Python 内置的方法和系统命令,还可以使用第三方库来获取 IP 地址。目前比较流行的第三方库有 requests
和 urllib
等。
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 地址的方法。开发者可以根据自己的需要选择合适的方法。