Защита от копирования текста с сайта
Иногда нужно защитить информацию на сайте от копирования. В частности для того, чтобы другие сайты не использовали Ваш уникальный, написанный вами же, контент. Но! Защита контента, отдаваемого сервером клиенту, в принципе не возможна. Всё что закачал к себе браузер, всё можно взять. Можно только создать неудобства при копировании контента. Об этом и будет идти речь в статье.
Вот один «железный» способ защиты контента:
1. Не публиковать текст и изображения 🙂
Шутки шутками, но это и есть один верный способ защиты контента.
Рассмотрим способы создания неудобств при копировании контента(текста, изображения):
1. Для нужного HTML элемента, внутри которого находится защищаемый текст, устанавливаем атрибут unselectable в значение «on». («on» — включение запрета выделения, «off» — выключение запрета выделения).
+ IE, Op(запрет работает в данных браузерах)
— FF, Chrome, Safari(не работает)
Далле по тексту знак «плюс» означает, что работает, знак «минус» означает что не работает.
Всё проверялось на следующих браузерах:
Firefox 3.5.10 — FF
Internet Explorer 6 — IE
Opera 9.64 — Op
Chrome 4.1
Safari 4.0.
Все браузеры под Windows-систему.
2. Ещё один способ заключается в том, чтобы покрыть контент сверху прозрачным рисунков. Тогда выделение текста будет невозможным и контекстное меню будет относится в этому прозрачному рисунку.
Пример такого блока
1 2 3 4 5 6 |
<div style="position: relative;"> защищаемый текст <img style="position: absolute; top: 0pt; left: 0pt; width: 100%; height: 100%;" src="transparent_gif.gif" alt="" /> </div> |
+ работает во всех браузерах
3. Задать в обработчике события oncontextmenu возврат значение false.
Например
1 2 3 4 5 |
document.getElementById('id_protected_element').oncontextmenu = function () { return false; } |
Когда обработчик события возвращает false, событие не выполняется. Данное событие возникает, когда пользователь щелкает правой кнопкой мыши на элементе для вызова контекстного меню. В результате можно запретить доступ в пункту «Копировать» контекстного меню. Но! Есть главное меню и Ctrl+C никто не отменял.
+ FF, IE, Chrome, Safari
— Opera
Фактически ненужный способ, так как есть «горячие» клавиши.
4. Событие oncopy. Так же как и в предыдущем пункте ставим в обработчике события возврат false. Данное событие возникает при помещении данных в буфер. При return false данные в буфер не помещаются.
+ FF, IE, Chrome, Safari
— Opera
5. Событие onselectstart. Так же как и в предыдущих пунктах. Данное событие возникает, когда пользователь начинает выделение.
+IE, Chrome, Safari
— FF, Opera
Как видим в разных браузерах можно сделать по разному. Но чтобы работало во всех браузерах надо применить несколько методов, а это 1, 4 и 5ый одновременно. 3 метод использовать смысла нет, так как можно скопировать всё используя «горячие» клавиши.
Если пофантазировать, можно придумать
ещё несколько способов:
1. Выдавать всё картинкой 🙂
2. Использовать Flash
3. Вставлять в текст невидимые вставки типа
1 |
<div style="display:none;">нафига ты скопировал этот текст</div> |
При копировании такого текста во всех браузерах(кроме Opera) текст скопируется с этими вставками и вору надо будет очищать этот текст.
4. Можно предоставлять контент пользователям, оплатившим доступ в этому контенту 🙂
Ставя всякие козни ворам контента нужно осознавать, сколько времени потратите вы на эту не 100% процентную защиту и сколько потратит времени тот, кто захочет взять этот контент, а если он захочет — он его возмёт. В большинстве случаев такие защиты срабатывают на неопытных пользователях или ленивых пользователях.
Я ставила защиту, но потом убрала, так как кому надо все равно скопируют.
Остановился пока не тексте поверх картинки.. только .gif текст скрывает белым полотном — ставьте .png
Может кто-нибудь поможет, как вставить в текст ссылку которую не будет видно при наведении курсора?
если вы про вид курсора при наведении, то можно изменить его, прописав к ссылке в стилях cursor: text; Я тут заметку небольшую накидал http://lamp-dev.ru/html-css/i-ssylka-i-ne-ssylka/