Skip to content

bestZwei/LibreWatermark

Repository files navigation

LibreWatermark

LibreWatermark 是一个纯前端、开源的文本盲水印工具,基于零宽字符,无需后端,支持本地和静态网站部署。它让你可以在文本中嵌入隐形水印,追踪抄袭和内容传播。

在线体验

项目特色

  • 纯前端实现:所有水印嵌入与提取均在浏览器本地完成,无需上传文本,保护隐私。
  • 密钥保护与认证码:水印嵌入和提取均需密钥,认证码机制防止伪造和误提取。
  • 分块嵌入,鲁棒性强:支持分块多点嵌入,部分复制粘贴后仍有较高提取概率。
  • 高兼容性:无需依赖后端或第三方库,适合部署到任何静态网站(如 Cloudflare Pages、Vercel、GitHub Pages)。
  • UTF-8 支持:水印内容支持任意语言和符号。
  • 开源透明:算法与实现完全开源,便于安全审计和二次开发。

与其他文字盲水印方案的对比

特性 LibreWatermark 传统零宽水印 语义/句法水印 图片/二维码水印
纯前端/隐私保护 ✔️ 部分
密钥认证与防伪 ✔️ 部分 部分
分块鲁棒性 ✔️ 部分
抗洗稿 部分
易用性/部署 ✔️ ✔️
兼容性(文本平台) 部分 部分 ✔️

为什么需要文本盲水印?

在内容创作领域,抄袭与剽窃屡见不鲜。许多原创作者的劳动成果被无授权转载、洗稿甚至冒名顶替。盲水印技术为原创者提供了一种低成本、隐蔽的内容追踪手段,尤其适合于:

  • 公众号、知乎、博客等平台的原创内容保护
  • 合同、协议等敏感文本的防篡改与溯源
  • 教育、科研资料的版权标记

可取之处:

  • 易用、无需后端、隐私友好,适合个人和小团队。
  • 分块嵌入提升了部分复制场景下的提取概率。
  • 密钥认证机制大幅降低误判和伪造风险。

难点与局限:

  • 零宽字符可能被部分平台或编辑器自动清除,导致水印失效。
  • 对抗“洗稿”能力有限,语义重写后难以追踪。
  • 需要用户妥善保存密钥,否则无法提取水印。
  • 过高密度会导致文本体积膨胀,影响可读性和兼容性。

需求与推广:

  • 随着内容创作门槛降低,原创保护需求日益增长,尤其是自媒体、教育、法律等领域。
  • 推广难点在于用户认知、平台兼容性,以及对抗高级抄袭手段的技术瓶颈。
  • 盲水印应作为版权保护的辅助工具,与法律、平台举报等手段结合使用。

快速开始

  1. 本地使用:下载项目后,直接用浏览器打开 index.html 即可。
  2. 在线部署:支持快速部署到 Github Pages/Cloudflare Pages/Vercel/Netify 平台等

使用方法

嵌入水印

  1. 输入密钥(建议复杂且妥善保存)。
  2. 输入水印内容(如作者名、联系方式、唯一标识等)。
  3. 输入原始文本。
  4. 调整分块大小(越小嵌入越密集,鲁棒性越高,但文本体积增大)。
  5. 点击“生成带水印的文本”,复制结果。

提取水印

  1. 输入嵌入时使用的密钥。
  2. 粘贴可能包含水印的文本。
  3. 点击“尝试提取水印”,若密钥正确且水印未被破坏,将显示水印内容。

技术原理

  • 利用零宽字符(\u200b\u200c)编码二进制数据。
  • 水印数据结构:16位长度前缀 + 水印内容 + 16位密钥认证码。
  • 密钥派生伪随机序列用于加密和定位嵌入位置。
  • 分块嵌入,提升部分复制下的提取概率。
  • 提取时全局扫描零宽字符,逐位尝试解码并校验认证码。

注意事项

  • 零宽字符可能被部分平台或编辑器过滤,建议先测试目标平台兼容性。
  • 重要提示: 如果将带盲水印的文本用于网页、URL、代码块等场景,可能导致链接无法跳转、代码无法运行或渲染异常。请务必在此类场景下先通过“清除零宽字符”功能移除水印!
  • 本工具不适用于对抗语义级“洗稿”。
  • 请妥善保存密钥,遗失后无法提取水印。
  • 仅供学习与研究,严禁用于非法用途。

如何通过盲水印取证抄袭与平台投诉

盲水印是一种隐蔽、低成本的原创内容取证手段,适合用于证明“直接复制粘贴”或“轻微修改后复制”的抄袭行为。实际维权时,建议结合多种证据渠道:

  1. 盲水印提取与截图

    • 使用本工具输入涉嫌抄袭的文本和你的密钥,提取出水印内容,并截图保存提取过程(包括输入文本、密钥、提取结果)。
    • 截图应包含时间、页面完整信息,便于后续举证。
  2. 网页快照/存证

    • 利用第三方网页快照服务(如互联网档案馆、谷歌快照、百度快照等)保存被抄袭页面的快照,防止对方删除或篡改内容。如果对方的托管代码是公开的,也可以在提交记录中找到包含盲水印内容。
    • 可用平台自带的“举报”或“侵权投诉”功能上传快照或存证材料。
  3. 平台原始数据/发布时间

    • 平台的原始发布时间、编辑记录等可作为辅助证据,但需注意:自托管博客等平台的发布时间可以被站长随意修改,法律效力有限。
    • 建议优先使用第三方平台(如知乎、微信公众号、知网等)自动记录的发布时间。
  4. 其他辅助证据

    • 电子邮件、聊天记录、创作过程文档等均可作为原创证明。
    • 若有注册版权、区块链存证等,也可一并提交。
  5. 联合取证与投诉建议

    • 多渠道、多证据联合使用,能显著提升投诉成功率。
    • 向平台投诉时,建议同时提交:
      • 盲水印提取截图
      • 被抄袭页面快照
      • 原创内容的发布时间/存证
      • 其他辅助材料

注意:

  • 盲水印仅能证明“内容曾经属于你”,但无法防止“洗稿”或深度改写后的抄袭。
  • 任何单一证据都有局限性,建议多种方式联合取证。
  • 取证材料请及时保存,防止对方删除或修改内容。

竞品对比

本项目 LibreWatermark 与一些类似的文本盲水印项目(例如数年前 guofei 大佬提供了两个传统零宽字符水印的 Python 项目)在设计原理和功能特性上有所不同。以下是一个简要对比表格,帮助理解本项目的优势所在:

特性 LibreWatermark (JS) 方案一 方案二
实现语言 JavaScript (纯前端) Python Python
部署方式 静态托管友好 (Cloudflare Pages, Vercel, GitHub Pages) 后端脚本/服务 后端脚本/服务
核心嵌入策略 分块嵌入: 将文本分块,在每个块内独立嵌入完整的水印信息。 顺序插入: 遍历文本,根据水印比特决定是否在当前字符后插入。 单点插入: 将完整水印作为一个整体插入到文本的某个位置。
水印比特表示 '\u200B' ('0') 和 '\u200C' ('1') (使用两种零宽字符) '\u200C' ('1'),文本本身代表 ('0') (仅使用一种零宽字符) 使用两种自定义零宽字符 (如 '\u200B', '\u200C' 或其他)
密钥用途 (嵌入) 强依赖: 播种多个 PRNG,影响 Keystream、嵌入位置、认证码 生成。 弱依赖: 仅用于播种全局 random (在实际嵌入代码中未影响核心逻辑)。 中度依赖: 播种 random,用于水印数据的 XOR 混淆。
密钥用途 (提取) 必需且强验证: 用于生成 Keystream 和重新计算/验证认证码,确保密钥和数据完整性匹配。 不使用: 任何人都可以提取,无密钥保护。 必需: 用于对提取到的二进制数据进行 XOR 解密。
认证/验证机制 有且强: 使用独立的、依赖密钥和数据的 32 位认证码,严格校验提取结果。 : 仅依赖提取过程本身。 独立认证码,仅依赖 XOR 解密是否产生“看起来”像有效文本的数据 (弱)。
鲁棒性 (部分复制) : 得益于水印信息在多个块中重复嵌入,复制部分文本也可能包含完整水印块。 很低: 高度依赖提取到完整的、按顺序的嵌入序列。 : 仅当复制内容恰好包含完整的单点水印块时才能提取。
鲁棒性 (文本修改) 较低 (零宽字符固有局限性); 多块嵌入略有帮助。 很低: 任何顺序或字符的改动极易破坏水印结构。 低 (零宽字符固有局限性); 单点嵌入容易被移除或破坏。
原始零宽字符处理 : 嵌入前检测原始文本中的零宽字符,并提供清除选项。 显式处理。 显式处理 (但提供了移除水印的功能)。

LibreWatermark (JS) 项目优势分析:

  • 安全性核心: 与示例 Python 方案一完全不同,LibreWatermark 的设计核心是密钥保护数据完整性验证。通过基于密钥的 Keystream 和强认证码机制,确保只有掌握正确密钥的人才能解密并验证提取到的水印,这为追溯提供了更可靠的证据。
  • 分块嵌入的实用性: 针对用户提出的“复制一小段即可提取”的需求,分块嵌入策略是 Python 方案一和二都未能有效解决的核心痛点。LibreWatermark 通过在文本的多个位置重复嵌入完整水印信息,显著提高了从任意文本片段中成功提取水印的概率,更符合实际使用场景。
  • 纯前端的便捷性: 无需后端支持,整个项目可以在用户的浏览器中运行,并能极其方便地部署到 Cloudflare Pages、Vercel 等静态托管平台,大大降低了部署和维护成本。
  • 鲁棒性提升: 虽然零宽字符水印本身对文本修改敏感,但 LibreWatermark 的多块重复嵌入增加了水印冗余,即使部分区域受损,仍有可能从其他未被破坏的区域成功提取。
  • 友好的交互: 添加了字符计数、密度滑块控制等 UI 元素,以及处理原始文本中零宽字符的提示和清除功能,提高了用户体验和工具的健壮性。

About

AIChatBot生成前端创意项目——文本盲水印工具

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published