Создание, продвижение сайтов
40-33-54

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

08 ноября 2016

В случае с ручным копированием текстов были найдены следующие варианты защиты:

<script type="text/javascript">
function noselect() {return false;}
// Отключаем возможность выделения текста по нажатию левой кнопки мыши.
document.onmousedown = noselect;
// Запрещаем контекстное меню, которое выпадает когда на странице щелкают правой кнопкой мыши.
document.oncontextmenu = noselect;
// Запрещаем копирование текста в буфер обмена.
document.oncopy = noselect; 


// Вспомогательная функция установки обработчика события
function addHandler(event, handler){
if (document.attachEvent) {
document.attachEvent('on' + event, handler);
}
else if (document.addEventListener) {
document.addEventListener(event, handler, false);
}
}

// Вспомогательная функция принудительного снятия выделения
function killSelection(){
if (window.getSelection) {
window.getSelection().removeAllRanges();
}
else if (document.selection && document.selection.clear) {
document.selection.clear();
}
}

// Функция обработчика нажатия клавиш
function noSelectionEvent(event) {
var event = event || window.event;

// При использовании комбинаций клавишь Ctrl+A и Ctrl+U - убрать выделение и подавить открытие окна с исходным кодом страницы.
var key = event.keyCode || event.which;
if (event.ctrlKey && (key == 65 || key == 85)) {
killSelection();
if (event.preventDefault) { event.preventDefault(); }
else { event.returnValue = false; }
return false;
}
}

// Установить обработчики клавиатуры
addHandler('keydown', noSelectionEvent);
addHandler('keyup', noSelectionEvent);
</script>

После добавления этого java-скрипта на страницу, пользователь не сможет вручную выделить и скопировать текст, а также просмотреть исходный код страницы по нажатию комбинации клавиш ctrl+U.
От парсеров данный вид защиты не спасёт, кроме того можно открыть исходный код страницы через меню браузера и скопировать текст оттуда. Чтобы этого избежать придется использовать шифрование кода. Существует огромное количество способов шифровки текста, один из которых я решил рассмотреть более детально.

Шифрование кода на PHP

<?php
$a = file_get_contents('file.txt');
$a = str_split($a);
$e = '';
foreach ($a as $v)
{
$e .= '%' . $v[0] . (ord($v[0])+ord($v[1]));
}
?>

где:

функция file_get_contents – получаем содержимое файла в виде одной строки; функция str_split – преобразуем строку в массив; функция ord – получаем ASCII код символа. В целом механизм шифрования сводится к тому, что мы берём строку, преобразуем каждый символ в элемент массива, а затем кодируем строку по следующему принципу: знак «%» – выполняющий роль разделителя, затем берём по два элемента массива, переводим их в числа (ASCII код) и складываем, первый символ добавляем чистым (без перевода в ASCII код), а второй будет суммой чисел полученных ASCII кодов.

Дешифрование кода на JavaScript

<script type="text/javascript">
function decod(s) { 
s = s.split('%').slice(1); 
c = ''; 
for (i = 0; i < s.length; i++) { 
c += s[i].charAt(0) + String.fromCharCode(s[i].substr(1)-s[i].charCodeAt());; 
} 
document.write(c); 
} 
s = "<? echo $e ?>"; decod(s); 
</script>

где:

функция split – преобразуем строку в массив, знак «%» выступает разделителем элементов массива;
функция slice – задаём индекс элемента в массиве, с которого будет начинаться новый массив;
функция charAt(0) – берём первый символ в каждом элементе массива;
функция substr(1) – берём все символы начиная со второго в каждом заданном элементе массива;
функция charCodeAt() – получаем ASCII код первого символа каждого элемента массива;
функция fromCharCode – преобразуем ASCII код в обычный символ.
функция document.write – выводим дешифрованную строку на странице.

Статьи

Сделайте заказ с сайта и получите 10% скидку на услугу

Заказ услуги с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Заказать бесплатную SEO-консультацию

Запрос бесплатной SEO - консультации с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Письмо в компанию Райбин

Письмо в компанию RAYBIN

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.