electron:获取MAC地址

news2024/11/16 7:53:51

一、背景

当我们需要用户“使用指定设备”访问程序的时候,我们需要获取用户设备的固定的id,设备id+用户id实现业务需求,这个所谓的id就是MAC地址。

对于其他方法:

uuid:uuid是一个唯一的字符串,可以存放到浏览器本地存储,但是当清楚缓存后就不复存在,或者杀毒软件也会定期清理缓存,清理后也会不存在。

浏览器指纹:浏览器指纹是指仅通过浏览器的各种信息,如CPU核心数、显卡信息、系统字体、屏幕分辨率、浏览器插件等组合成的一个字符串,就能近乎绝对定位一个用户,就算使用浏览器的隐私窗口模式,也无法避免。如果用户量大的话还是有可能重复的。

MAC地址:形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性。

所以MAC地址是理想的方法,但是浏览器不能获取MAC地址,所以本文我们electron。

MAC地址举例:18:26:49:7d:95:ab

二、代码实现

<!DOCTYPE html>
<html>
    <head>
      <meta charset="UTF-8">
      <title>Hello World!</title>
    </head>
    <body>
        <h1 id="h1">Hello World!</h1>
        We are using node
        <script>
            document.write(process.versions.node)
        </script>
        Chrome
        <script>
            document.write(process.versions.chrome)
        </script>
        and Electron
        <script>
            document.write(process.versions.electron)
            // 获取mac地址
            var os = require("os");
            if(os.networkInterfaces().WLAN){
            sessionStorage.mac = os.networkInterfaces().WLAN[0].mac
            }else{
            sessionStorage.mac = os.networkInterfaces()['以太网'][0].mac
            }
            sessionStorage.name = os.hostname()
            console.log('mac:', sessionStorage.getItem('mac'))
            console.log('name', sessionStorage.getItem('name'))
        </script>
    </body>
</html>

三、过程记录:

记录一、

解决:

const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true, // 需要
      contextIsolation: false // 需要
    }
  })

完整index.js代码:

const {app, BrowserWindow} = require('electron')
// 创建全局变量并在下面引用,避免被GC
let win
function createWindow () {
    // 创建浏览器窗口并设置宽高
    win = new BrowserWindow({
        width: 800, 
        height: 600,
        webPreferences: {
            contextIsolation: false, // 需要
            nodeIntegration:true // 需要
        }
    })

    // 加载页面
    win.loadFile('./index.html')

    // 打开开发者工具
    win.webContents.openDevTools()

    // win.on('DOMContentLoaded', () => {
    // })

    // 添加window关闭触发事件
    
    win.on('closed', () => {
        win = null  // 取消引用
    })

    // 初始化后 调用函数
    app.on('ready', createWindow)  
    // 当全部窗口关闭时退出。

    app.on('window-all-closed', () => {
       // 在 macOS 上,除非用户用 Cmd + Q 确定地退出,
       // 否则绝大部分应用及其菜单栏会保持激活。
       if (process.platform !== 'darwin') {
            app.quit()
       }
   })

app.on('activate', () => {
// 在macOS上,当单击dock图标并且没有其他窗口打开时,
// 通常在应用程序中重新创建一个窗口。
    if (win === null) {
      createWindow()
    }
})

 

成功

node.js - Electron.js快速入门指南: Errors on “npm start” - IT工具网

四、欢迎交流指正,关注我,一起学习。 

参考链接:

快速入门 | Electron

electron:Uncaught ReferenceError: process is not defined_gswwxyhk的博客-CSDN博客

electron-vue获得用户mac地址_荷花微笑的博客-CSDN博客_vue获取mac地址

#yyds干货盘点# Electron常见问题 48 - Electron 获取本机 MAC 地址_liuzhen的技术博客_51CTO博客 

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

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

相关文章

深度融合钉钉PaaS,授客学堂助力企业实现培训数字化

方案简介 授客学堂将企业培训领域的经验与钉钉开放能力深度融合&#xff0c;通过集成钉钉人事一体、酷应用、IM底座、待办等多种开放能力&#xff0c;实现学员培训数据实时互通&#xff0c;为客户提供更新更酷的能力&#xff0c;高效解决企业培训的数字化服务。 方案场景 在…

tensorflow feature_columns

总结来说&#xff1a; feature_column定义了一种数据预处理的方式&#xff0c;可以看作是一种格式&#xff0c;指定了key&#xff0c;用于后续读取输入流中对应列的数据feature_column不是tensor&#xff0c;所以如果在下一步应用到模型中是需要tensor&#xff0c;还需要通过f…

非互联网人士如何转行互联网?

结论是&#xff0c;具备互联网式的做事思维积累互联网项目经验。我靠着这个方法从一名传统销售顺利转行&#xff0c;&#xff08;之前没有任何互联网工作经验&#xff09;入职了一家互联网公司做用户运营&#xff0c;半年前跳槽成为一个4人运营小团队的leader。 在分享我自身的…

我国丁辛醇行业现状:上游丙烯供给充足 下游需求下滑 市场出现高差价现象

根据观研报告网发布的《中国丁辛醇行业发展深度分析与投资前景研究报告&#xff08;2022-2029年&#xff09;》显示&#xff0c;丁辛醇是一种丁醇和辛醇合成的有机物&#xff0c;无色透明、易燃的油状液体&#xff0c;具有特殊的气味&#xff0c;能与水及多种化合物形成共沸物&…

服务器IPMI(BMC)装机

将网线连接服务器的控制口与PC&#xff0c;服务器的控制口默认IP为192.168.100.100&#xff0c;网关默认为192.168.100.1&#xff0c;将PC的IP修改为与服务器控制口相同网段。打开浏览器&#xff0c;输入https://19168.100.100&#xff0c;进入IPMI登录界面。账号密码需要找运维…

Apache Airflow Hive Provider <5.0.0 存在操作系统命令注入漏洞

漏洞描述 Apache Airflow 是一个用于以编程方式创作、安排和监控工作流平台。Apache Airflow Hive Provider 是一个使用 SQL 读取、写入和管理分布式存储中的大型数据集的工具包。 Apache Airflow Hive Provider 在 5.0.0 之前的版本中由于对airflow/providers/apache/hive/h…

Stm32标准库函数6——f103 PWM 电调(50Hz)

#include "stm32f10x.h" #include "delay.h" TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; u16 Ppm; /************************************************* 函数: void RCC_Configuration(void) 功能: 配…

D. Friends and Subsequences Codeforces Round #361 (Div. 2)RMQ+二分 单调队列

题目传送门 题意为 给定两个长度为n的数组&#xff0c;设为a数组和b数组&#xff0c;需要找到所有可能的区间中&#xff0c;a数组的最大值等于b数组的最小值的个数。 1&#xff1a;RMQ 二分 RMQ 能找到一个数组在任意区间的最大值或者最小值&#xff0c;只需要在O(n)的时间…

【Java基础知识复盘】HashMap篇——持续更新中

本人知识复盘系列的博客并非全部原创&#xff0c;大部分摘自网络&#xff0c;只是为了记录在自己的博客方便查阅&#xff0c;往后也会陆续在本篇博客更新本人查阅到的新的知识点&#xff0c;望悉知&#xff01; HashMap 概述 HashMap 是一个散列表&#xff0c;它存储的内容是…

hashMap相关

文章目录HashMapHashMap介绍HashMap在 JDK1.7和 JDK1.8中的区别JDK1.7中HashMap头插法死循环的原因HashMap的底层原理HashMap的扩容机制解决Hash冲突的方法为什么在解决hash冲突的时候选择先用链表&#xff0c;再转红黑树?HashMap为什么线程不安全一般用什么作为HashMap的key?…

程序员需要达到什么水平才能顺利拿到 20k 无压力?

很有趣的是&#xff0c;在程序员身上&#xff0c;我看到了最明显&#xff0c;也最有趣的贫富差距。 根据2022最新版大厂新入职员工职级对应表&#xff0c;大厂技术线的员工轻而易举地拿到了20w的水平&#xff0c;而只要往上够一够&#xff0c;30w也不是什么难事。 然而&#xf…

玩转云服务器:怎样用云服务器架设大型3D魔幻手游【魔域】服务器,实现联机多人同玩,带你一起搞机,了解游戏搭建过程,详细教程

准备工作&#xff1a; 你首先要准备一台云服务器&#xff01; 服务器配置&#xff1a;2核4G以上配置&#xff01; 服务器系统&#xff1a;win2012 开始搭建&#xff1a; 下载游戏服务端&#xff08;有些多人叫源码&#xff0c;这里我就不解释了&#xff0c;喜欢怎么叫就怎…

SpringCloud Alibaba | 网关(三) : SpringCloudGateway 过滤器获取application/json中body数据

SpringCloudGateway 过滤器获取application/json中body数据一、前言二、通过cachedRequestBodyObject缓存获取三、ServerHttpRequest getBody方法获取四、(*&#xffe3;︶&#xffe3;)一、前言 项目接口需要加解密,就在网关层进行解密操作。那么问题来了怎么在gateway 的filt…

基于松鼠算法改进的DELM预测-附代码

松鼠算法改进的深度极限学习机DELM的回归预测 文章目录松鼠算法改进的深度极限学习机DELM的回归预测1.ELM原理2.深度极限学习机&#xff08;DELM&#xff09;原理3.松鼠算法4.松鼠算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考&#xff1a;https:…

线程池相关

文章目录为什么需要线程池&#xff1f;池化思想常用方法execute()方法submit()方法shutdownisShutdownisTerminatedawaitTerminationshutdownNow创建线程池 七个参数流程JAVA线程池有哪几种类型?线程池常用的阻塞队列有哪些?源码中线程池是怎么复用线程的?如何合理配置线程池…

EMQX Cloud 自定义函数实现多种 IoT 数据形式的灵活转化

物联网场景中&#xff0c;各类设备终端的种类繁杂&#xff0c;所使用的通信协议各异&#xff0c;从而使得应用层的数据格式也各不相同。为了帮助用户实现统一数据格式&#xff0c;EMQX Cloud 最近推出了自定义函数功能&#xff1a;根据用户自定义的脚本对设备上报的数据进行预处…

上美股份在港交所上市:预计全年利润下滑,一叶子收入持续走低

12月22日&#xff0c;上海上美化妆品股份有限公司&#xff08;HK:02145&#xff0c;下称“上美股份”&#xff09;在港交所上市。本次上市&#xff0c;上美股份的发行价格为25.20港元/股&#xff0c;为此前发行区间的最低值。据此计算&#xff0c;上美股份的募资总额约为9.31亿…

CDH6.3.2集成Apache Atlas2.1.0

1 环境准备 1.1 CDH6.3.2 环境搭建 参考文档如下 Cloudera Manager安装CDH6教程-&#xff08;一&#xff09;虚拟环境安装配置 Cloudera Manager安装CDH6教程-&#xff08;二&#xff09;搭建Cloudera和CDH6 CM和CDH在安装的时候遇到的问题 CDH6.3.2 各组件版本 1.2 apa…

火爆“有机新消费”驶入酱油赛道 好记打造我国有机酱油行业领导品牌

根据观研报告网发布的《2022年中国有机酱油市场分析报告-市场竞争策略与发展动向前瞻》显示&#xff0c;有机酱油是指采用有机农作物为原料酿制的酱油。有机酱油含有浓郁的酱香和脂香&#xff0c;是一种不可多得的上等调味品&#xff0c;适合于蘸食&#xff0c;红烧&#xff0c…

以技术创新践行社会责任,欧科云链斩获界面新闻年度双项大奖

12月20日&#xff0c;欧科云链凭借在区块链技术领域的创新&#xff0c;与腾讯、宁德时代和埃森哲等各领域领先企业一同荣获“2022好公司行业领先大奖”。 12月21日&#xff0c;欧科云链以区块链科技之力积极践行社会责任&#xff0c;绽放商业向善的力量&#xff0c;与茅台、蚂蚁…