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
相关推荐
EntyIU几秒前
mineru从安装部署到测试使用完整指南安替-AnTi36 分钟前
厚朴 APK 搜索接口分析山川湖海1 小时前
AI时代快速学编程语言的陷阱(以Python为例)H Journey1 小时前
Supervisor 进程管理工具介绍春日见2 小时前
5分钟入门强化学习之动态规划算法与实现DeniuHe2 小时前
sklearn 中所有交叉验证数据集划分方式完整总结DeniuHe2 小时前
sklearn中不同交叉验证方法的场景适配隐于花海,等待花开3 小时前
16.Python 常用第三方库概览 深度解析我材不敲代码3 小时前
Python 函数核心:位置参数与关键字参数详解风落无尘3 小时前
第十一章《对齐与安全》 完整学习资料