我想至少阻止普通用户下载我的Flash视频。
最好的方法是什么?
创建httphandler,添加令牌(例如timeid),将缓存控制设置为no-cache,以便只有具有正确令牌的用户才能查看正确的视频。那可行吗?
客户要求该视频不应由用户下载,并且只能在特定网站上观看。
我想知道这是否有效: http://www.somesite.com/video.swf?time=1248319067
服务器将生成一个令牌(上例中的时间),以便用户只能向此链接发出一个请求。如果用户想再次观看视频,他需要访问我们的网站再次获取令牌。这可以防止新手下载吗?
我无法通过downloadHelper firefox插件下载此Flash视频: http://news.bbc.co.uk/2/hi/americas/8164177.stm
更新(2009/07/23下午13:49): 可以使用某些视频下载软件下载上述文件。
以下中文网站的视频文件受到良好保护(我无法使用许多视频下载软件下载): http://programme.tvb.com/drama/abrideforaride/video/
你知道它是怎么做的吗?
答案 0 :(得分:8)
我不认为有一种简单的方法可以阻止人们在需要时获取视频,
有很多firefox插件可以从youtube和很多地方下载。我想这些插件会禁用您隐藏视频的任何尝试。
与从闪烁中拍摄图像没有太大不同,他们在您想要查看的图像上放置了一个清晰的gif图像,这样当您右键单击并保存时,您将获得“屏蔽”图像,但是可以通过低打印屏幕按钮。
如果您希望临时用户获取您的文件,请使用闪存控件并缓冲一两分钟的视频,并使该闪存通过服务器进行身份验证以获取这些文件。这对我来说似乎很合理
答案 1 :(得分:2)
我认为没有一种简单的方法可以限制人们接受它。您向他们发送视频,这是他们能够查看的方式。任何用户都可以使用FRAPS或类似工具从屏幕上复制视频。
如果您的担心被复制并在其他地方使用,那么您可以为其添加水印或使用一些其他类型的复制保护方法,以便您在其他网站上识别您的工作。如果您担心人们将其复制用于个人用途,那么您实际上无法阻止它,而是将其发送给他们。
编辑:尽职调查将告知您的客户复制他们将要发布的作品是多么容易。大多数客户真的不知道它有多容易。
答案 2 :(得分:2)
这就是我喜欢解决这个问题的方法。
此方法的工作原理是创建一个通过一个http请求下载内容的票证...使用同一票证下载内容的另一次尝试将失败,因此任何尝试再次下载内容的扩展程序或用户手动尝试如果没有这样做,因此flash播放器将是下载内容的唯一方式。然而,这种方法有一个缺点,用户将无法跳过尚未下载的视频的一部分...在一些标准播放器实现中甚至可能阻止视频加载。任何有关这方面的想法都将受到高度赞赏。
我首先编写一个PHP脚本,该脚本在GET请求中引入视频文件的video_id,file_name或本地路径(取决于视频集合的存储基础结构)以及唯一的哈希值(很难)猜测并想出可能是用密钥生成的,所以它可以被验证来自我们的接收器(flash player),如果黑客向我们发送一个使用过的哈希或无效的哈希(不满足我们的密钥),我们将不要把他的文件发给他)。然后PHP脚本打开视频文件并使用正确的视频mime类型发送其内容。对于FLV,mime类型是video / x-flv。它确保一旦以前没有使用过唯一的哈希值,并且从您的秘密加密密钥生成有效哈希值。
然后,一旦加载了Flash播放器的页面,我们就可以将带有正确获取参数的.php文件作为视频播放器的视频网址。 (如果它是一个只允许flv文件的谨慎播放器,你总是可以编程你的.htaccess文件来解析.flv文件只作为特定文件夹中的php脚本,并将你的.php文件重命名为.flv并试试你的运气).. .anyways ...也生成一个哈希键...也许您可以将服务器当前时间并将其附加到salt值(例如两个脚本已知的另一个密钥),并使用您的密钥加密此最终串联。
因此,一旦视频网关php脚本将收到文件名或哈希键...它将解密哈希键并确定它是否是从姐妹脚本有效生成的,并确保不再将视频发送到相同的哈希键...
为了增加安全性,您可以使用cronjob或bootstrap机制每天重置密钥。为了防止重复使用hashkeys,您可以将它们存储在mysql数据库,文件操作或NOSQL中(取决于您的需求和基础结构)。
确保生成哈希密钥的同一用户代理请求该文件。如果黑客在Flash播放器有机会使用散列密钥之前尝试cURL或Wget您的视频未使用的URL。在这种情况下,黑客将不得不模仿浏览器的用户代理或使用他们的命令行工具下载文件...但请注意,这不是你的普通冠军。
答案 3 :(得分:1)
听起来您需要添加授权和身份验证。
您可以将Flash视频放在ASP.Net应用程序中的不同文件夹下,并在该文件夹中添加web.config文件以拒绝未经授权的用户访问。例如:
然后,您需要为您的网站启用身份验证。最简单的方法是forms authentication。提供了一个带有硬编码用户名和密码的简单示例here。
您可以使用ASP.Net中的身份验证框架进行加载我建议使用Google搜索。
答案 4 :(得分:1)
执行此操作的唯一方法是使用受信任的客户端,DRM和加密源。
您的播放器打开了一个连接,用户与该流有连接,您使用其令牌执行一些魔术验证,然后将加密数据传输给它们。
如果您不这样做,那么任何人都可以下载您的视频并将其保存。
然而,除此之外,有人可以运行屏幕截图,然后保存您的视频并再次执行。这也是DRM进入的地方,因为Windows客户端中DRM的一个关键特性是缓冲区无法被嗅探,因为它位于受保护的媒体路径上。
我想这是一个如何保护您的收入但是与盗版打交道的问题,无论他们的业务是什么,都会成为软件开发人员的问题。
答案 5 :(得分:1)
我有一个解决方案,我会为自己尝试(因为我有同样的担忧),但我知道它包含了很多额外的时间和工作......
解决方案:使用flash将视频压缩为swf文件。在压缩之前,将一些AS代码添加到影片中以进行身份验证。认证建议:
1个测试网址 2创建一个专用的Flash播放器,其中包含由video.swf
检查的握手代码我更喜欢#2,作为一项额外措施,您可以在视频上叠加ID代码,因此如果有人使用屏幕录制软件捕获视频,您至少可以跟踪原始来源复制的视频..以及完全合适的报应......
答案 6 :(得分:1)
只是你不能阻止它。 但是......你可以让它变得困难。 在这里我想到了一些想法
1首先将您的标识符添加到视频中(总是有人可以下载)
2困难的方法...将Ajax回调添加回服务器以检查随机生成的密钥,它将每隔N秒存储在会话中。在每个帖子后面清除播放器的缓冲区并从我开始视频(使用javascript)。 再次使用JavaScript阻止视频源通过“查看源”下载。
3处理您在http://www.example.com/viewvideo/1或../?id = 1等网址中的所有视频。 添加透明背景的空白图像叠加。 使用正常扩展名和样式属性“display:none”在页面上的某处投放原始视频和空白视频。 (会给一些下载助手造成问题)
4每次发布视频时请检查请求是否来自浏览器(即检查UserAgent)
5 Cookie,其中包含一些随机值和视频ID。检查客户端和服务器端,然后提供视频。
6关注焦点事件使用javascript隐藏视频。将一个恢复按钮放在闪光灯中并保持帧不变(如暂停,但缓冲区中没有原始视频)。
7结合这些方法
这些是随机生成的想法, 没有测试我也说保证没有视频下载。
答案 7 :(得分:0)
我尝试了两种方法来阻止下载但是失败了。
让我最烦的是来自firefox浏览器的简单SAVE / AS可以轻松绕过这些技巧。
到目前为止,唯一可变的方法是使用一个空的swf文件来加载另一个swf文件。结合令牌的想法,它可以工作。
答案 8 :(得分:0)
在我的回答中,你不能停止图像/视频盗窃,但你可以为普通用户更加努力,但你不能让像我们这样的程序员更难(我的意思是那些知道小网页编程的小偷)有一些技巧你可以尝试: -
1。)使用flash作为youtube和许多其他网站,例如http://www.funnenjoy.com。
2。)Div重叠或背景图片设置(但是没有意义的用户可以通过打开检查元素或其他开发人员选项轻松保存所有资源)。
3.。)您可以使用JAVASCRIPT禁用右键单击和CTRL + S and others possibles
等特定键,但主要缺点是,如果用户禁用JAVASCRIPT
,我们的所有技巧都会失败。
4.)将图像保存在任何在线目录中(如果您具有对Web服务器的完全访问权限),并在每次需要图像/视频时使用服务器端语言(如PHP
)读取该文件,并将图像ID时间更改为时间或创建可在每次访问后自动更改ID的脚本。
5.)在.htaccess
中使用apache
,以防止其他网站链接您的图片。您可以使用此网站自动生成.htacess
http://www.htaccesstools.com/hotlink-protection/