录制与隐私设置
浏览器客户端将 Cloud 传输设置与 rrweb 录制器设置结合在一起。在生产页面启用捕获之前,请先设置隐私规则,然后测试存储后的回放,而不是想当然地认为实时页面和回放会暴露相同的数据。
录制治理与生命周期
技术脱敏只是生产环境录制策略的一部分。在捕获之前,请为每个页面和数据类别建立同意或其他合法依据。为录制和回放定义访问控制,将访问权限限制为授权的工作区角色,记录访问权限是如何审查的,并确保操作员仅将录制用于批准的目的。
请根据你的 rrweb Cloud 套餐和工作区可用的控制以及你自己的策略来选择保留期限;不要假设存在统一的默认值。定义你的团队如何处理适用的录制访问和删除请求,包括按应用元数据分组的录制。
当某人撤回同意时,立即停止捕获并防止自动重新开始。对于浏览器客户端,stop(true) 会停止录制并清除下次开始时存储的录制 ID。撤回本身并不会删除已存储的录制,因此请运行你的策略所要求的单独删除工作流。
哪个层拥有某个录制选项?
浏览器客户端拥有的选项控制 Cloud 集成:publicApiKey、serverUrl、includePii、meta、autostart、jsSource 和 jsEntrypoint。客户端还拥有录制 ID、WebSocket 传输和 HTTP 回退。
所有其他 rrweb 录制选项都是转发选项,会传递给 record()。这包括屏蔽、脱敏、采样、canvas、iframe、快照、样式表和插件设置。浏览器客户端会用其 Cloud 传输替换 emit,但在提供了自定义 emit 回调时仍会调用它。
rrweb Cloud 默认会录制什么?
浏览器客户端仅在你未提供相应的 rrweb 选项时应用以下 Cloud 默认值:
maskAllInputs: true对所有支持的输入类型进行脱敏,包括密码字段。slimDOMOptions: 'all'移除非必要的 DOM 数据以减少存储体积。inlineStylesheet: true保留存储回放所需的样式表规则。
其余默认值来自 rrweb。带有 rr-block 类的元素会被屏蔽,带有 rr-mask 类的文本会被脱敏,即使你显式设置 maskAllInputs: false 而不更改 maskInputOptions,密码输入仍会保持脱敏状态。Canvas 录制和跨源 iframe 录制默认关闭。
你传递的选项优先。请将这种灵活性视为一项隐私决策:覆盖安全的默认值可能会增加捕获的数据量。
屏蔽或脱敏敏感内容
当某个区域的内容和 DOM 结构都不应被录制时,使用 blockClass 或 blockSelector。当回放需要结构但不需要原始值时,使用 maskTextClass、maskTextSelector、maskAllInputs 或 maskInputOptions。
start({
publicApiKey: 'public_key_rr_your_key',
blockSelector: '[data-private]',
maskTextSelector: '[data-mask]',
maskAllInputs: true,
});屏蔽和脱敏直接受支持。诸如 maskTextFn 和 maskInputFn 之类的自定义函数也会被转发,但需要应用测试,因为选择器或回调可能会遗漏动态渲染的内容。
请继续阅读 rrweb Library 的隐私指南,了解这些控制的完整行为,然后用有代表性的合成数据验证 Cloud 回放。
通过采样减少存储量
sampling 选项可以减少 mousemove、scroll、input、media 和 canvas 事件的数量。快照 checkout 选项可以添加周期性全量快照,以更多的存储换取更具弹性的回放边界。这些选项直接受支持并被转发,没有 Cloud 特定的采样层。
请继续阅读 rrweb Library 的录制选项和存储优化配方。一次更改一个信号,并检查生成的回放是否仍能回答你的调试问题。
图像、音频和视频会被捕获吗?
在当前稳定的浏览器客户端和 rrweb 录制器中,captureAssets 尚不受支持。它没有图像、音频或视频默认值,并且传递 captureAssets 对象不会启用资产字节捕获。请使用下方受支持的录制器选项,并在采用未来的资产 API 前重新查阅版本化的软件包文档。
inlineStylesheet: true是浏览器客户端的默认值。它捕获回放所需的可访问样式表规则,这会增加快照体积,但可以避免完全依赖样式表今后保持不变。inlineImages: false是 rrweb 稳定版的默认值。回放通常保留图像 URL,而不是嵌入图像字节。已废弃的inlineImages: true选项会尝试进行 data-URL 捕获,这会大幅增加存储体积,并且由于浏览器安全规则,对于跨源或受保护的图像可能会失败。recordCanvas: false是 rrweb 稳定版的默认值。只有经过下文 Canvas 部分所述的隐私、体积和兼容性审查后,才应启用它。- 对于音频和视频元素,rrweb 会录制元素属性、播放状态、时间、音量和用户媒体交互。它不会存储音频和视频的媒体字节。因此,回放取决于所引用的媒体是否仍然可访问且已获得授权。
资产 URL 本身可能包含标识符,并且内联图像或 canvas 像素可能泄露 DOM 脱敏无法覆盖的敏感内容。请屏蔽敏感媒体区域,测试需要身份验证和跨源的资产,并在推出前测量实际的录制大小。
请继续阅读 rrweb Library 的录制选项,了解当前支持的 inlineStylesheet、inlineImages、recordCanvas 和媒体行为。目前 Library 中没有 captureAssets 配方,因为该选项不属于稳定录制器 API。
录制 canvas 内容
rrweb 支持 canvas 录制,但默认禁用。启用 recordCanvas 可能会增加大量数据,并可能捕获敏感像素、绘图、图表或文档。WebGL 上下文可能需要进一步的兼容性工作,而由于浏览器安全规则阻止读取它们的像素,受保护或跨源的媒体可能仍然不可用。
启用前请继续阅读 rrweb Library 的 canvas 配方,了解所需的选项和限制。这是一个额外的集成步骤,而不是自动的 Cloud 功能。
Iframe 会被录制吗?
在正常的浏览器访问规则下,可以观察同源 iframe 内容。跨源 iframe 内容默认不受支持:父页面无法检查来自其他源的文档。recordCrossOriginIframes 要求 rrweb 在子框架中运行,并且需要在你控制的源上进行协调配置。
启用前请继续阅读 rrweb Library 的跨源 iframe 配方。你无法插桩(注入 rrweb)的第三方框架仍然不受支持;屏蔽该框架或接受占位符。
Console 日志和网络请求会被录制吗?
只有在启用了 console 和网络插件时才会;默认情况下永远不会捕获负载正文。
浏览器客户端不启用 console 和网络捕获。两者都需要 rrweb 插件,因此需要额外的集成步骤。日志、请求体、响应体、标头、URL 和错误对象可能包含令牌或个人数据;在这些内容成为 rrweb 事件之前,请对其进行脱敏或加入允许列表。
请继续阅读 rrweb Library 的 console 配方和网络配方。Cloud 会存储它接收到的插件事件,但不会推断哪些负载字段是安全的。
为录制添加自定义事件
自定义事件通过浏览器客户端的 addCustomEvent(tag, payload) 辅助函数或 rrweb 的等效 API 获得支持。请保持负载较小,对其结构进行版本控制,并排除机密信息(如密钥、令牌)和原始用户输入。
请继续阅读 rrweb Library 的自定义事件配方,了解事件语义。普通自定义事件不需要插件,但如果你的回放 UI 需要以特殊方式渲染它们,则需要额外的集成步骤。