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
相关推荐
API快乐传递者1 小时前
淘宝反爬虫机制的主要手段有哪些?阡之尘埃3 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)丕羽6 小时前
【Pytorch】基本语法bryant_meng6 小时前
【python】Distributionm0_594526307 小时前
Python批量合并多个PDF工业互联网专业8 小时前
Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现钱钱钱端8 小时前
【压力测试】如何确定系统最大并发用户数?慕卿扬8 小时前
基于python的机器学习(二)—— 使用Scikit-learn库Json____8 小时前
python的安装环境Miniconda(Conda 命令管理依赖配置)小袁在上班8 小时前
Python 单元测试中的 Mocking 与 Stubbing:提高测试效率的关键技术