07.03.2013, 23:18
|
Интересующийся
|
|
Регистрация: 07.03.2013
Сообщений: 25
|
|
Подскажите скрипт для защиты от копирования текста - обфускация лучше запрета
Задача: защитить весть текст от копирования неумельцами посредством добавления мусора в буфер обмена, но разрешить копирование мелких частей для пользователей.
Есть тонны банальных скриптов, запрещающих копирование всего текста, вроде этого:
<SCRIPT LANGUAGE="JavaScript">
document.ondragstart = test;
document.onselectstart = test;
document.oncontextmenu = test;
function test() {return false}
</SCRIPT>
Но для данной задачи они не подходят. Данный еще и плохо аботает в опере. Возможно кто-то знает готовый скрипт под данную задачу. В противном случае подскажите, пожалуйста, события копирования в буфер(для всех браузеров и как через контекстное меню, так и через кнопки ctrl+c), и как получить доступ к буферу - мусорщик я сам смогу дописать.
|
|
08.03.2013, 00:23
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от frenzy
|
Задача: защитить весть текст от копирования неумельцами посредством добавления мусора в буфер обмена, но разрешить копирование мелких частей для пользователей.
|
Пока наиболее эффективный вариант на javascrip - закрывание всей страницы. кроме навигации прозрачной картинкой,
Доступ к буферу обмена из ява скрипт - невозможен(кроме ИЕ, но и там с запросом)), есть возможность на флеш, но не кроссбраузерно для ИЕ, * - правда не знаю как сейчас: на ИЕ9-10, и неизвестно как поведет себя флеш и при всплытии меню копирования в браузере, собственно по которому пользователь и копирует. Стандартно флеш применяется при копировании кодов по кнопке, к примеру тут в топике. Тут нужно обращаться на флеш форумы.
Последний раз редактировалось Deff, 08.03.2013 в 00:29.
|
|
08.03.2013, 00:51
|
Интересующийся
|
|
Регистрация: 07.03.2013
Сообщений: 25
|
|
Вроде еще в 2009 говорили. что ничего не будет работать, ибо для того, чтоб работало нужно активировать флеш нажатием.
Тут каммент внизу читай - как с этим обстоят дела сейчас?
Прозрачная картинка конечно вариант, вот только у меня на сайте есть страници с динамическим рендером: можно ли динамически растягивать и стягивать эту картинку. Да и перелинковка в статье не будет работать, тут уж лучше приведенный мной скрипт от дураков сработает.
|
|
08.03.2013, 00:54
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
frenzy,
Сообщение от frenzy
|
можно ли динамически растягивать и стягивать эту картинку. Да и перелинковка в статье не будет работать, тут уж лучше приведенный мной скрипт от дураков сработает.
|
А причем тут динамика контента: - просто все ссылки - position:relative и x-index (ом) приподнимаете над прозрачкой, позрачке position:fixed и 100% размер
Сообщение от frenzy
|
но разрешить копирование мелких частей для пользователей.
|
Тоже их приподнимаем
Последний раз редактировалось Deff, 08.03.2013 в 03:29.
|
|
08.03.2013, 00:58
|
|
Аспирант
|
|
Регистрация: 05.03.2012
Сообщений: 62
|
|
Самая эффективная защита - это канвас со своими векторными шрифтами. Неумельцы точно не скопируют.
От скриншотов не защититься, но если текста много, то мало у кого руки дойдут скриншотить большой объем.
Сам скрипт не подскажу, т.к. это должна быть собственная реализация, иначе не имеет смысла.
|
|
08.03.2013, 03:05
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от zOdmin
|
Самая эффективная защита - это канвас со своими векторными шрифтами. Неумельцы точно не скопируют.
От скриншотов не защититься, но если текста много, то мало у кого руки дойдут скриншотить большой объем.
|
Все защиты туфта, - первое - можно распечатать страницу, второе полностраничные скрины давно не проблема,
Третье и тотальное - страницу сохраняем на компе и делаем не спеша с ней что заблагорассудиться
Проблемы выделения текста - тож решаемы через файнридер...
Пока не оч удачно решается копирование с обратным преобразованием в контент, преобразованных в графику таблиц(еxel к примеру) и сложных формул
Последний раз редактировалось Deff, 08.03.2013 в 03:09.
|
|
08.03.2013, 03:16
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от Deff
|
Все защиты туфта
|
Цель любой защиты не лишить потенциального негодяя возможности что-то украсть, а повысить цену этого до нерентабельного уровня.
|
|
08.03.2013, 04:11
|
|
Аспирант
|
|
Регистрация: 05.03.2012
Сообщений: 62
|
|
Сообщение от Deff
|
первое - можно распечатать страницу
второе полностраничные скрины давно не проблема,
Третье и тотальное - страницу сохраняем на компе и делаем не спеша с ней что заблагорассудиться
|
1) Если прокрутка средствами самого канваса, то не получится.
2) См. п.1
3) Вот это как раз туфта, т.к. есть способы определения, где и как запущена страница, и можно ничего не выводить, а принудительно редиректить. Ну и автор просил защиту от копипаста, т.е. чтобы нигде в другом месте не выкладывали. Если страница сохранена полностью, то это не просто мелкая ссылка на источник в конце статьи, а нечто большее.
И, да, абсолютной защиты здесь не может быть по определению. Но речь шла о защите от дурака. А здесь даже опытный программер поленится тратить свое время. Например, если пишет скрипт, который крадет контент, то это пол дня может уйти на расшифровку чужих скриптов, или на дописывание костыля, чтобы сохранить единый скриншот.
|
|
08.03.2013, 04:49
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Во всех браузерах кроме старых опер (почти всех кроме нескольких последних) есть событие oncopy. В старых операх нельзя отловить копирование из контекстного меню. По Ctr+C можно отловить через keydown (или keypress чтоли). Далее, во всех браузерах кроме Firefox есть объект clipboardData типа Clipboard. Далее, во всех этих браузерах кроме Safari 5 и и Chrome < 18 можно записывать данные в этот объект. Впрочем и без clipboardData достаточно изменить выделение и в буфер попадет именно оно.
<div id="nocopy">Попробуй меня скопировать. А затем проверь что в буфере</div>
<textarea></textarea>
<script>
var target = document.getElementById('nocopy');
target.oncopy = function(event) {
var clipboardData = (event || window.event).clipboardData;
if (clipboardData) {
clipboardData.setData('Text', 'Все права защищены!');
} else {
alert('Clipboard API не поддерживается! Тут workaround\'им');
}
return false;
}
</script>
Кстати, не проще ли просто запрещать выделение больших кусков текста?
Но думаю все эти антиплагиаты ничего не стоят. В хроме например javascript на странице отключается в три клика:
|
|
|
|