Python 获取本机真实 IP 地址指南
在当今互联网时代,获取本机的真实 IP 地址对于开发和网络调试来说是一个常见需求。本文将引导你一步一步地实现这一目标。无论你是刚刚入行的小白,还是希望深入了解网络编程的老手,你都能从中受益。
整体流程
在开始之前,我们先来看看获取本机真实 IP 地址的整体流程:
步骤 | 描述 |
---|---|
1 | 导入所需的库 |
2 | 获取本机局域网 IP 地址 |
3 | 通过网络请求获取公网 IP 地址 |
4 | 输出本机真实 IP 地址 |
接下来,我们将逐步详细讲解每一步。
步骤详解
步骤 1: 导入所需的库
在 Python 中,我们将使用 socket
和 requests
这两个库来获取本机的 IP 地址。首先,确保你已经安装了 requests
库,如果未安装,可以通过以下命令安装:
pip install requests
在 Python 代码中,我们引入这两个库:
import socket # 导入 socket 库,用于处理网络连接
import requests # 导入 requests 库,用于发送网络请求
步骤 2: 获取本机局域网 IP 地址
每台计算机在局域网络(如家庭或公司网络)中都有一个局域网 IP 地址。我们可以使用 socket
库来获取这一信息。
def get_local_ip():
local_ip = socket.gethostbyname(socket.gethostname()) # 获取本机的局域网 IP 地址
return local_ip # 返回局域网 IP 地址
在上面的代码中:
socket.gethostname()
获取本机的主机名。socket.gethostbyname()
将主机名转换为对应的局域网 IP 地址。
步骤 3: 通过网络请求获取公网 IP 地址
要获取本机的公网 IP 地址,可以使用一些 Web 服务,例如 httpbin
或 ipinfo
。我们以 ` 为例,这是一个简单的 API 可以返回请求者的 IP 地址。
def get_public_ip():
try:
response = requests.get(' # 发送 HTTP GET 请求
public_ip = response.json()['origin'] # 从响应中提取 IP 地址
return public_ip # 返回公网 IP 地址
except requests.RequestException as e:
return f"无法获取公网 IP: {e}" # 返回错误信息
在这段代码中:
requests.get()
方法发送 HTTP GET 请求到指定的 URL。response.json()
将响应内容转换为 JSON 格式,并提取出 IP 地址。
步骤 4: 输出本机真实 IP 地址
最后,我们将组合以上两部分代码,输出本机的局域网和公网 IP 地址。
if __name__ == '__main__':
local_ip = get_local_ip() # 获取本机局域网 IP 地址
public_ip = get_public_ip() # 获取本机公网 IP 地址
print(f"本机局域网 IP 地址: {local_ip}") # 打印局域网 IP 地址
print(f"本机公网 IP 地址: {public_ip}") # 打印公网 IP 地址
整体代码
将上述代码组合在一起,就形成了完整的程序:
import socket # 导入 socket 库
import requests # 导入 requests 库
def get_local_ip():
local_ip = socket.gethostbyname(socket.gethostname()) # 获取局域网 IP 地址
return local_ip # 返回局域网 IP 地址
def get_public_ip():
try:
response = requests.get(' # 发送 HTTP GET 请求
public_ip = response.json()['origin'] # 获取公网 IP 地址
return public_ip # 返回公网 IP 地址
except requests.RequestException as e:
return f"无法获取公网 IP: {e}" # 返回错误信息
if __name__ == '__main__':
local_ip = get_local_ip() # 获取局域网 IP
public_ip = get_public_ip() # 获取公网 IP
print(f"本机局域网 IP 地址: {local_ip}") # 输出局域网 IP
print(f"本机公网 IP 地址: {public_ip}") # 输出公网 IP
旅行图
使用 mermaid 的 journey 表示我们获取 IP 地址的过程如下:
journey
title 获取本机真实 IP 地址
section 获取局域网 IP
连接到网络: 5: Me
使用 socket 获取局域网 IP: 4: Me
section 获取公网 IP
请求 httpbin API: 4: Me
解析响应并获取公网 IP: 5: Me
结尾
以上就是使用 Python 获取本机真实 IP 地址的完整过程和代码示例。在这个过程中,我们了解了如何使用 socket
库获取局域网 IP,以及如何通过 requests
库获取公网 IP。希望这篇文章能帮助你更好地理解网络编程,并能顺利地实现你的需求。若有疑问或需要进一步的帮助,请随时询问!