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
相关推荐
傻啦嘿哟1 小时前
如何使用 Python 开发一个简单的文本数据转换为 Excel 工具B站计算机毕业设计超人1 小时前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习IT古董1 小时前
【人工智能】Python在机器学习与人工智能中的应用湫ccc2 小时前
《Python基础》之pip换国内镜像源hakesashou2 小时前
Python中常用的函数介绍菜鸟的人工智能之路2 小时前
极坐标气泡图:医学数据分析的可视化新视角菜鸟学Python2 小时前
Python 数据分析核心库大全!小白不太白9502 小时前
设计模式之 责任链模式喜欢猪猪2 小时前
Django:从入门到精通糖豆豆今天也要努力鸭2 小时前
torch.__version__的torch版本和conda list的torch版本不一致