You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询Electron macOS无需隐私授权统计鼠标点击与键盘按键的方法

针对Electron应用macOS隐私授权问题的解答

首先得明确一个核心事实:从macOS Catalina(10.15)开始,系统的隐私保护框架强制要求所有监听全局键盘/鼠标输入的应用必须获得用户手动授予的「辅助功能」权限——这是苹果为了防止恶意软件窃取用户输入设计的安全机制,没有合法的方法可以完全绕过这个要求。

不过我们可以根据你的需求场景,给出不同的解决方案:

场景1:仅统计应用内的鼠标点击和键盘按键

这是最理想的情况,完全不需要系统级权限!你之前用gkm可能是默认做了全局监听,但如果只需要统计自己应用内的操作,直接用Electron自带的事件监听即可:

渲染进程中直接监听(最简单)

在你的渲染页面对应的JS文件里添加事件监听:

// 初始化计数
let mouseClickCount = 0;
let keyPressCount = 0;

// 监听鼠标点击
document.addEventListener('click', () => {
  mouseClickCount++;
  console.log(`应用内鼠标点击次数:${mouseClickCount}`);
});

// 监听键盘按键(排除按住不放的重复触发)
document.addEventListener('keydown', (e) => {
  if (!e.repeat) {
    keyPressCount++;
    console.log(`应用内键盘按键次数:${keyPressCount}`);
  }
});

如果需要在主进程中获取这些计数,通过Electron的IPC机制传递数据即可,全程不需要涉及系统权限。

场景2:需要统计全局(应用外)的输入操作

这种情况下,必须获得用户的「辅助功能」授权,没有绕过的合法途径。但我们可以优化授权流程,让用户操作更顺畅:

  1. 提前检测权限状态:使用Electron相关工具(比如electron-accessibility包)在应用启动时检测是否已获得权限,如果未授权,弹出清晰的引导提示。
  2. 直接跳转设置页面:通过Electron的shell模块直接打开系统隐私设置的对应页面,减少用户操作步骤:
const { shell } = require('electron');

// 可在弹窗按钮点击或自动触发跳转
shell.openExternal('x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility');
  1. 清晰的权限说明:在提示用户授权时,明确说明为什么需要这个权限(比如「我们需要统计您的全局输入行为以提供XX功能」),提升用户的授权意愿。

总结

  • 若仅需应用内统计:放弃gkm的全局监听,改用应用内DOM/Electron事件监听,无需任何系统授权。
  • 若需要全局统计:必须引导用户手动授予「辅助功能」权限,这是macOS的强制安全要求,无法绕过。

内容的提问来源于stack exchange,提问作者P. James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:33:38