import json
import socket
import time
import requests
from urllib.parse import quote
class Home_Url():
def get_mac(self):
from psutil import net_if_addrs
mac = ''
info = net_if_addrs()
for k, v in info.items():
if k not in ['以太网', 'en0'] and '以太网' not in str(k):
continue
print(k)
for i in v:
if '-' in i[1] or ':' in i[1]:
if len(i[1]) == 17:
mac = str(i[1]).lower()
break
if 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 mac
def get_external_ip(self):
external_ip = None
url1 = '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.text
if external_ip.strip():
return external_ip.strip()
except:
pass
return external_ip
def 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 city
except:
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]
# 外网ip
try:
external_ip = self.get_external_ip()
except:
external_ip = '127.0.0.1'
return mac, hostname, intranet_ip, external_ip
def run(self):
mac, hostname, intranet_ip, external_ip = self.get_mac_address()
if __name__ == '__main__':
start = Home_Url()
start.run()
获取mac地址,内网ip,当前ip位置信息
FOAF-lambda2024-01-20 17:08
相关推荐
wyiyiyi2 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例mit6.8242 小时前
[1Prompt1Story] 滑动窗口机制 | 图像生成管线 | VAE变分自编码器 | UNet去噪神经网络没有bug.的程序员2 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎甄超锋2 小时前
Java ArrayList的介绍及用法AntBlack3 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则杜子不疼.5 小时前
《Python学习之字典(一):基础操作与核心用法》myzzb6 小时前
基于uiautomation的自动化流程RPA开源开发演示TLuoQiu6 小时前
小电视视频内容获取GUI工具我叫黑大帅6 小时前
【CustomTkinter】 python可以写前端?😆胡耀超6 小时前
DataOceanAI Dolphin(ffmpeg音频转化教程) 多语言(中国方言)语音识别系统部署与应用指南