Защита контента от копирования (не профи)

#1 29 августа 2012 в 10:26
Суть такова, при копирование проставляется и ссылка на ваш материал скопированный. От тупого копирования и вставки цитат и кусков текста помогает. Многие просто не замечают ссылку)))
Решение не мое, но работает и успешно на многих проектах.
Вставлять между <head> и </head> .
Можно по экспериментировать со строкой var pagelink, копирайт сделать маленьким и не заметным ссылку плоскую или без тегов или вообще удалить строку и проверить, в общем возможно будет полезно.

  1. <script type="text/javascript">
  2. function addLink() {
  3. var body_element = document.getElementsByTagName('body')[0];
  4. var selection;
  5. selection = window.getSelection();
  6. var pagelink = "<br /><br /> Источник: <a href='"+document.location.href+"'>© Название сайта</a>"; // Вместо © "Название сайта" ставьте что-то свое
  7. var copytext = selection + pagelink;
  8. var newdiv = document.createElement('div');
  9. newdiv.style.position='absolute';
  10. newdiv.style.left='-99999px';
  11. body_element.appendChild(newdiv);
  12. newdiv.innerHTML = copytext;
  13. selection.selectAllChildren(newdiv);
  14. window.setTimeout(function() {
  15. body_element.removeChild(newdiv);
  16. },0);
  17. }
  18. document.oncopy = addLink;
  19. </script>
#2 29 августа 2012 в 10:47
Отлично, давно хотел аналогичное решение. Да, многие уберут ссыль, а многие просто не увидят. Спасибо.
#3 29 августа 2012 в 10:51
Подправьте:
Название сайта/a>

Название сайта</a>
#4 29 августа 2012 в 11:03

Название сайта</a>

Hmelex
Ок. Видимо когда писал "Название сайта" захватил)))
#6 29 августа 2012 в 12:07
Интересно насколько его можно уменьшить glasses(можно и сжать но это другое дело)...
  1. <script type="text/javascript">
  2. function c()
  3. {
  4. var b = document.getElementsByTagName('body')[0]; var selection = window.getSelection();
  5. var p = "<br />Текст скопирован с "+location+" ";
  6. var ne = document.createElement(); b.appendChild(ne); ne.innerHTML = selection + p; selection.selectAllChildren(ne);
  7. window.setTimeout(function() {b.removeChild(ne);},0);
  8. }
  9. document.oncopy = c;
  10. </script>
#7 29 августа 2012 в 12:08
Не робит в ие и опере.
Только фокс и хромчик, судя по коду. Ставил такое же на новостник месяц назад.
#8 29 августа 2012 в 12:12
в опере не прет(
#9 29 августа 2012 в 12:16
Да похоже работает только в хроме :(
#10 29 августа 2012 в 12:19
В мазиле тоже работает. Наверно можно для ие и оперы что то дописать или объединить с уже существующими для них.

Параноидальный вариант, запрет выделения текста и правую кнопку)))
  1. <script language="JavaScript">
  2. document.onselectstart=function(){return false}
  3. document.oncontextmenu=function(){return false}
  4. document.onmousedown=function(){return false}
  5. </script>

Ниже скрипт который работает во всех вроде. Запрещает копировать:

  1. <script type="text/javascript">
  2.  
  3. function preventSelection(element){
  4. var preventSelection = false;
  5.  
  6. function addHandler(element, event, handler){
  7. if (element.attachEvent)
  8. element.attachEvent('on' + event, handler);
  9. else
  10. if (element.addEventListener)
  11. element.addEventListener(event, handler, false);
  12. }
  13. function removeSelection(){
  14. if (window.getSelection) { window.getSelection().removeAllRanges(); }
  15. else if (document.selection && document.selection.clear)
  16. document.selection.clear();
  17. }
  18. function killCtrlA(event){
  19. var event = event || window.event;
  20. var sender = event.target || event.srcElement;
  21.  
  22. if (sender.tagName.match(/INPUT|TEXTAREA/i))
  23. return;
  24.  
  25. var key = event.keyCode || event.which;
  26. if (event.ctrlKey && key == 'A'.charCodeAt(0)) // 'A'.charCodeAt(0) можно заменить на 65
  27. {
  28. removeSelection();
  29.  
  30. if (event.preventDefault)
  31. event.preventDefault();
  32. else
  33. event.returnValue = false;
  34. }
  35. }
  36. addHandler(element, 'mousemove', function(){
  37. if(preventSelection)
  38. removeSelection();
  39. });
  40. addHandler(element, 'mousedown', function(event){
  41. var event = event || window.event;
  42. var sender = event.target || event.srcElement;
  43. preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
  44. });
  45. addHandler(element, 'mouseup', function(){
  46. if (preventSelection)
  47. removeSelection();
  48. preventSelection = false;
  49. });
  50. addHandler(element, 'keydown', killCtrlA);
  51. addHandler(element, 'keyup', killCtrlA);
  52. }
  53.  
  54. preventSelection(document);
  55. </script>
Но все же мне кажется лучше первый допилить под кроссбраузерность или объединить.
#12 29 августа 2012 в 13:25
prosis
что то не прет (
#13 29 августа 2012 в 13:39

habrahabr.ru/post/101763/ работает везде, на jQuery.

prosis

Глючит jQuery Инстанта и указанного скрипта.
#14 29 августа 2012 в 13:58
Защиты для контента не существует.
Кто хочет скопировать, тот все равно скопирует, особенно вебмастер.
А все эти защиты только ухудшат индексацию.
#15 29 августа 2012 в 14:11

Защиты для контента не существует.
Кто хочет скопировать, тот все равно скопирует, особенно вебмастер.
А все эти защиты только ухудшат индексацию.

Man

Не ухудшают индексацию ни каким боком. Если конечно использовать ни что то мего навороченное, что и ботам будет отдаваться.
Да защиты нет 100%, но некоторую часть снимают и иногда дают плюс.

Способ только один.
Регистрировать сайт как сми, это 3-5000 руб. Заверить сайт и самые нужные материалы. Далее заверять весть поступающий или наиболее важный контент.
При обращении с такой кучей официальных документов ни один хостер не спорит и сразу принимает меры, если сам вебмастр не откликается.
Иметь соответствующий документ на сайте и выводить его либо скриптом при копировании всплывающее предупреждение или иметь ссылку под статьей на этот документ.

Но это все для действительно серьезных проектов. У которых есть кому этим заниматься.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.