指纹

Battery Status API:隐私边界、可用性与稳妥的网页决策

了解 Battery Status API 能提供哪些信息、为何支持有限,以及如何在不建立用户画像的情况下使用电池状态。

文档中心

想直接进入 指纹 文档吗?

这篇文章属于博客内容库。若你要步骤化配置、参考说明和持续更新,请直接进入对应 docs 分区。

Battery Status API 可以报告浏览器当前的充电状态、电量以及预计充电或放电时间。它是可选且支持有限的能力信号,不是设备身份,也不能保证会话还能持续多久。应用应先做特性检测,保留可用的默认路径,并且只把结果用于可撤销、用户能理解的体验决策。

Battery Status API 的可用性、本地决策与回退流程

Battery Status API 提供什么

当浏览器暴露 navigator.getBattery() 时,应用可以调用它。返回的 BatteryManager 可能提供 charging、level、chargingTime 和 dischargingTime,并提供状态变化事件。这些值描述浏览器当前看到的电源状态,不是硬件清单、精确的剩余使用时间保证,也不是电池健康度测量。

这些值会在一次访问期间变化,也可能因浏览器策略而不可用、被取整或受到其他限制。应把它们当作当前任务的提示。例如设备未充电时,页面可以推迟可选动画或降低后台刷新频率,但不应删除必需内容,也不应据此推断使用者身份。

把不可用当作正常兼容分支

MDN 将 Battery Status API 标为支持有限,因此生产页面不能假定存在 navigator.getBattery,也不能假定 Promise 一定成功。支持情况可能随浏览器、版本、上下文和用户代理策略变化。应先确认接口是否存在,处理拒绝,并在没有值时继续使用同一个基础体验。

不要用浏览器名称代替特性检测。测试产品真正需要的行为:API 缺失、值发生变化或请求失败时,页面仍然可用。浏览器能力指南也介绍了对可选 API 采用回退优先的方法。

做出小而可撤销的产品决策

先设计不依赖电池数据的基础体验。如果有结果,再在少量策略中选择,例如正常模式或减少后台工作的模式。导航、表单、媒体替代内容和无障碍控件都应保留。如果变化会影响数据传输、质量或等待时间,应使用普通产品语言说明,并在适当时让用户选择。

电池状态不应控制授权、计费、账户恢复或必需请求。服务器不应依赖可能缺失、且会在请求之间变化的 JavaScript 电池值。如果用户明确选择了省流量或减少效果模式,应发送这个选择,而不是原始电池字段。

隐私边界与数据最小化

电池读数与其他信号结合时可能增加指纹识别风险。只在需要它的决策范围内使用,并在页面选定策略后丢弃原始值。默认不要把 level、充电状态或时间值加入账户标识符、URL、分析标签或长期支持记录。

运维日志通常只需要记录已选策略和结果,例如 power_policy=reduced 以及可选任务是否完成。如果支持个案确实需要更多细节,应说明用途、限制访问、设置较短的保留期限,并在个案结束时删除字段。浏览器隐私基础指南介绍了更广泛的数据最小化做法。

测试回退,而不是测试某个电量数值

测试应覆盖 API 未定义、getBattery() 被拒绝、level 或 charging 变化,以及只提供基础路径的浏览器。断言必需内容和控件仍可用、可选工作可以取消、状态变化后用户可以恢复。不要断言某个设备必须返回某个百分比或时间。

每个分支都要尊重用户意图和无障碍要求。减少模式可以推迟预览或降低后台频率,但必须保留任务含义,并提供清晰的继续方式。避免重试循环,也不要要求用户削弱浏览器隐私设置来启用可选增强功能。

电池接口描述的是浏览上下文看到的状态,而不是操作系统的承诺。

浏览器可能返回稍旧的值,也可能有意降低精度。

代码应能容忍刚读取的值立即变化。

异步结果到达前,默认行为也必须正确。

Promise 被拒绝和方法不存在,都表示增强功能暂时不可用。

这种结果不应变成阻塞页面的警告。

页面重新可见时可以重新计算短期决策。

不要为了得到缺失信号而持续重复请求。

私密窗口、嵌入框架和托管配置都可能改变可用性。

应描述已测试的行为,不要承诺整个浏览器系列都支持。

可选预览缺失时,文章和控件仍应正常加载。

长操作可以提供暂停或降低质量的选择。

保存已输入的数据,并让恢复操作可重复执行。

充电状态变化时,只重新评估受影响的可选工作。

不要在交互中途静默改变内容或质量。

客户端错误报告和第三方库也可能复制电池字段。

离开页面的事件应采用字段允许列表。

单个标签页的策略留在内存中即可。

缺少接口时继续普通体验,可以减少形成电源状态历史的机会。

来源

#Battery Status API#电池状态#隐私#能力检测

让 BotBrowser 从研究走向生产

先用这些指南理解模型,再进入跨平台验证、隔离上下文和面向规模化的浏览器部署。