Python 获取本机真实 IP 地址指南

在当今互联网时代,获取本机的真实 IP 地址对于开发和网络调试来说是一个常见需求。本文将引导你一步一步地实现这一目标。无论你是刚刚入行的小白,还是希望深入了解网络编程的老手,你都能从中受益。

整体流程

在开始之前,我们先来看看获取本机真实 IP 地址的整体流程:

步骤 描述
1 导入所需的库
2 获取本机局域网 IP 地址
3 通过网络请求获取公网 IP 地址
4 输出本机真实 IP 地址

接下来,我们将逐步详细讲解每一步。

步骤详解

步骤 1: 导入所需的库

在 Python 中,我们将使用 socketrequests 这两个库来获取本机的 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 服务,例如 httpbinipinfo。我们以 ` 为例,这是一个简单的 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。希望这篇文章能帮助你更好地理解网络编程,并能顺利地实现你的需求。若有疑问或需要进一步的帮助,请随时询问!