获取mac地址,内网ip,当前ip位置信息

import json
import socket
import time
import requests
from urllib.parse import quoteclass Home_Url():def get_mac(self):from psutil import net_if_addrsmac = ''info = net_if_addrs()for k, v in info.items():if k not in ['以太网', 'en0'] and '以太网' not in str(k):continueprint(k)for i in v:if '-' in i[1] or ':' in i[1]:if len(i[1]) == 17:mac = str(i[1]).lower()breakif 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 macdef get_external_ip(self):external_ip = Noneurl1 = '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.textif external_ip.strip():return external_ip.strip()except:passreturn external_ipdef 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 cityexcept: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]# 外网iptry:external_ip = self.get_external_ip()except:external_ip = '127.0.0.1'return mac, hostname, intranet_ip, external_ipdef run(self):mac, hostname, intranet_ip, external_ip = self.get_mac_address()if __name__ == '__main__':start = Home_Url()start.run()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/636131.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0开始python算法工程师(一):安装conda

1.为什么要安装conda 主要是为了在命令行使用conda命令管理虚拟环境。 2.两种conda Windows用户,一般建议初学者都安装anaconda(省事);Windows用户,熟练的安装者则安装miniconda(省存储空间)…

Microchip Studio修改工程名

打开工程后,右键选择重命名 右键工程重命名 关闭后回到工程下的文件夹 再次打开工程软件会显示加载失败,此时是找不到路径了 菜单栏打开工程 选择修改文件夹名字的路径下的cproj文件 然后点击关闭,会显示保存新的atsln文件,此时将…

安全基础~攻防特性3

文章目录 SSTI(模板注入)1. 简介2. 成因3. 常见框架存在注入4. 判断存在SSTI SSTI(模板注入) 1. 简介 (Server-Side Template Injection) 服务端模板注入 1、使用框架(MVC的模式),如python的flask,php的tp,java的sp…

实战内网穿透NPS搭建过程

前提条件 首先你要有个公网IP的服务器,既然是内网穿透,那必然是通过公网IP或者域名访问本地服务。 官网下载地址 https://github.com/ehang-io/nps/releases 服务端 选择linux_amd64_server.tar.gz 客户端 选择windows_amd64_client.tar.gz 服…

Centos 7 单机部署 consul

一、下载安装 参考官网文档 Install | Consul | HashiCorp Developer 进入Centos 执行下面命令 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo sudo yum -y install consul 这种方法安装完成…

Spring MVC精解:技术内幕与最佳实践

第1章:引言 大家好,我是小黑,咱们今天来聊聊Spring MVC,它是Spring的一个模块,专门用来构建Web应用程序。提供了一种轻量级的方式来构建动态网页。就像小黑我刚开始接触Java时候一样,可能对这些听起来很高…

梁山泊国潮风礼盒,传承经典,贺礼新春

在春节来临之际,梁山泊隆重推出新年中国红礼盒酒,为您传递新年的祝福与关爱。这款酒以其独特的魅力,为您带来美好的祝愿和愉悦的享受。中国风国潮礼盒采用中国传统红色为主色调,象征着吉祥、喜庆和繁荣。红色的背景上,…

前端-云点播技术

一、简介 云点播(Cloud Video On Demand)是一种基于云计算平台提供的视频点播服务。这种服务允许用户在需要的时候按需观看视频内容,而无需等待下载完成。以下是一些关于云点播技术的常见特征和要点: 存储和管理: 云存…

安科瑞Acrel-2000Z型电力监控系统在常州恒生工业园光伏项目上的的设计与应用——安科瑞赵嘉敏

概述 针对用户屋顶光伏发电电力监测,通过微机保护装置、开关柜综合测控装置、电气接点无线测温产品、电能质量在线监测装置、配电室环境监设备、弧光保护装置等设备组成综合自动化的综合监控系统,实现了变电、配电、用电的安全运行和管理。监控范围包括…

uniapp嵌套webview,无法返回上一级?

uniapp嵌套webview,如何解决回退问题? 文章目录 uniapp嵌套webview,如何解决回退问题?遇到问题解决方式方式一方式二 场景: 进入首页,自动跳转第三方应用 遇到问题 在设备上运行时,无法回退上…

Linux:软件包管理器 yum

提示:以下指令均在Xshell 7 中进行 什么是软件包? 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序。 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放…

新手入门Java 继承概念及使用,final修饰符的详细介绍(有实例)

第四章 继承 课前回顾 1.如何进行封装 首先将类中定义的成员属性全部修改为private修饰 然后对每一个属性提供一个对外访问的方法,也就是生成getter/setter方法 最后再对外访问的方法(getter/setter)中加入属性值验证 2.封装的好处 提…

[优雅的面试]MySQL与Redis双写一致性方案

前言 由于缓存的高并发和高性能已经在各种项目中被广泛使用,在读取缓存这方面基本都是一致的,大概都是按照下图的流程进行操作: 但是在更新缓存方面,是更新完数据库再更新缓存还是直接删除缓存呢?又或者是先删除缓存再…

项目管理十大知识领域之项目沟通管理

一、项目沟通管理概述 项目沟通管理是项目管理中的重要组成部分,它涉及到对项目信息的收集、处理、存档和传递。一个成功的项目沟通管理可以确保团队成员、利益相关者以及其他相关方之间的信息交流畅通无阻,从而推动项目顺利进行。沟通管理涉及的内容不…

《Linux高性能服务器编程》笔记02

Linux高性能服务器编程 参考 Linux高性能服务器编程源码: https://github.com/raichen/LinuxServerCodes 豆瓣: Linux高性能服务器编程 文章目录 Linux高性能服务器编程第06章 高级I/O函数6.1 pipe函数6.2 dup函数和dup2函数6.3 readv 函数和writev 函数6.4 sendfile 函数6.…

TypeScript语法总结

JavaScript 与 TypeScript 的区别 TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。 TypeScript 可处理已…

从数据角度分析年龄与NBA球员赛场表现的关系【数据分析项目分享】

好久不见朋友们,今天给大家分享一个我自己很感兴趣的话题分析——NBA球员表现跟年龄关系到底大不大?数据来源于Kaggle,感兴趣的朋友可以点赞评论留言,我会将数据同代码一起发送给你。 目录 NBA球员表现的探索性数据分析导入Python…

【 Qt 快速上手】-①- Qt 背景介绍与发展前景

文章目录 1.1 什么是 Qt1.2 Qt 的发展史1.3 Qt 支持的平台1.4 Qt 版本1.5 Qt 的优点1.6 Qt的应用场景1.7 Qt的成功案例1.8 Qt的发展前景及就业分析行业发展方向就业方面的发展前景 1.1 什么是 Qt Qt 是一个跨平台的 C 图形用户界面应用程序框架。它为应用程序开发者提供了建立…

DBA技术栈MongoDB:简介

1.1 什么是MongoDB? MongoDB是一个可扩展、开源、表结构自由、用C语言编写且面向文档的数据库,旨在为Web应用程序提供高性能、高可用性且易扩展的数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当…

QUEUE

1. 优先级队列 1.1. LC 2182 构造限制重复的字符串 大根堆pq存储现有的字符种类哈希表cnt存储每种字符的数量每次弹出一种字符,直至没有字符可用 如果限制次数没被用完,使用,更新哈希表,剩余次数-1,把当前字符放回去…