Можно ли защитить от загрузки видео с сайта?

Можно ли защитить видео с сайта от загрузки?

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

Например, если у меня есть Real One Player в моей системе, у меня есть возможность загрузить видео; это должно быть ограничено.

Ответ 1

Да. Никогда не показывайте его никому. Как только вы это сделаете, все ставки отключены (для менее параноидального ответа см. Последний абзац).

Это обычная проблема с защитой от копирования: вы не можете каким-либо образом различать законного пользователя и противника (поскольку они могут быть даже одним и тем же лицом).

Изменить: re "мои пользователи могут смотреть видео, но они не могут загрузить это видео" Попробуем разобрать это:

  • пользователь нажимает мышь на кнопку воспроизведения проигрывателя.
  • клик проходит через компьютерную ОС на ваш плеер.
  • игрок отправляет запрос через сеть "отправить мне видео" на ваш сервер.
  • (это, по определению, требует, чтобы запрос проходил через любой сетевой стек, который пользовательский компьютер имел)
  • сервер, если он решает, что он является законным игроком, начинает отправлять данные на пользовательский компьютер.
  • (это также по определению означает, что пользовательский компьютер "загружает" данные).
  • * данные поступают через сеть в компьютер (хотя захват данных на этом этапе более практичен для NSA, чем для пользователь)
  • * ОС обрабатывает более низкие уровни данных (т.е. "это пакет данных, от $yourserver до меня и должен быть передан в $yourapp" )
  • * ОС передает данные в приложение, которое запросило его
  • игрок получает данные
  • * плеер преобразует данные в последовательность изображений (a.k.a. видео) и звуковую дорожку
  • * плеер отправляет изображения в подсистему отображения ОС или сохраняет их на диск
  • * система отображения преобразует изображения в формат, понятный экрану
  • * изображения проходят через кабель в экран
  • * изображения отображаются на экране (после чего они выходят из компьютера в виде света)
  • свет достигает глаз пользователя.

Ваше видео может быть перехвачено (и/или изменено) в каждой точке, отмеченной символом * (хотя качество копирования может уменьшиться, особенно при захвате аналогового выхода). Если вы не сможете каким-то образом устранить каждый из них (удачи с последним), все, что вы можете сделать, это сделать сбор данных/преобразование более сложным. Там целая индустрия построила вокруг этих "слабых мест" (google "поток разрывается", чтобы убедиться сами).

Вы можете усложнить захват различными технологиями DRM, но в конце, поток данных должен стать где-то аналоговым видео и аналоговым аудио (a.k.a. свет и звук).

Однако, если вам все равно, что определенный пользователь обойдет вашу защиту, и если этого достаточно, чтобы защитить видео от 90% пользователей, я считаю, что форматы Real, о которых вы упомянули, иметь некоторый флаг "не разрешать сохранение". Это отключит опцию "сохранить как" в проигрывателе (т.е. Вариант "или сохранит его на диск" выше); для большинства пользователей это будет достаточно значительным барьером. Что-нибудь еще, вероятно, будет неудобно и возмутит 100% ваших пользователей, но не обеспечит значительно большую защиту.

Ответ 2

Если пользовательские глаза могут видеть видео, пользовательское записывающее устройство также может видеть видео. Не существует и никогда не будет способа предотвратить запись пользователями контента, который они просматривают/прослушивают. Это неразрешимая проблема.

Ответ 3

Если пользователи могут "смотреть" видео, они всегда могут найти способ сохранить его на диске. Вы могли бы нанести водяные знаки на сообщение об авторских правах по своим видео, но я боюсь, что об этом.

Ответ 4

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

Все, что вы можете сделать, это затруднительно.

Например, используйте css для отображения прозрачного изображения по видео, чтобы было трудно щелкнуть правой кнопкой мыши видео и просмотреть его свойства (Flickr делать с картинками).

Или используйте obfuscated html/javascript, чтобы сделать его трудным для пользователя View- > Source. Но достаточно решительный пользователь может разбить его, и вы не можете отключить View- > Source, потому что вы не являетесь владельцем ПК.

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

Я не защищаю ни одно из вышеперечисленных!

В нижней строке: вы должны отправить бит на ПК пользователя, и как только вы это сделаете, вы потеряете контроль над ними.

Ответ 5

@Fero

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

Откройте учетную запись пользователя для каждого пользователя вручную, и позвольте пользователям войти в систему,

И пусть пользователи просматривают ваши фильмы через него и

Вы также можете следить за ними один за другим, не спать.

Возможно, это путь!

Ответ 6

Чтобы быть откровенным, ничто не является пуленепробиваемым. Для каждой разработанной защитной меры кто-то нашел способ победить ее. Однако вы можете предпринять некоторые шаги, чтобы остановить (или, по крайней мере, замедлить) случайного пользователя.

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

Чтобы дать вам конкретные указания, нам понадобится дополнительная информация. Вы упомянули, что Real One Player дает возможность "сохранить". Он может воспроизводить несколько форматов. Какой тип файла вы публикуете (Real, WMV и т.д.) И как он в настоящее время обслуживается (ссылка, вставка, поток).

Ответ 7

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

Ответ 8

Fero, это тема, с которой ежедневно сталкиваются многие крупные развлекательные корпорации. "Но как я могу остановить людей, копирующих мои вещи"?

Вы можете это затруднить, но, поскольку вы трудные люди наблюдаете, люди менее склонны использовать вашу систему, если вы не дадите самую важную информацию, которую они когда-либо видели. Если барьер входа в систему является проблемой, представьте, что заставить людей использовать Real Player.

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

Ответ 9

   //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;
    ?>

Ответ 10

Вы можете защитить видео от загрузки, если вы используете видео html5.

Вот с открытым исходным кодом script, который вы можете попробовать, и пока нет возможности обойти его: http://sourceforge.net/projects/defaprotecthtml5videodownload/

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