是否有可能防止从网站下载视频

问题描述:

是否有可能保护视频免受网站下载?是否有可能防止从网站下载视频

虽然用户可以使用某些硬件设备录制视频,但不应该可以使用某个链接下载视频 - 就像Google视频一样。

例如,如果我的系统中有Real One Player,我可以选择下载视频;这应该受到限制。

+23

如果您不让用户观看它们,您可以保护您的视频。 – 2009-11-24 13:53:01

+0

nope ..我的用户可以观看视频。但他们不能下载该视频 – Fero 2009-11-24 13:57:08

+11

当你让你的用户观看视频,这意味着你发送你的字节给用户。所以他们可以一次又一次地保存并观看它。你可以做一些技巧来隐藏或编码你的视频网址/数据,但不要忘记:你可以跑,但你无法逃脱:) – 2009-11-24 14:01:24

是的。永远不要把它展示给任何人。只要你这样做,所有的投注都关闭了(对于偏执狂的回答,请参见最后一段)。

这是复制保护的常见问题:您无法以任何方式区分合法用户和对手(因为他们甚至可能是同一个人)。

编辑:重“我的用户能够观看视频,但他们一定不能够下载视频” 让我们尝试拆卸本:

  • 用户点击播放器的“鼠标播放”按钮
  • 的点击都是通过计算机的操作系统您的播放器
  • 玩家通过网络发送一个请求‘给我德视频’到你的服务器
  • (本,顾名思义,要求请求进入通过任何网络用户的计算机具有)
  • 服务器如果确定它是合法玩家,则开始将数据发送到用户的计算机。
  • (这一点,也通过定义,意味着,用户的计算机“下载”的数据)
  • *数据来自通过网络向计算机(虽然在此阶段捕获数据是用于NSA更实用操作系统处理较低的数据层(即“这是一个数据包,从$ yourserver到我,并且应该传递给$ yourapp”)
  • *操作系统传递数据到要求的应用
  • 玩家收到数据
  • *播放器转换把数据转换成一系列图像(又名a.a.视频)和声音轨道
  • *播放器中的图像发送到OS的显示子系统,或将其保存到磁盘
  • *显示系统变换图像转换成一种格式的屏幕理解
  • *图像流通过电缆进入*的图像显示在屏幕上的画面
  • (在这一点上,他们离开电脑以光的形式)
  • 光到达用户的眼睛

您的视频可以被截获(和/或mo在每个标有*的点上(尽管副本的质量可能会降低,当捕获模拟输出时)。除非你能以某种方式消除每一个(最后一个祝你好运),否则你所能做的就是让数据捕捉/转换变得更加复杂。围绕这些“弱点”建立了一个整体行业(谷歌“流式翻录”可供您自己查看)。

您可以通过各种DRM技术使捕获复杂化,但最终数据流必须变成模拟视频和模拟音频(也称为光和声音)。

然而,如果你不小心,一个确定的用户绕行您的安全,如果它足够保护的视频从用户的90%,我相信你提到的确实有一些真正的格式国旗“不允许保存”。这将禁用播放器中的“另存为”选项(即上面的“或将其保存到磁盘”选项);对于大多数用户来说,这将是一个重大的障碍。更多的事情可能会给你的用户带来不便和愤怒,而不会提供更多的保护。

+0

nope ..我的用户可以观看视频。但他们一定不能下载那个视频 – Fero 2009-11-24 13:57:45

+0

这太微不足道了,我很惊讶它必须向人们解释。 – 2009-11-24 14:06:05

+2

也许是微不足道的。显然,不是真的。 – Piskvor 2009-11-24 14:12:52

要提前,没有什么是防弹的。对于制定的每一项保护措施,有人已经找到了一种方法来打败它。但是,您可以采取一些措施来停止(或至少减慢)临时用户。

Real Networks平台提供了很多保护内容的选项,其中最安全的一般是直播或点播。

为了给你提供具体的方向,我们需要更多的信息。您提到Real One Player正在提供'保存'选项。它可以播放多种格式。你发布什么类型的文件(Real,WMV等),以及它目前如何提供(链接,嵌入,流)。

如果用户的眼睛能看到视频,用户的录制设备也可以看到视频。现在并不会阻止用户记录他们正在查看/收听的内容。这是一个无法解决的问题。

+2

是的,这是一个有趣的问题,因为如果你不采取任何预防措施,外行可以点击'另存为'。如果你采取一些预防措施,技术人员会发现周围的人,但即使你采取了很多预防措施,外行人也可以设置一个摄像机或屏幕抓取应用程序。 – LoveMeSomeCode 2009-11-24 14:51:59

+11

当然,最重要的是要注意,您采取的任何“预防措施”都可能会激怒您的用户,他们只想*观看该死的视频*。 – 2009-11-24 15:00:04

+1

是的,它真的让你质疑整个过程。你希望他们看到它,但你不想让他们以后看到它?如果这是因为您的网页上有大量广告,我想您可以在视频中投放广告,但点击次数会更难。屏幕抓取器两个字: – LoveMeSomeCode 2009-11-24 15:26:18

Fero,这是很多大型娱乐公司每天都面临的课题。 “但是我怎么能阻止人们抄袭我的东西?”?

您可以困难,但你很难看的人,人们不太愿意,除非你给他们所见过的最重要的信息使用您的系统。如果一个login barrier是一个问题,想象迫使人们使用Real Player。

试图让你的视频出名和相关比试图加密之前更重要。

如果用户可以“观看”视频,他们总是可以找到一种方法将其保存到磁盘。您可以在视频上嵌入版权信息,但我担心这一点。

不可能有效地阻止用户以某种方式保存视频。绝望的人可能实际上在播放时记录整个屏幕内容。

无法阻止视频被下载。要在屏幕上显示视频,构成视频的位必须传输到用户PC - 您无法控制。

你所能做的就是让它变得困难。

例如,使用css在视频上显示透明图像,以便难以右击视频并查看其属性(Flickr使用图片)。

或者使用混淆的html/javascript使用户难以执行View-> Source。但是足够坚定的用户可以对其进行简化处理,并且您无法禁用View-> Source,因为您不拥有用户的电脑。

您可以进一步使用自定义(秘密)视频文件格式和浏览器插件,或使用独立的realmedia风格回放客户端。但是,这些可能会让用户恼火,并且不会阻止某些人对您的协议/格式进行反向工程,并编写他们自己的客户端来模拟浏览器并以标准格式保存视频。

我不主张做任何上述!

底线:您必须将位发送给用户的电脑,一旦你这样做,你失去了对它们的所有控制权。

@Fero

而不是把你的视频在网站上,设置远程桌面在您的家用电脑。

打开登录帐户手动每个用户,并让用户登录,

,让用户通过它看你的电影,并

您还可以监视他们一一过,不睡觉。

可能就是这样的路!

+0

; o) – deceze 2009-11-25 08:32:39

+2

其实,它符合他的要求:D他只是不希望他的视频从网站下载。 – YOU 2009-11-25 09:03:31

+3

哈哈,好吧。 :D这真的不应该是一个答案。 ;) – deceze 2009-11-25 09:22:25

如果您使用html5视频,您可以保护视频免于下载。

这里是一个开源的脚本,你可以尝试,并没有办法绕过它现在:http://sourceforge.net/projects/defaprotecthtml5videodownload/

它是采用特殊算法的方式,也不会送你一个原始视频文件,但文件发送与规则,因此它可以阻止您的视频下载

+0

去建议一样。它的音频工作也很好。 但是,如果您将视频和音频放在页面上,只有最后一个工作。 &其他人不会。你有没有面对同样的问题? – 2016-03-09 10:42:47

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