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
相关推荐
yunvwugua__1 分钟前
Python训练营打卡 Day27Stara05111 小时前
基于多头自注意力机制(MHSA)增强的YOLOv11主干网络—面向高精度目标检测的结构创新与性能优化那雨倾城2 小时前
使用 OpenCV 将图像中标记特定颜色区域LuckyTHP5 小时前
java 使用zxing生成条形码(可自定义文字位置、边框样式)mahuifa6 小时前
(7)python开发经验学地理的小胖砸7 小时前
【Python 操作 MySQL 数据库】安迪小宝7 小时前
6 任务路由与负载均衡Blossom.1187 小时前
使用Python实现简单的人工智能聊天机器人lisw058 小时前
Python高级进阶:Vim与Vi使用指南ayiya_Oese8 小时前
[模型部署] 3. 性能优化