import uuid
# coding=utf-8
import glob
import sys
import os
import threading
current_dir = os.path.dirname(os.path.abspath(__file__))
paths = [current_dir, current_dir + '/../']
for path in paths:
sys.path.insert(0, path)
os.environ['PYTHONPATH'] = (os.environ.get('PYTHONPATH', '') + ':' + path).strip(':')
import socket
import os
import json
import threading
import platform
def get_local_ip_old():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
s.close()
return ip
except Exception:
return "127.0.0.1"
def get_local_ip():
if platform.system() != 'Windows':
return get_local_ip_old()
import psutil
ignore_keywords = ["clash", "vmware", "virtualbox", "loopback", "npcap", "tap", "tun"]
prefer_prefix = ("192.", "10.", "172.")
candidate_ip = None
for name, addrs in psutil.net_if_addrs().items():
lname = name.lower()
if any(bad in lname for bad in ignore_keywords):
continue
for addr in addrs:
if addr.family == 2: # AF_INET
ip = addr.address
if ip.startswith("127.") or ip.startswith("169.254."):
continue
# 优先局域网地址
if ip.startswith(prefer_prefix):
print(f"检测到有效网卡: {name} → {ip}")
return ip
# 备选
candidate_ip = ip
if candidate_ip is None:
return get_local_ip_old()
return candidate_ip
if __name__ == '__main__':
ip_str = get_local_ip()
print(ip_str)
获取ip
7577

被折叠的 条评论
为什么被折叠?



