Yii2: защита текстов блога от копипаста

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

Копипаст — термин, означающий две последовательные операции:

  1. Копирование текста на сайте источнике — от английского copy;
  2. Вставка текста на своем сайте — от английского paste.

При чем, зачастую, копипастеры даже не утруждают себя как переработкой (пересказом) текстов, так и ссылкой на автора.

Крупные поисковые системы, такие как Яндекс и Гугл, стараются активно противодействовать размножению не уникального контента. Они стараются оценивать полезность и уникальность материалов сайта и выдавать в результате поиска, в первую очередь, те сайты, которые, по их мнению, являются самыми достойными. И даже наоборот, сайты с низкой долей уникальных материалов совсем выпадают из поисковой выдачи, что осложняет жизнь любителям легкой наживы.

Для чего было это лирическое отступление? Не смотря на все старания поисковых гигантов, тексты с сайтов как воровали, так и воруют.

Попробуем хоть немного затруднить злоумышленникам их задачу. Одним из самых простых способов защиты от ручного копирования текста на странице сайта является небольшой javascript/jquery-скрипт:

[js]$(‘body’).bind(‘copy paste cut drag drop’, function (e) {
e.preventDefault();
});[/js]

Если не вдаваться в подробности, этот скрипт просто предотвращает выполнение всех операций копирования, вставки, вырезания и перетаскивания-отпускания на странице.

Защита от копирования текста в yii 2.0

Рассмотрим один из вариантов реализации защиты от копирования текстов на примере стандартного advanced приложения yii2.

Для начала, создаем файл с вышеуказанным скриптом и сохраняем его в /frontend/web/js/copy-protect.js

Теперь осталось только включить созданный файл в asset. Добавим его в файле /frontend/assets/AppAsset.php:

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
'css/site.css',
    ];
    public $js = [
        'js/copy-protect.js',
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
}

Осталось только проверить результат в любимом браузере.

Замечание

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

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

2 thoughts on “Yii2: защита текстов блога от копипаста

  1. Михаил

    Это ужасно.
    Во-первых, вы так считаете пользователя за дурака, если на сайте есть контент и его нужно взять — 100% он будет взят.
    Во-вторых, обычные пользователи при копировании пары строк будут страдать.

    1. Павел

      100% согласен
      Кто захочет скопипастить статьи воспользуется даунлоад менеджером к примеру (потом их в html обработает), либо правой кнопкой — сохранить по ссылке. Короче если страница уже на клиентской стороне, ее никак не защитишь.

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

      А тут такой гемор. Набирать код вручную. Легче другой сайт найти а об этом забыть навсегда.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *