后台线程与离屏画布的一致性和隐私边界
从生命周期、渲染、可访问性和隐私边界出发,设计并检查浏览器后台线程与离屏绘图工作流。
BotBrowser Team
BotBrowser 为文档化的 Canvas 读回表面提供基于 profile 的保护,但不会替代 origin-clean 安全和可访问性责任,也不保证每个宿主上的 Worker 调度或像素完全一致。Worker 可以把 JavaScript 从主线程移开。支持的浏览器还可以让 OffscreenCanvas 在没有可见 canvas 元素的线程中完成绘制。两者有助于保持页面响应,但也增加了需要单独检查的生命周期和渲染边界。
分清各自责任
页面负责用户交互、可见状态、回退内容和取消操作。专用 Worker 负责分配给它的计算。OffscreenCanvas 是可以在支持时转移给 Worker 的绘图表面。转移改变的是所有权,不代表不同浏览器、操作系统、图形后端或字体集合会产生完全相同的像素。
明确输入、消息类型、预期结果、错误状态、取消和清理。Worker 不是安全边界:同源代码仍遵守同源权限,发送给 Worker 的数据也应限制在任务所需范围内。
使用完整且可见的流程
空白页面只能证明脚本启动。应测试完整流程:创建 Worker,转移或创建绘图表面,发送代表性的合成输入,等待 ready 或 error 消息,显示结果,并按正常生命周期终止 Worker。文本状态或其他可访问替代应与视觉结果保持同步。
比较环境时固定应用版本、浏览器版本、profile family、viewport、设备缩放、路由和存储策略。用普通语言记录可见完成状态,例如“图表可读,摘要信息可用”。
理解转移和生命周期
HTMLCanvasElement.transferControlToOffscreen() 会把 canvas 的控制权转移到 OffscreenCanvas。转移后,原元素不能继续控制该画布。Worker 可通过带 transfer list 的消息接收转移对象。应把这次交接视为单向操作,并为重复初始化定义明确的错误或无操作行为。
Worker 可能在绘制前、消息传输中或关闭时失败。处理 error、messageerror、应用级错误消息和取消。流程结束后释放引用并终止 Worker;终止后继续发送消息的页面应报告清晰失败,而不是静默丢失工作。
让渲染和可访问性保持一致
Canvas 像素不能替代文字、表格数据、键盘交互或已播报的状态。提供相邻的可访问名称、摘要或数据视图,并在 Worker 报告新状态时更新它。OffscreenCanvas 不可用时,使用文档化回退,例如主线程普通 canvas、图片或数据表。
渲染会受浏览器实现、设备缩放、字体、色彩管理和图形后端影响。应按支持的能力和用户可见结果验收。除非产品明确支持并验证,否则不要承诺不同宿主逐像素一致。
隐私与 origin 边界
Worker 不会移除 origin 规则。跨 origin 图片或媒体可能使 canvas 不再 origin-clean,浏览器安全规则也会限制像素读回。应向用户解释这一边界,而不是尝试绕过。除非业务确有需要,不要把原始像素、账户数据或稳定标识发送给 Worker。
BotBrowser 为文档化的 Canvas 读回表面提供基于 profile 的确定性保护。这有助于支持的 profile 在获授权流程中得到可复现结果,但不会替代浏览器的 origin-clean 安全模型、可访问性方案,也不保证所有宿主上的 Worker 调度和渲染完全一致。BotBrowser profile 也不代表匿名或一定被网站接受。
为浏览器版本、目标平台、headless 或 headed 模式、图形路径、Worker 支持、OffscreenCanvas 支持、回退路径、存储策略和可见完成状态分别建立行。浏览器更新、profile 刷新、宿主镜像变化、图形变化或应用版本变化后重新检查已接受行。
若某行不同,先分类可见结果:能力缺失、应用错误、支持边界内的渲染差异,或回退未完成。保留已接受版本,由负责人重复同一流程并记录决定。
实用清单
- 定义 Worker 消息、取消、错误和清理。
- 测试所有权转移以及不可用时的回退。
- 让视觉输出与可访问状态同步。
- 把 origin-clean 限制视为浏览器安全边界。
- 分开说明 BotBrowser 能力和应用自身责任。
- 记录支持的浏览器、profile、宿主、图形路径和可见结果。
公开来源:WHATWG HTML Canvas、MDN Web Workers API、MDN OffscreenCanvas 和 BotBrowser Canvas protection。
相关内容:跨 realm 浏览器一致性与隐私 和 Canvas API 用途与隐私。
Sources
WHATWG HTML Canvas、MDN Web Workers API、MDN OffscreenCanvas 和 BotBrowser Canvas protection。
WHATWG HTML Canvas: https://html.spec.whatwg.org/multipage/canvas.html
MDN Web Workers API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API
MDN OffscreenCanvas: https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas
BotBrowser Canvas protection: https://botbrowser.io/docs/fingerprint/canvas/