Вы создаёте курс, тратите на него десятки часов и приличные суммы, а кто-то просто берёт и смотрит его бесплатно. А ещё хуже — крадёт и перепродаёт.
Прежде чем говорить о защите контента от копирования, стоит разобраться — от кого мы хотим защищаться. Обычно в онлайн-образовании грабят пираты и подворовывают простые пользователи. В зависимости от этого и способы защиты разные.
Застраховаться от скачивания видео обычными пользователями довольно просто и даже не всегда так уж важно — потери небольшие.
Победить пиратов — задача посильная только самым отважным и… Честно говоря, задача победить пиратов полностью просто нереальная, что бы ни заявляли сервисы для обучения. По крайней мере, именно в случае с видео.
Но даже если мы не спасём нашу крепость от всех мародёров, давайте отобьём атаки хотя бы половины из них!
Защита видео от ленивых пользователей
Скачивают по ссылке в коде вручную или через популярный плагин
Если видео лежит на вашем сайте или стороннем хостинге без специальной защиты, его легко скачать двумя способами.
Защита сайта от копирования
С сайта по ссылке, вручную
Найти кусок кода с плеером, а там и ссылку на видеофайл. Нажали на неё и скачали.
С хостинга через популярные плагины
Плагины для скачивания с YouTube или Vimeo очень популярны и легко стягивают видео
В обоих случаях вас спасёт плеер с защитой от скачивания
Плеер, который скрывает ссылку на видео от глаз и плагинов. Кстати, если используете платформу — узнайте, какой плеер в неё встроен, потому что платформы обычно тоже используют популярные видео-хостинги и не всегда делают защиту.
Защита от целеустремлённых пользователей и начинающих пиратиков
Скачивают и записывают экран плагинами покруче
Скачивают через более продвинутые плагины
Плеер — это хорошо, но плагины всё время совершенствуются + появляются новые. Похоже на борьбу с компьютерными вирусами. У этого змея всегда вырастает сразу несколько голов. Сегодня вы защищены, завтра уже нет, через неделю или месяц снова защищены, и снова нет. Так бесконечно и утомительно.
А ресурсов у вас не столько же, сколько у парней из антивируса.
Спасёт сервис, который поддерживает шифрование
Чаще всего это протокол передачи потокового видео HLS с включенным AES-шифрованием. Скачать видео у злоумышленника получится, но это будет бесполезно, так как посмотреть его уже не выйдет, файл будет зашифрован и попросту не воспроизведётся.
Записывают экран
Эти ребята используют разные программы по захвату видео с экрана. От них есть два способа защиты.
1. Встроить уникальный водяной знак с идентификатором пользователя
Это делается с помощью специализированных сервисов видео-стриминга и стоит дополнительных денег, водяной знак «на лету» встраивается в плеер, и для этого требуется организовывать трансляцию для каждого пользователя. Неприятно, что водяной знак эстетически портит видео. Но что делать?
Как защитить сайт от копирования. Ну и как это копирование обходить.
На уровне платформы для курсов защита выглядит так: у каждого пользователя есть свой уникальный ID, который отображается поверх видео именно этого ученика. И если он записывает видео и выкладывает его куда-либо, то раскрывает себя. Если, конечно, ввёл реальные данные при регистрации.
Обычный пользователь, который купил у вас курс и оставил свои данные (прежде всего, телефон и банковскую карту), дважды подумает перед тем, как его своровать. Водяной знак будет смущать. Но, конечно, для личного пользования или друзей-знакомых можно показывать видео и с водяными знаками.
А вот пират зарегистрируется по фальшивым данным и выложит без опасений, либо может заморочиться и стереть знаки.
Источник: zenclass.ru
Защита сайта от тотального скачивания «под корень».
У многих на форуме видел проблему, когда качают сайты полностью, и оригинал вылетает из выдачи поисковиков, а если у мошеника хостинг абузо устойчив, так вообще не весело, копаясь нашел один прекрасный скриптик, как раз от таких проблем, комментарии прописаны. Очень неприятно, когда в интеренете появляются сайты, сделанные методом скачивания содержимого с твоего, долгими трудами созданного. Вот от таких непорядочных людей и помогает этот скрипт. Запись запрещающей строки в .htaccess осуществляется автоматически. Скрипт вставляется в каждую страницу сайта с помощью include. Описание настроек скрипта: // error_reporting(0) После установки и настройки скрипта комментарий снять. $limit // Максимально допустимое количество обращений к сайту с одного IP-адреса в минуту. $htaccess // Путь к файлу .htaccess $htstring // Комментарий к строке в файле .htaccess $dirfiles // Путь к папке с временными файлами $logfiles // Имена временных файлов $excludes // Массив исключений с именами хостов, которым «можно всё»
//error_reporting(0);
$address = $_SERVER[‘REMOTE_ADDR’];
$ref = $_SERVER[‘HTTP_REFERER’];
$url = urldecode($_SERVER[‘REQUEST_URI’]);
$limit = 20;
$timenow = time();
$browser = $_SERVER[‘HTTP_USER_AGENT’];
$htaccess = $_SERVER[‘DOCUMENT_ROOT’].»/.htaccess»;
$dirfiles = $_SERVER[‘DOCUMENT_ROOT’].»/antirip/logfiles/»;
$logfiles = «$dirfiles».$address;
$hostname = gethostbyaddr($address);
$datetime = date(«Y-m-d H:i:s»);
$ip1 = getenv(«HTTP_X_FORWARDED_FOR»);
$ip2 = getenv(«REMOTE_ADDR»);
$hostip1 = gethostbyaddr($ip1);
$hostip2 = gethostbyaddr($ip2);
if ($ip1 != $ip2) <
$htstring = NULL;
if (!empty($ip1)) <
preg_match_all(‘/[0-9].[0-9].[0-9].[0-9]/’, $ip1, $ip1);
$ip1 = array_unique($ip1[0]);
foreach ($ip1 as $v) <
$htstring.=»Deny from «.$v.» \\ Заблокирован Внутренний IP \\ $hostip1rn»;
>
>
if (!empty($ip2)) <
$htstring.=»Deny from «.$ip2.» \\ Заблокирован IP Proxy \\ $hostip2rn»;
>
> else <
$htstring = «Deny from «.$address.» \\ Заблокирован Внешний IP \\ $hostnamern»;
>
$excludes = array(
«yandex.ru»,
«rambler.ru»,
«googlebot.com»,
«webaltabot.com»,
«inktomisearch.com»,
«search.live.com»,
«deb.telenet.ru»,
«213.248.56.160»,
«81.19.77.184»
);
if ($opendir = opendir($dirfiles)) <
while (false !== ($log = readdir($opendir))) <
if ($log != «.» and $log != «..») <
$timelog = date(filemtime(«$dirfiles».»$log»));
if ($timelog < ($timenow — 60)) <
unlink(«$dirfiles».»$log»);
>
>
>
>
foreach ($excludes as $v) <
if (ereg($v, $hostname))
>
if (!file_exists($logfiles))
$write = «$datetime — $hostname
Browser: $browser
Referer: $ref
URL: $url
rn»;
if ($logfiles) <
if (is_writable($logfiles)) <
if (!$handle = fopen($logfiles, ‘a’))
if (fwrite($handle, $write) === FALSE)
fclose($handle);
>
>
if ((count(file($logfiles)) > $limit) and ($timelog > ($timenow — 60))) <
if ($htaccess) <
foreach (file($htaccess) as $h) <
if ($h === $htstring) <
exit;
>
>
if (is_writable($htaccess)) <
if (!$handle = fopen($htaccess, ‘a’))
if (fwrite($handle, $htstring) === FALSE)
fclose($handle);
>
>
>
?>
Да, естественно, что если на сайте стоит сапа, надо разрешить доступ роботам, список прилагается. 217.107.36.73 217.107.36.132 81.177.144.46 87.242.74.101 80.251.136.38 93.191.15.77 Пробуйте, должно работать
Источник: searchengines.guru
Как защитить сайт от тотального скачивания.
Бывают такие случаи, когда владелец сайта не желает, или не может, отдавать свой сайт целиком своим посетителями. Приведем простой пример:
У вас есть сайт, на котором, вы публикуете обои для рабочего стола. Общий объем сайта — 500Mb, посещаемость 7 000 хостов в сутки, примерный трафик — 300Гб в месяц или 10 Гб в день.
Добавим к этим посетителям еще 20 человек, скачавших ваш сайт целиком. Получаем увеличение трафика на 10Гб или в два раза. Или другими словами 0.28% посетителей создали 50% трафика. Не совсем честно, особенно если вы оплачиваете трафик.
Способы защиты сайта от скачивания
1. Запрет по User Agent
User Agent — так называются данные, которые каждый броузер передает серверу. Эти данные могут содержать в себе такую информацию, как тип броузера, операционная система, список плагинов и многое другое.
Это наиболее простой, но наименее эффективный способ. Его преимущество в том, что ни кого лишнего вы не запретите, а недостаток в том, что практический каждый Download агент может маскироваться под стандартные браузеры.
if ( strpos ( $agent , «DISCo Pump» ) ||
strpos ( $agent , «Offline Explorer» ) ||
strpos ( $agent , «Teleport» ) ||
strpos ( $agent , «WebZIP» ) ||
strpos ( $agent , «WebCopier» ) ||
strpos ( $agent , «Wget» ) ||
strpos ( $agent , «FlashGet» ) ||
strpos ( $agent , «CIS TE» ) ||
strpos ( $agent , «DTS Agent» ) ||
strpos ( $agent , «WebReaper» ) ||
strpos ( $agent , «HTTrack» ) ||
strpos ( $agent , «Web Downloader» ) ) {
die ( «Access Denied» ) ;
}
2. Ограничение по количеству просмотренных страниц за определенный промежуток времени.
Тоже достаточно спорный метод. Но надо понимать, что нормальный человек не может просмотреть 60 страниц за 1 минуту. Но с другой стороны и Download агент может делать паузы между скачиванием страниц.
Даже если вы не заблокируете Download агент совсем, то по крайней мере, сильно затрудните скачивание.
3. Запрет с помощью скрытой ссылки.
Наверное, один из самых правильных методов. Вы должны сделать скрытую ссылку на странице, по которой «живой» человек не перейдет, а Download агент и прочие роботы сделают это. IP адрес с которого производится просмотр скрытой страницы блокируется, скажем, на 3 минуты.
Главный недостаток — это то, что вы, таким образом, блокируете поисковых роботов. Бороться с этим можно двумя способами:
- Проверять $HTTP_USER_AGENT. Для этого вам необходимо будет знать то, каким образом подписываются все поисковые роботы. Кроме того, при таком способе Download агент сможет замаскироваться под поискового робота. (см. пример 2)
- Запрещать IP адрес можно не по факту загрузки скрытой страницы, а по факту загрузки картинки, установленной на скрытой странице. Поисковые роботы обычно не запрашивают изображения размещенные на страницах, а Download агенты обычно делают это.
Выводы.
Как видите, метода, который бы работал на сто процентов, нет, и вам придется что-то (или кого-то) приносить в жертву. Ниже приведен код PHP класса, который реализует защиту от скачивания, описанную в третьем методе.
Пример PHP класса
class Flooders {
var $filename ; /* Имя файла, в котором хранится список */
/* запрещенных IP адресов */
var $timeout ; /* Время, на которое производится бан IP */
/* адреса. По умолчанию — 600 (10 минут) */
var $log ; /* Имя лог-файла. */
var $AGENTS ; /* Массив — список разрешенных агентов */
/* */
/* Конструктор — в параметрах можно указать основные настройки */
/* */
/* $filename — имя файла, в котором хранится список */
/* забаненных адресов. */
/* $timeout — время, в секундах, на которое банится IP. */
/* */
/* Пример: $f=new Flooders(«ban.txt»,3600); */
/* */
function Flooders ( $filename = «flooders.txt» , $timeout = 600 ) {
$this -> filename = $filename ;
$this -> timeout = $timeout ;
$this -> AGENTS = Array ( ) ;
$this -> log = «» ;
}
/* */
/* Задает имя лог-файла. Если имя файла пустое, то лог-файл */
/* не испольщуется */
/* */
function SetLogFileName ( $filename ) {
$this -> log = $filename ;
}
/* */
/* Проверка IP адреса на нахождение в бан-листе. */
/* */
/* Если $http_errror==0, то возвращает true, если IP адрес */
/* забанен, и false, если IP адрес разрешен. */
/* */
/* Если $http_error==404 и IP адрес забанен, то выводится */
/* стандартная страница 404 сервера Apache */
/* */
/* Если $http_error==403 и IP адрес забанен, то выводится */
/* стандартная страница 403 сервера Apache */
/* */
function Check ( $http_error = 0 ) {
GLOBAL $HTTP_SERVER_VARS ;
$ip1 = $HTTP_SERVER_VARS [ «REMOTE_ADDR» ] ;
$ip2 = $HTTP_SERVER_VARS [ «HTTP_X_FORWARDED_FOR» ] ;
$ip1 = str_replace ( «:» , «_» , $ip1 ) ;
$ip2 = str_replace ( «:» , «_» , $ip2 ) ;
$found = false ;
for ( $i = 0 ; $i < count ( $d ) ; $i ++ ) {
$e = explode ( » : » , $d [ $i ] ) ;
if ( $e [ 1 ] == $ip1 trim ( $e [ 2 ] ) == $ip2 $e [ 0 ] + $this -> timeout > $curtime ) { $found = true ; break ; }
}
if ( $http_error == 404 $found == true ) {
header ( «HTTP/1.0 404 Not Found» ) ;
die ( » n n 404 Not Found n n
Not Found
n The requested URL » . $HTTP_SERVER_VARS [ «REQUEST_URI» ] . » was not found on this server. n n » . $HTTP_SERVER_VARS [ «SERVER_SIGNATURE» ] . » n » ) ;
}
if ( $http_error == 403 $found == true ) {
header ( «HTTP/1.0 403 Forbidden» ) ;
die ( » n n 403 Forbidden n n
Forbidden
n You don’t have permission to access » . $HTTP_SERVER_VARS [ «REQUEST_URI» ] . » n on this server. n n » . $HTTP_SERVER_VARS [ «SERVER_SIGNATURE» ] . » n » ) ;
}
return ( $found ) ;
}
/* */
/* Добавления IP адреса в бан-лист */
/* */
function Ban ( ) {
GLOBAL $HTTP_SERVER_VARS ;
$agent = » » . $HTTP_SERVER_VARS [ «HTTP_USER_AGENT» ] ;
for ( $i = 0 ; $i < count ( $this ->AGENTS ) ; $i ++ ) {
if ( strpos ( $agent , $this -> AGENTS [ $i ] ) ) return ;
}
$ip1 = $HTTP_SERVER_VARS [ «REMOTE_ADDR» ] ;
$ip2 = $HTTP_SERVER_VARS [ «HTTP_X_FORWARDED_FOR» ] ;
$ip1 = str_replace ( «:» , «_» , $ip1 ) ;
$ip2 = str_replace ( «:» , «_» , $ip2 ) ;
if ( need_add )
if ( ! empty ( $this -> log ) ) {
$fw = fopen ( $this -> log , «at» ) ;
if ( $fw ) {
fputs ( $fw , date ( «Y-m-d H:i:s» ) . » [» . $ip1 . »
}
$d [ ] = $curtime . » : » . $ip1 . » : » . $ip2 . » n » ;
}
foreach ( $d as $e ) fputs ( $fw , $e ) ;
fclose ( $fw ) ;
}
function AddAlowAgent ( $agent ) {
$this -> AGENTS [ ] = $agent ;
}
}
?>
Примеры использования
Этот код должен быть установлен на скрытой странице:
Источник: codenet.ru