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

这篇具有很好参考价值的文章主要介绍了获取mac地址,内网ip,当前ip位置信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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()




文章来源地址https://www.toymoban.com/news/detail-807221.html

到了这里,关于获取mac地址,内网ip,当前ip位置信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包