如何在Chrome一键禁用全部通知并保留白名单?

功能定位:为什么需要“一键禁用+白名单”
Chrome 默认采用“逐站点询问”策略,每遇新域都弹一次授权横幅。对日开 50+ 域的开发者或运营者,手动点“阻止”堪比打地鼠;一旦误点“允许”,广告、营销推送便混进系统通知中心,干扰专注。Chrome 133 起,通知权限仍归属站点设置,未提供官方“全局开关”,但可通过“批量移除+例外豁免”实现等同效果:先一键清空既有授权,再为真正需要即时提醒的站点(Gmail、Meet、内网运维台)单独放行,兼顾干净与必要。
与“系统级关闭”相比,该方案只影响浏览器层,不会把 PWA 消息、日历网页提醒一并掐掉;与扩展拦截相比,无需额外进程,内存零增加,也规避 Manifest V3 规则上限。
前置检查:确认版本与同步策略
截至当前的最新版本(Chrome 133 稳定版)已统一桌面与移动设置格式。若公司策略通过 Google Admin Console 下发 DefaultNotificationsSetting=2(即一律阻止),则下文“批量移除”将无效——界面会提示“您的浏览器由贵组织管理”。此时只能让管理员把目标域加入 NotificationsAllowedForUrls 白名单,个人端无编辑权限。
个人账号务必先关闭“设置 > 同步 > 通知权限”开关,否则一键清理后,其他设备会跟着把白名单也同步删除,出现“刚设完、手机也全禁”的连锁反应。
桌面端最短路径:三步完成
1. 导出当前白名单(可选备份)
地址栏输入 chrome://settings/content/notifications,滚动到“允许发送通知”列表,右上角 ⋮ 菜单 > “导出列表”,保存为 notifications_allow.txt。若日后误删,可对照手工回添。
2. 一键移除全部授权
仍在同一页面,点击“不允许发送通知”右侧的“添加”按钮下方的小字链接 “删除所有现有网站的权限”(Chrome 133 中文版文案)。确认后,列表瞬间归零,等同于一次性把几百条站点记录标记为 BLOCK。
警告
此动作不可逆,且不会同步到 Google 云端“撤消”按钮;若误点,只能手动把站点重新打开并逐条放行。
3. 回添真正需要的域
在“允许发送通知”栏点击“添加”,输入主域名即可,子域会自动继承。例如:
- mail.google.com(Gmail 新邮件提醒)
- teams.microsoft.com(Web 版 Teams 来电)
- grafana.corp.example(内网告警)
建议只保留日交互 ≥1 次且需即时响应的站点;营销、资讯类一律不放行,减少注意力碎片。
Android/iOS 端操作差异
移动端没有“删除所有”按钮,需借“存储”间接实现。路径:设置 > 隐私与安全 > 删除浏览数据 > 高级,仅勾选“站点设置”,时间范围选“全部”,清除后等同于把通知权限重置为默认“询问”。随后再进入 设置 > 通知 > 允许,手动添加白名单域即可。
经验性观察:Android 版 Chrome 若开启“轻量通知”,系统通道仍会被占用,建议同时在系统层关闭 Chrome 的“静默通知”开关,避免图标角标残留。
脚本化批量方案(进阶)
对运维或 QA 需要频繁重建干净环境的场景,可在 chrome://flags/#enable-automation 关闭“由自动化控制”横幅后,用 Chrome DevTools Protocol (CDP) 调用 Browser.setPermission:
# Python 示例(需 pip install chrome-debugger)
import asyncio, chrome_debugger
async def block_all_except():
client = await chrome_debugger.connect()
# 1. 先全部设为 BLOCK
await client.Browser.set_permission(
origin='*', permission='notifications', setting='blocked')
# 2. 为白名单放行
for domain in ['https://mail.google.com',
'https://teams.microsoft.com']:
await client.Browser.set_permission(
origin=domain, permission='notifications', setting='granted')
asyncio.run(block_all_except())
运行前需加启动参数 --remote-debugging-port=9222。该脚本在 CI 镜像里可在数十秒内完成数百次权限写入,比 GUI 点击快两个数量级。
常见副作用与缓解
- PWA 安装后收不到推送? 因 PWA 使用同源 Service Worker,若域被 BLOCK,则即使 App 壳已装,消息也无法弹出。把 PWA 主域加入白名单即可。
- Mac 用户发现“焦点”模式仍弹横幅? 这是系统级“网页推送”通道,需额外在 系统设置 > 通知 > Chrome 里关闭“允许通知”或启用“定时摘要”。Chrome 权限只决定站点能否调用 API,不控制最终展示方式。
- 清除“站点设置”把摄像头/麦克风也重置? 是的,该按钮会一次性清掉所有权限。若仅想处理通知,应使用桌面版的“删除所有现有网站的权限”而非“删除浏览数据”。
验证与观测方法
1. 打开 chrome://internals/notifications,可实时查看已注册 Service Worker 与待显示消息队列。若列表为空且 Permission Status 为 BLOCKED,说明批量禁用成功。
2. 用 Web Push 测试站 自检:先确保 demo 域不在白名单,点击“Subscribe”应返回 NotAllowedError;再把该域加入允许列表,刷新后应能正常订阅并收到测试推送。如此可验证白名单即时生效,无需重启浏览器。
不适用场景清单
| 场景 | 原因 | 替代方案 |
|---|---|---|
| 企业已强制 DefaultNotificationsSetting=2 | 个人端无法编辑 | 让管理员在云端把目标域加入 NotificationsAllowedForUrls |
| 需要按时段动态放行 | Chrome 无计划任务 API | 用 OS 级“专注模式”或第三方扩展(需 MV3 合规) |
| 同一域部分路径需屏蔽 | Chrome 权限最小粒度为“源”,不支持目录 | 在前端代码里用 self.registration.showNotification() 加业务开关 |
最佳实践 5 条速查表
- 先关同步再清权限,防止白名单被多设备级联删除。
- 白名单条目 ≤10 个,定期审计:连续 30 天无推送的域即移除。
- 对内网工具使用完整子域(如 alert.corp.example),避免把根域 *.example 放行进而放行营销站。
- Mac/Win 系统通知中心仍保留“静默”选项,与 Chrome 权限双保险,降低视觉干扰。
- QA 环境用 CDP 脚本初始化,生产环境用 GUI,避免自动化标志触发站点反爬限制。
FAQ(结构化数据)
批量禁用后,之前允许的 PWA 会怎样?
PWA 的 Service Worker 会立即失去通知权限,图标不再弹窗;把对应域重新加入白名单后无需重装,刷新即可恢复。
移动端找不到“删除所有”按钮怎么办?
借“删除浏览数据 > 站点设置”实现等效重置;随后手动在通知设置里回添白名单即可。
清除站点设置会把摄像头权限也清掉吗?
会。若只想处理通知,请使用桌面版专用的“删除所有现有网站的权限”而非“删除浏览数据”。
公司策略强制阻止,还能用白名单吗?
个人端无法修改;需让管理员在 Admin Console 把目标域加入 NotificationsAllowedForUrls 政策。
如何验证站点真的被屏蔽?
用 chrome://internals/notifications 查看 Permission Status 是否为 BLOCKED,或用 Web Push 测试站订阅,应返回 NotAllowedError。
总结与下一步行动
Chrome 并未提供显眼的“全局禁用通知”按钮,但通过“删除所有现有网站的权限”+“例外白名单”可在 30 秒内达成等效结果:一次性屏蔽存量站点,后续仅对高频业务域放行。整套流程零扩展、零性能开销,且兼容 Manifest V3 最严策略。
立即行动:打开 chrome://settings/content/notifications,先导出旧列表备份,再点“删除所有”,最后把不超过 10 个核心域加回。完成后用 Web Push 测试站验证屏蔽效果,并记得每季度复查白名单,防止营销站悄悄混入。如此,通知栏将只保留真正值得被打断的信息,其余噪音一键归零。