LibreWatermark 是一个纯前端的文本盲水印工具,利用零宽字符在文本中隐藏信息。它在浏览器中本地运行,无需后端,保护您的隐私。本项目适合用于版权追踪、信息溯源等场景,尤其对防范“直接复制粘贴”或“轻微修改”的抄袭行为有效。
快速入门
本项目是纯前端应用,部署和使用非常简单:
- 本地使用: 下载整个项目文件夹后,直接用现代浏览器打开
index.html
文件即可开始使用。 - 在线部署: 将项目文件上传到任何支持静态网站托管的平台,例如 GitHub Pages, Cloudflare Pages, Vercel 或您自己的 Web 服务器。用户通过访问您的域名即可在线使用。
功能模块详解
LibreWatermark 提供三个主要功能模块,通过页面顶部的标签页切换:
1. 嵌入水印
此功能用于将秘密水印信息嵌入到您的原始文本中。
- 密钥 (A): 输入用于加密和隐藏水印的秘密密钥。这个密钥是提取水印时唯一的凭证!请务必选择一个复杂(避免简单数字或常用词)且妥善保存的密钥。密钥丢失将永远无法提取水印。输入的密钥不会上传到任何服务器。
- 水印内容 (C): 输入您想要隐藏在文本中的实际信息,例如您的署名、网站 URL、联系方式、或一段唯一的标识符(如时间戳、版本号)。水印内容支持任意 UTF-8 字符。水印内容越短越容易嵌入和提取。
- 原始文本 (B): 输入或粘贴您要嵌入水印的原始文章、段落或任何文本内容。请注意:
- 文本长度限制: 原始文本必须达到能容纳至少一个完整水印负载(水印内容+长度前缀+认证码)所需的最小长度。如果文本过短,系统将提示错误并拒绝嵌入。
- 零宽字符检查: 如果原始文本中已经包含零宽字符,可能会干扰水印的嵌入和提取。工具会检测并警告,建议您先切换到“清除零宽字符”标签页将原始文本清理干净后再进行嵌入。
- 水印密度/分块大小: 通过拖动滑块调整。它决定了原始文本被切分成多大的“块”来独立嵌入水印。
- 值越小(例如 100-300): 分块越小,水印信息在文本中重复嵌入的次数越多,分布越密集。这提高了在仅复制一部分文本时提取出完整水印的概率(鲁棒性更好)。但同时会显著增加输出文本的体积(零宽字符数量多)。对于很长的文本,过小的分块可能导致文本急剧膨胀。
- 值越大(例如 1000-2000): 分块越大,水印分布越稀疏。输出文本体积膨胀较小,但从短片段中提取水印的成功率可能会降低。
- 对于长文本(1000字以上),一个合理的经验值通常是原始文本长度的 1/4 到 1/20 之间,或者直接使用默认值 500-1000。
- 生成带水印的文本: 点击此按钮开始嵌入过程。如果输入有误或文本过短,会显示错误或警告提示。成功后,带水印的文本将显示在右侧输出区域。
- 复制结果: 成功生成带水印文本后,点击此按钮可将其复制到系统剪贴板。
重要提示:在嵌入前,请务必通过“清除零宽字符”功能检查并清理原始文本中已有的零宽字符,以避免干扰。
2. 提取水印
此功能用于从可能包含水印的文本中尝试恢复隐藏的信息。
- 密钥 (A): 输入嵌入水印时完全一致的秘密密钥。密钥不匹配将无法正确解密和验证认证码,从而无法成功提取水印。输入的密钥不会上传到任何服务器。
- 包含水印的文本: 粘贴您怀疑包含水印的文本。这可以是原始带水印文本的全部或一部分。
- 尝试提取水印: 点击此按钮。工具将扫描文本中的零宽字符,尝试使用您提供的密钥解锁并验证。
- 成功: 如果密钥正确且零宽字符序列未被严重破坏,成功提取到的水印内容将显示在结果区域。
- 失败: 如果密钥错误、文本中没有零宽字符,或者零宽字符序列因文本修改(增删改)而严重损坏,将无法恢复有效水印。结果区域会显示相应的提示。
提取失败常见原因:密钥不正确 / 文本中不包含零宽字符 / 文本经过大幅修改破坏了水印 / 零宽字符在复制或粘贴过程中被平台过滤移除。
3. 清除零宽字符
此功能提供一个简单的工具,用于移除文本中所有常见的零宽字符。当您怀疑一个文本中包含零宽字符,或者需要在嵌入水印前清理原始文本时非常有用。
- 待清除文本: 输入或粘贴您要清理的文本。
- 清除零宽字符: 点击此按钮。工具会扫描文本,移除所有零宽字符。
- 清除结果: 移除零宽字符后的干净文本将显示在此区域。如果原始文本中没有零宽字符,输出将与输入一致。
- 复制结果: 复制清理后的文本。
清除功能会移除所有常见的零宽字符,包括可能存在的盲水印! 请谨慎使用,以免无意中破坏水印。
需要注意的关键事项
- 零宽字符特性与兼容性: 零宽字符本身是 Unicode 标准的一部分,但在不同的编辑器、浏览器、数据库、平台(如社交媒体、论坛、代码编辑器等)中,它们的支持和处理方式差异巨大。有些平台可能会自动过滤、删除或替换它们。因此,零宽字符盲水印的兼容性是其最大的不确定性来源。 务必在计划使用的具体场景下进行测试。
- 抗修改能力弱: 零宽字符水印是对文本进行微小修改实现的。任何结构的改变(增删改字符、调整顺序)都可能破坏零宽字符的排列或位置,导致水印提取失败。它不能应对人类进行语义级改写(“洗稿”)的抄袭行为。
- 密钥安全: 密钥是提取水印的关键。丢失密钥=水印报废。请像管理密码一样管理您的 LibreWatermark 密钥。本项目纯前端运行,密钥不会传输或存储在任何服务器。
- 短文本限制: 水印负载(包含内容的长度信息和认证信息)有一个最小的比特数需求。原始文本的长度必须至少能提供与负载比特数相等的插入位置(文本长度 + 1)才能保证一个完整负载的嵌入和提取。
- 性能: 对于超长的文本文件(例如几十万、上百万字),嵌入和提取过程可能需要显著的计算时间,并可能导致浏览器短暂卡顿。
免责声明
本项目 (LibreWatermark) 仅为技术探讨和学习交流目的开源。开发者不对使用本项目产生的任何后果负责。零宽字符的特性决定了其局限性(如易丢失、抗修改弱等),本项目的水印技术不提供任何法律保障。用户应自行承担使用本工具的风险。严禁将本项目用于任何非法、侵犯他人权益或违反法律法规的活动。