谷歌浏览器如何禁用网页调用Idle_Detection_谷歌浏览器用户空闲状态检测屏蔽
禁用 Idle Detection API 并屏蔽 visibilityState 可彻底阻止网页检测用户空闲状态:在 chrome://flags 中禁用“Enable idle detection API”,再通过 Tampermonkey 脚本在 document-start 阶段删除 IdleDetector、锁定 visibilityState 为 'visible'、hidden 为 false,并劫持 addEventListener 防止 visibilitychange 监听。
当网页通过 Idle Detection API 检测你是否离开电脑、切换标签或屏幕熄灭时,它可能自动暂停课程、断开会议、锁定考试系统或标记为“挂机”。这类检测不依赖鼠标键盘监听,而是调用浏览器原生 API,必须从底层屏蔽才能真正失效。
禁用 Idle Detection API 的核心开关
Chrome 未提供图形化开关,但存在一个实验性标志位,可直接关闭整个 API 的可用性。该设置生效后,'IdleDetector' in window 将恒为 false,任何网站调用 new IdleDetector() 都会抛出 ReferenceError: IdleDetector is not defined,彻底阻断初始化路径。
1、在地址栏输入 chrome://flags/ → 回车进入实验性功能页。
2、在页面顶部搜索框中键入 idle detection(注意空格,大小写不敏感)。
3、找到名为 Enable idle detection API 的条目 → 点击右侧下拉菜单,选择 Disabled。
4、点击右下角 Relaunch 按钮重启浏览器。重启后该 API 即不可用,无需额外脚本或扩展干预。
强制覆盖 visibilityState 辅助屏蔽
部分网站会组合使用 visibilityState 和 IdleDetector 做双重判断。即使 Idle API 被禁用,它们仍可能通过页面是否可见来推断空闲状态。因此需同步干扰 visibility API,防止 fallback 逻辑生效。
方法一:通过开发者工具临时注入(仅当前标签页有效)
1、打开目标网页 → 按 F12 打开开发者工具 → 切换到 Console 标签页。
2、粘贴执行以下代码:
Object.defineProperty(document, 'visibilityState', { value: 'visible', writable: false });
Object.defineProperty(document, 'hidden', { value: false, writable: false });
Comet AI 浏览器
下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。
下载
3、刷新页面。此时 document.visibilityState 永远返回 'visible',document.hidden 永远为 false,visibilitychange 事件监听器将无法捕获真实状态变化。
注意:这段代码必须在页面加载完成前执行(建议在 F12 后立即粘贴),否则部分网站已在 load 事件中完成状态快照,覆盖无效。
使用 Tampermonkey 持久化屏蔽所有页面
若需长期、自动、跨页面生效,且避免每次手动操作,Tampermonkey 是最稳定的选择。它能在 DOM 构建初期就劫持关键属性,比控制台注入更早、更彻底。
第一步:安装与创建脚本
1、前往 Chrome 网上应用店安装 Tampermonkey 扩展。
第二步:配置防检测逻辑
1、点击浏览器右上角 Tampermonkey 图标 → 选择“创建新脚本”。
2、清空编辑器全部内容,粘贴以下完整脚本:
// ==UserScript==// @name 屏蔽 IdleDetection & Visibility// @namespace http://tampermonkey.net/// @version 1.1// @match *://*/*// @run-at document-start// ==/UserScript==if ('IdleDetector' in window) { delete window.IdleDetector;}Object.defineProperty(document, 'visibilityState', { value: 'visible', writable: false });Object.defineProperty(document, 'hidden', { value: false, writable: false });window.addEventListener = window.addEventListener.toString().includes('visibilitychange') ? () => {} : window.addEventListener;
3、按 Ctrl + S 保存。脚本将在每个页面加载的最早阶段(document-start)运行,确保在任何网站 JS 执行前完成屏蔽。