Зміст
Захист оригінальності тексту є дуже важливим для деяких сайтів, тому вони використовують різноманітні методи та лайфхаки, щоб заборонити саму можливість копіювання тексту на єкрані. Такий підхід хоч здебільного і працює, але є дуже агресивним і не зовсім єтичним по відношенню до звичайного користувача (він не може скопіювати текст, коли це дійсно йому потрібно: адресу, телефон чи цитату; відключається контекстне меню в браузері і т.д.).
Найбільш поширені методи захисту від копіювання
Заборона копіювання тексту в буфер обміну
<body oncopy="return false">
Заборона виділення тексту
<body onselectstart="return false">
Заборона використання правої кнопки миші
<body oncontextmenu="return false">
також заборона гарячих клавіш типу Ctrl+C та Ctrl+V та інші методи, які в тій чи інакшій ситуації працюють, але спонукають недоброзичливих користувачів вашого сайту шукати шляхи обійти заборону.
Метод транслітерації
Маловідомий, але цікавий метод спотворення оригінальності скопійованого тексту – метод транслітерації! Він нічого не забороняє: користувач який копіює текст з сайту жодним чином не відчуває дискомфорту і ні про що не здогадується 🙂
Метод транслітерації – це перетворення символів однієї системи письма в іншу на основі фонетичної схожості. Іншими словами, якщо деякі кириличні літери замінити їх латинськими аналогами, то візуально користувач нічого не помітить, а от пошукова система, яка індексує такий текст, безумовно буде не у захваті (вона хоч і зможе його прочитати, та навряд чи буде його нормально ранжувати). Транслітерація відбувається непомітно у браузері користувача, коли той копіює текст з сторінки.
Реалізація на JavaScript
Цей скрипт необхідно вставити на всі сторінки вашого сайту, де планується реалізувати захист від копіювання (перед тегом, що закриває </body>):
<script>function badText() { var selection = window.getSelection().toString(); var fromChars = "С с Е е Т О о р Р А а Н К Х х В М y і І З 3".split(/ +/g); var toChars = "C c E e T O o p P A a H K X x B M у i I 3 З".split(/ +/g); for (var i = 0; i < fromChars.length; i++) { selection = selection.split(fromChars[i]).join(toChars[i]); } var tempElement = document.createElement('div'); tempElement.style.position = 'absolute'; tempElement.style.left = '-99999px'; document.body.appendChild(tempElement); tempElement.innerHTML = selection; var range = document.createRange(); range.selectNodeContents(tempElement); var selectionObj = window.getSelection(); selectionObj.removeAllRanges(); selectionObj.addRange(range); setTimeout(function() { document.body.removeChild(tempElement); }, 0); } document.oncopy = badText;</script>
Логіка роботи скрипта: створюється тимчасовий невидимий div
у який переноситься виділений на сторінці текст; у тексті кириличні літери заміщуються латинськими аналогами; перероблений текст копіюється в буфер обміну замість оригінального скопійованого тексту.
Як це працює на практиці?
Користувач на вашому сайті мишкою виділяє необхідний йому текст на сторінці і копіює його в буфер обміну для подальшої обробки. У буфері обміну у нього буде спотворений транслітераціює текст. Візуально він нічого не помітить, але будь-яка перевірка орфографії такого тексту виявить усі недоліки.
Приклад спотвореного через буфер обміну тексту
Важливо! Використовуйте такий захист (спотвореного транслітераціює тексту) тільки в тому випадку, якщо хочете заборонити користувачам Вашого сайту розміщувати текст Вашого сайту на інших площадках в Інтернеті. В цьому випадку, пошукові системи будуть бачити Ваш текст як першоджерело.