Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подскажите скрипт для защиты от копирования текста - обфускация лучше запрета (https://javascript.ru/forum/misc/36222-podskazhite-skript-dlya-zashhity-ot-kopirovaniya-teksta-obfuskaciya-luchshe-zapreta.html)

frenzy 07.03.2013 23:18

Подскажите скрипт для защиты от копирования текста - обфускация лучше запрета
 
Задача: защитить весть текст от копирования неумельцами посредством добавления мусора в буфер обмена, но разрешить копирование мелких частей для пользователей.

Есть тонны банальных скриптов, запрещающих копирование всего текста, вроде этого:
<SCRIPT LANGUAGE="JavaScript">
document.ondragstart = test;
document.onselectstart = test;
document.oncontextmenu = test;
function test() {return false}
</SCRIPT>

Но для данной задачи они не подходят. Данный еще и плохо аботает в опере. Возможно кто-то знает готовый скрипт под данную задачу. В противном случае подскажите, пожалуйста, события копирования в буфер(для всех браузеров и как через контекстное меню, так и через кнопки ctrl+c), и как получить доступ к буферу - мусорщик я сам смогу дописать.

Deff 08.03.2013 00:23

Цитата:

Сообщение от frenzy
Задача: защитить весть текст от копирования неумельцами посредством добавления мусора в буфер обмена, но разрешить копирование мелких частей для пользователей.

Пока наиболее эффективный вариант на javascrip - закрывание всей страницы. кроме навигации прозрачной картинкой,
Доступ к буферу обмена из ява скрипт - невозможен(кроме ИЕ, но и там с запросом)), есть возможность на флеш, но не кроссбраузерно для ИЕ, * - правда не знаю как сейчас: на ИЕ9-10, и неизвестно как поведет себя флеш и при всплытии меню копирования в браузере, собственно по которому пользователь и копирует. Стандартно флеш применяется при копировании кодов по кнопке, к примеру тут в топике. Тут нужно обращаться на флеш форумы.

frenzy 08.03.2013 00:51

Вроде еще в 2009 говорили. что ничего не будет работать, ибо для того, чтоб работало нужно активировать флеш нажатием.
Тут каммент внизу читай - как с этим обстоят дела сейчас?
Прозрачная картинка конечно вариант, вот только у меня на сайте есть страници с динамическим рендером: можно ли динамически растягивать и стягивать эту картинку. Да и перелинковка в статье не будет работать, тут уж лучше приведенный мной скрипт от дураков сработает.

Deff 08.03.2013 00:54

frenzy,
Цитата:

Сообщение от frenzy
можно ли динамически растягивать и стягивать эту картинку. Да и перелинковка в статье не будет работать, тут уж лучше приведенный мной скрипт от дураков сработает.

А причем тут динамика контента: - просто все ссылки - position:relative и x-index (ом) приподнимаете над прозрачкой, позрачке position:fixed и 100% размер
Цитата:

Сообщение от frenzy
но разрешить копирование мелких частей для пользователей.

Тоже их приподнимаем

zOdmin 08.03.2013 00:58

Самая эффективная защита - это канвас со своими векторными шрифтами. Неумельцы точно не скопируют.
От скриншотов не защититься, но если текста много, то мало у кого руки дойдут скриншотить большой объем.

Сам скрипт не подскажу, т.к. это должна быть собственная реализация, иначе не имеет смысла.

Deff 08.03.2013 03:05

Цитата:

Сообщение от zOdmin
Самая эффективная защита - это канвас со своими векторными шрифтами. Неумельцы точно не скопируют.
От скриншотов не защититься, но если текста много, то мало у кого руки дойдут скриншотить большой объем.

:)Все защиты туфта, - первое - можно распечатать страницу, второе полностраничные скрины давно не проблема,
Третье и тотальное - страницу сохраняем на компе и делаем не спеша с ней что заблагорассудиться
Проблемы выделения текста - тож решаемы через файнридер...

Пока не оч удачно решается копирование с обратным преобразованием в контент, преобразованных в графику таблиц(еxel к примеру) и сложных формул

B@rmaley.e><e 08.03.2013 03:16

Цитата:

Сообщение от Deff
Все защиты туфта

Цель любой защиты не лишить потенциального негодяя возможности что-то украсть, а повысить цену этого до нерентабельного уровня.

zOdmin 08.03.2013 04:11

Цитата:

Сообщение от Deff
первое - можно распечатать страницу
второе полностраничные скрины давно не проблема,
Третье и тотальное - страницу сохраняем на компе и делаем не спеша с ней что заблагорассудиться

1) Если прокрутка средствами самого канваса, то не получится.
2) См. п.1
3) Вот это как раз туфта, т.к. есть способы определения, где и как запущена страница, и можно ничего не выводить, а принудительно редиректить. Ну и автор просил защиту от копипаста, т.е. чтобы нигде в другом месте не выкладывали. Если страница сохранена полностью, то это не просто мелкая ссылка на источник в конце статьи, а нечто большее.

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

Deff 08.03.2013 04:40

Цитата:

Сообщение от zOdmin
ли на дописывание костыля, чтобы сохранить единый скриншот.

трехлетняя версия http://desksoft.ru/index.php?forum=7&th=291

danik.js 08.03.2013 04:49

Во всех браузерах кроме старых опер (почти всех кроме нескольких последних) есть событие 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 на странице отключается в три клика:


Часовой пояс GMT +3, время: 01:18.