Overview
ln-obfuscator binds to any DOM element carrying data-ln-obfuscator (<span>, <p>, <a>, table cells) and automatically deobfuscates its text nodes and href attributes at runtime. It operates with zero configuration using ROT13 as default, and supports universal Base64 and XOR ciphers via optional attributes for international scripts while maintaining an internal idempotency guard without DOM pollution.
It prevents automated email harvesters, telephone scrapers, and bot crawlers from extracting raw contact info and proprietary text from static HTML responses.
| Attribute | Element | Default | Description |
|---|---|---|---|
data-ln-obfuscator |
Any element | 13 |
Triggers deobfuscation. Optional integer sets ROT shift (1–25). If empty, defaults to ROT13. |
data-ln-obfuscator-codec |
Any element | "rot" |
Selects cipher algorithm: "rot" (letters/digits Caesar), "base64" (universal UTF-8), or "xor" (keyed symmetric). |
data-ln-obfuscator-key |
Any element | "ln-ashlar" |
Custom secret key for "xor" codec. Providing this attribute automatically activates the XOR codec. |
Static Examples (Authored in HTML)
These elements were delivered in the raw HTML payload as obfuscated strings. ln-obfuscator executed automatically upon page boot and hydrated them into readable text and actionable links:
Email Protection (Default ROT13)
Contact us at: pbagnpg@rknzcyr.pbz
Telephone Protection (Digits Rotated)
Direct phone: +612-03-456-789
Universal Cyrillic (Base64 Codec)
0JrQvtC90YLQsNC60YIg0YLQtdC70LXRhNC+0L06IDA3MCAxMjMgNDU2
Keyed Symmetric XOR (Cyrillic + Symbols)
ARgADgElAT8AAAE4ATLruLPSvsSw4aTwtOCx0KDctKyz37y4+GxSYGRSa4rxqOeN8IHjsfCE5K75
Safe Text-Node Traversal (Preserves Child HTML)
Unlike naive innerHTML replacers that corrupt HTML tag names (e.g. turning <strong> into <fgebat>), ln-obfuscator walks individual text nodes with TreeWalker. Child formatting tags remain 100% intact:
va-yvar pbqr jvgubhg qrfgeblvat na ragver gnt fgehpgher!
Interactive Playground & Dynamic Injection
Test the client-side codec API (window.lnObfuscator.obfuscate / window.lnObfuscator.deobfuscate) across ROT, Base64, and XOR, and verify dynamic DOM injection via MutationObserver:
Live Sandbox Container
When an obfuscated element is appended below, ln-obfuscator's lifecycle observer detects it and deobfuscates it immediately.
Lifecycle Event Telemetry
Listening for ln-obfuscator:deobfuscated on document: