import json import socket import time import requests from urllib.parse import quoteclass Home_Url():def get_mac(self):from psutil import net_if_addrsmac = ''info = net_if_addrs()for k, v in info.items():if k not in ['以太网', 'en0'] and '以太网' not in str(k):continueprint(k)for i in v:if '-' in i[1] or ':' in i[1]:if len(i[1]) == 17:mac = str(i[1]).lower()breakif not mac:node = uuid.getnode()mac = uuid.UUID(int=node).hex[-12:]mac = '-'.join([mac[i:i + 2] for i in range(0, len(mac) + 2 // 2, 2)])[:-1]return macdef get_external_ip(self):external_ip = Noneurl1 = 'https://ipinfo.io/json'url2 = 'https://checkip.amazonaws.com/json'url3 = 'https://api.ipify.org/?format=json'url4 = 'https://api64.ipify.org'url5 = 'http://ip-api.com/json/?lang=zh-CN'urls = [url1, url2, url4, url3, url5]headers = {'Accept': '*/*','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.47'}for url in urls:try:proxies = {"http": None, "https": None}res = requests.get(url, headers=headers, proxies=proxies, timeout=25)if res.text.count('{') > 0:response = json.loads(res.text)external_ip = response.get('ip') or response.get('query')else:external_ip = res.textif external_ip.strip():return external_ip.strip()except:passreturn external_ipdef get_city_region(self):# 获取当前ip位置信息headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'}url = 'https://whois.pconline.com.cn/ipJson.jsp?json=true'try:res = requests.get(url, headers=headers, timeout=5)response = json.loads(res.text)city = response['city']return cityexcept:return ''def get_mac_address(self):mac = self.get_mac()print('mac:', mac)# 获取主机名hostname = socket.gethostname()# 内网IP地址# intranet_ip = socket.gethostbyname(hostname)s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.connect(('8.8.8.8', 80))intranet_ip = s.getsockname()[0]# 外网iptry:external_ip = self.get_external_ip()except:external_ip = '127.0.0.1'return mac, hostname, intranet_ip, external_ipdef run(self):mac, hostname, intranet_ip, external_ip = self.get_mac_address()if __name__ == '__main__':start = Home_Url()start.run()