benjamin-thiers/link-obfuscator

GitHub: benjamin-thiers/link-obfuscator

一个零依赖的原生 JS 库,通过在用户首次交互时才注入真实链接,实现对爬虫和自动化工具的链接混淆与 SEO 隐藏。

Stars: 0 | Forks: 0

# Link Obfuscator (原生 JS) 一个小巧、零依赖的 JavaScript 库,它在用户与页面进行首次人类交互时,将服务端编码的链接替换为真实的 `` 标签。 提取自 WordPress 插件 [Link Obfuscator par Benjamin Thiers](https://wordpress.org/plugins/bthiers-link-obfuscator),以便在 WordPress 之外的环境(静态网站、Shopify、SPA 等)中使用。 ## ⚠️ 实际工作原理(使用前请阅读) 本库**不**进行伪装(没有 user-agent 或 IP 检测——每个访问者获取的代码完全相同)。其机制有所不同: 1. 你的后端(使用任何语言)渲染一个 `` 而不是 ``,其中 URL 被编码(base64、ROT13、十六进制等)并存储在 `data-d` 属性中。 2. 本库仅在页面发生**首次人类交互**(mousemove、click、touch、keyboard focus)后,才会注入真实的 ``。 3. 爬虫(包括 Googlebot,即使开启了 JS 渲染)通常不会触发这些交互事件——因此它们永远无法看到真实的链接目的地。 **已知的限制与风险:** - 如果访问者端禁用了 JavaScript 则无法工作(链接保持可见,但无法点击)。 - 这不是一种安全机制:编码(base64/ROT13/十六进制)并非旨在保护敏感数据,而仅仅是为了避免 URL 以明文形式被索引。 - 除了 Google 之外,还可用于向其他自动化工具(安全扫描器、链接审查工具)隐藏目的地。 请在充分了解这些情况的前提下使用本库。 ## 安装 ``` ``` 零依赖,无需构建步骤。 ## 在服务端生成 span 本库仅处理客户端的解码/注入。你需要使用你所使用的任何语言,在服务端生成 `` 元素。伪代码示例: ``` span.data-obf = "b64" span.data-d = base64_encode(url) span.data-anchor = "Visible text" span.data-t = "_blank" // optional span.data-rel = "nofollow" // optional span.data-cls = "my-class" // optional ``` 支持的编码方式(`data-obf` 的值):`b64`(base64)、`cc`(charcode / JSON 数组)、`r13`(ROT13)、`hex`(十六进制)、`rdr`(JSON 分块数组)。 ## 最简 HTML 示例 ``` My link ``` 当页面上任意位置首次发生 `mousemove`、`click`、`touchstart`、`keydown` 或 `focusin` 事件时,所有 `[data-obf]` 的 span 都将被替换为真实的 `` 元素。 ## API ``` LinkObfuscator.init(); // force-inject all spans immediately LinkObfuscator.inject(spanEl); // force-inject one specific span ``` ## 演示 查看 [`demo.html`](demo.html) 获取实时交互测试页面——直接在浏览器中打开即可,无需服务器。 ## 许可证 GPL-2.0-or-later — 参见 [LICENSE](LICENSE)。 ## 作者 Benjamin Thiers — https://www.benjaminthiers.net/
标签:CMS安全, JavaScript, SEO优化, Syscall, Web开发, 反爬虫, 后端开发, 多模态安全, 数据可视化, 链接混淆