Можно ли защитить видео с сайта от загрузки?
Хотя пользователи могут записывать видео с помощью некоторого аппаратного устройства, не должно быть возможности загрузить видео, используя некоторую ссылку – точно так же, как видео Google.
Например, если у меня есть Real One Player в моей системе, у меня есть возможность загрузить видео; это должно быть ограничено.
Да. Никогда не показывайте его никому. Как только вы это сделаете, все ставки отключены (для менее параноидального ответа см. Последний абзац).
Это общая проблема с защитой от копирования: вы не можете каким-либо образом различать законного пользователя и противника (поскольку они могут быть даже одним и тем же лицом).
Edit: re "мои пользователи могут смотреть видео, но они не могут загрузить это видео" Давайте попробуем разобрать это:
Ваше видео может быть перехвачено (и / или изменено) в каждой точке, отмеченной * (хотя качество копирования может уменьшиться, особенно при захвате аналогового выхода). Если вы не сможете каким-то образом устранить каждый из них (удачи с последним), все, что вы можете сделать, это сделать сбор данных / преобразование более сложным. Существует целая индустрия, построенная вокруг этих «слабых мест» («ручей» для Google, чтобы убедиться в этом).
Вы можете усложнить захват различными технологиями DRM, но в конечном итоге поток данных должен стать аналоговым видео и аналоговым аудио (например, светом и звуком).
Однако , если вам все равно, что определенный пользователь обойдет вашу защиту, и если этого достаточно, чтобы защитить видео от 90% пользователей, я считаю, что в форматах Real, о которых вы упомянули, есть некоторый флаг «не разрешить сохранение», , Это отключит опцию «сохранить как» в проигрывателе (например, вариант «или сохранит его на диск»); для большинства пользователей это будет достаточно значительным барьером. Что-нибудь еще, вероятно, будет неудобно и возмутит 100% ваших пользователей, но не обеспечит значительно большую защиту.
Если глаза пользователя видят видео, записывающее устройство пользователя также может видеть видео. Не существует и никогда не будет способа предотвратить запись пользователями контента, который они просматривают / прослушивают. Это неразрешимая проблема.
Если пользователи могут «смотреть» видео, они всегда могут найти способ сохранить его на диске. Вы могли бы нанести водяной знак на сообщение об авторских правах по своим видео, но я боюсь, что об этом.
Невозможно предотвратить загрузку видео. Для того, чтобы видео отображалось на экране, биты, составляющие видео, должны передаваться на ПК пользователей, на которые у вас нет контроля.
Все, что вы можете сделать, это усложнить ситуацию.
Например, используйте css для отображения прозрачного изображения по видео, чтобы было трудно щелкнуть правой кнопкой мыши видео и просмотреть его свойства (Flickr делать с изображениями).
Или используйте obfuscated html / javascript, чтобы сделать его трудным для пользователя – View-> Source. Но достаточно решительный пользователь может разоблачить его, и вы не можете отключить View-> Source, потому что вы не являетесь владельцем ПК пользователя.
Вы можете пойти дальше и использовать пользовательский (секретный) формат видеофайла и плагин для браузера или использовать отдельный клиент воспроизведения в стиле реального мира. Тем не менее, это может раздражать ваших пользователей и не мешает кому-либо перепроектировать ваш протокол / формат и написать собственный клиент, чтобы олицетворять браузер и сохранять видео в стандартном формате.
Я не защищаю то, что вы делали!
Итог: вам нужно отправить бит на компьютер пользователя, и как только вы это сделаете, вы потеряете контроль над ними.
@Fero
Вместо того, чтобы вставлять видео на веб-сайт, установите « Удаленный рабочий стол» на своем домашнем компьютере.
Откройте учетную запись входа для каждого пользователя вручную, и позвольте пользователям входить в систему,
И пусть пользователи будут смотреть ваши фильмы через него , и
Вы также можете следить за ними один за другим, не спать.
Может быть, это путь!
Невозможно эффективно запретить пользователю сохранять ваше видео так или иначе. Отчаянный человек может фактически записать весь экранный контент во время его воспроизведения.
Чтобы быть откровенным, ничего пуленепробиваемого. Для каждой разработанной защитной меры кто-то нашел способ победить ее. Однако вы можете предпринять некоторые шаги, чтобы остановить (или, по крайней мере, замедлить) случайного пользователя.
Платформа Real Networks предлагает множество вариантов защиты контента, самый безопасный из которых, как правило, передает его в прямом эфире или по требованию.
Чтобы дать вам конкретные указания, нам понадобится дополнительная информация. Вы упомянули, что Real One Player дает возможность «сохранить». Он может воспроизводить несколько форматов. Какой тип файла вы публикуете (Real, WMV и т. Д.) И как он в настоящее время обслуживается (ссылка, вставка, поток).
Fero, это тема, с которой сталкиваются многие крупные развлекательные корпорации каждый день. «Но как я могу остановить людей, копирующих мои вещи»?
Вы можете это затруднить, но, поскольку вы трудные люди наблюдаете, люди менее склонны использовать вашу систему, если вы не дадите самую важную информацию, которую они когда-либо видели. Если барьер входа является проблемой, представьте, что вы вынуждаете людей использовать Real Player.
Попытка сделать ваши видео знаменитыми и актуальными лучше, чем пытаться зашифровать любой ценой, прежде чем они станут важными.
//test.php <video controls src="your/path/1502139559.mp4"></video> <?php if (session_id() == '') { session_start(); } error_reporting(0); $out2 = ob_get_contents(); if (strpos($out2, "<video") || strpos($out2, "<audio") || strpos($out2, "<source")) { ob_clean(); if (strpos($out2, "<safe") == false) { $window = md5(time()); $_SESSION['window'] = $window; ?> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" > <script> jQuery.ajax({ type: "POST", url: "/enable.php", }); </script> <?php if (strpos($out2, "<safe") !== false) { $_SESSION['safe'] = "SAFE"; } function getURL($matches) { global $rootURL; if ($_SESSION['defat'] == "") { $_SESSION['defat'] = 1; } else { $_SESSION['defat'] = $_SESSION['defat'] + 1; } $_SESSION['x' . $matches['2'] . $_SESSION['defat']] = 0; $_SESSION['defa' . $matches['2'] . $_SESSION['defat']] = md5(time() . "Defa Protector"); $_SESSION['imdefa' . $_SESSION['defat']] = md5('Defa') . base64_encode(base64_encode($matches['2'])); $_SESSION['x' . $matches['2']] = 0; $_SESSION['defa' . $matches['2']] = md5(time() . "Defa Protector"); $_SESSION['file' . $_SESSION['defat']] = md5('Defa') . base64_encode(base64_encode($matches['2'])); return $matches[1] . $rootURL . "defavid.php?window=" . $_SESSION['window'] . "&defat=" . $_SESSION['defat']; } $mes = preg_replace_callback("/(<video[^>]*src *= *[\"']?)([^\"']*)/i", getURL, $out2); $mes = preg_replace_callback("/(<source[^>]*src *= *[\"']?)([^\"']*)/i", getURL, $mes); $mes = preg_replace_callback("/(<audio[^>]*src *= *[\"']?)([^\"']*)/i", getURL, $mes); echo $mes; } else { echo $out2; } } ?> //defavid.php <?php ob_start(); if (session_id() == '') { session_start(); } $window = addslashes(strip_tags($_GET['window'])); $md5defa = md5('Defa'); $t = (int) $_GET['defat']; $filedefa = str_replace($md5defa, '', $_SESSION['file' . $t]); $file = str_replace("https://", "http://", base64_decode(base64_decode($filedefa))); $defa = str_replace("https://", "http://", base64_decode(base64_decode($filedefa))); $defaurl = get_headers($file, 1); $url = $defaurl["Location"]; if ($url != $file && $url != "") { $file = $url; } if (!function_exists('http_response_code')) { function http_response_code($newcode = NULL) { static $code = 200; if ($newcode !== NULL) { header('X-PHP-Response-Code: ' . $newcode, true, $newcode); if (!headers_sent()) $code = $newcode; } return $code; } } $header = http_response_code(); $header2 = getallheaders(); function isMobile() { return preg_match("/(MSIE|Edge|android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); } if (isset($_SESSION['jsenable' . $window])) { if ($header == 200 && $header2['Accept'] != "" && $_SESSION['x' . $defa . $t] == 0 && isMobile() || isset($_SERVER['HTTP_RANGE'])) { $_SESSION['x' . $defa . $t] = $_SESSION['x' . $defa . $t] + 1; if (isset($_SERVER['HTTP_RANGE'])) { $opts['http']['header'] = "Range: " . $_SERVER['HTTP_RANGE']; } $opts['http']['method'] = "HEAD"; $conh = stream_context_create($opts); $opts['http']['method'] = "GET"; $cong = stream_context_create($opts); $out[] = file_get_contents($file, false, $conh); $out[] = $http_response_header; ob_end_clean(); array_map("header", $http_response_header); readfile($file, false, $cong); die(); } } ?> //enable.php <?php if(session_id() == ''){ session_start(); } $window = $_SESSION['window']; $_SESSION['jsenable'.$window] = TRUE; ?>
Вы можете защитить видео от загрузки, если вы используете видео html5.
Вот сценарий с открытым исходным кодом, который вы можете попробовать, и пока нет возможности обойти его: http://sourceforge.net/projects/defaprotecthtml5videodownload/
Он использует специальный алгоритм, который не отправляет вам оригинальные видеофайлы, а отправляет файлы с правилами, чтобы он мог остановить загрузку вашего видео.