如何通过python获取本地ip地址?

问题描述 投票:0回答:2

我在互联网上找到了一段代码,它说它为我的机器提供了本地网络IP地址:

hostname = socket.gethostname()
local_ip = socket.gethostbyname(hostname)

但它返回的IP是192.168.94.2,但我在WIFI网络中的IP地址实际上是192.168.1.107 我怎样才能只用python获取wifi网络本地IP地址? 我希望它适用于 Windows、Linux 和 Macos。

python sockets localhost python-sockets local-network
2个回答
8
投票

您可以使用此代码:

import socket
hostname = socket.getfqdn()
print("IP Address:",socket.gethostbyname_ex(hostname)[2][1])

或者这样获取公共IP:

import requests
import json
print(json.loads(requests.get("https://ip.seeip.org/jsonip?").text)["ip"])

1
投票

您只能通过互联网上的外部服务器获知您的公共 IP 地址。有许多网站可以轻松提供此信息。以下是来自

whatismyip
Python 模块的代码,可以从公共网站获取它:

import urllib.request

IP_WEBSITES = (
           'https://ipinfo.io/ip',
           'https://ipecho.net/plain',
           'https://api.ipify.org',
           'https://ipaddr.site',
           'https://icanhazip.com',
           'https://ident.me',
           'https://curlmyip.net',
           )

def getIp():
    for ipWebsite in IP_WEBSITES:
        try:
            response = urllib.request.urlopen(ipWebsite)

            charsets = response.info().get_charsets()
            if len(charsets) == 0 or charsets[0] is None:
                charset = 'utf-8'  # Use utf-8 by default
            else:
                charset = charsets[0]

            userIp = response.read().decode(charset).strip()

            return userIp
        except:
            pass  # Network error, just continue on to next website.

    # Either all of the websites are down or returned invalid response
    # (unlikely) or you are disconnected from the internet.
    return None

print(getIp())

或者您可以安装

pip install whatismyip
然后致电
whatismyip.whatismyip()

© www.soinside.com 2019 - 2024. All rights reserved.