欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

POLYV如何保证视频防盗链 防下载问题(问答专题四)

shiping1 的头像
    随着在线教育爆发式的发展,在线教育越来越受到人们的重视,视频防盗技术这一部分,正是在线教育行业最关心的防盗功能,小编着重进行讲解:

    1、什么是播放域名限制?
    播放域名限制功能可以让您实现视频防盗链,目前,盗版者利用源代码查取到视频播放地址,再把它复制到自己网站上去,进行直接的视频播放。这样不仅侵犯到视频拥有者的版权,而且增加了视频源网站的流量的损耗。
    播放域名限制就是通过POLYV后台对视频进行黑白名单的设置。被设置成黑名单的域名是无法播放此视频的,而除了此域名外的域名都可以被播放。而除了被设置成白名单的域名外的所有域名都不予许播放。这样子就能有效地防止视频链接被盗取。

    2、什么是视频水印?
    视频水印是在视频上传之前就要提前进行设置,然后在视频转码时,通过后台处理,让水印跟视频结合在一起,使盗版者无法去除视频水印; 水印位置可以自行设置。就算视频被其他网站引用,水印始终附在视频上,起到保护版权作用。

    3、什么是视频文件加密?
    POLYV所采用的视频文件加密技术是基于关键帧错序的视频内容保护系统。即便视频文件被盗版者通过非法手段下载下来,但是不用POLYV的视频播放器,视频是无法播放。而且让每一个视频文件拥有唯一的key,即使某文件被破解了,其它文件也是安全的,这样子大大地增加了破解者的难度。这个技术让在线视频拥有了防下载的安全保障。

    4、如何防录屏呢?
    做到完全防录屏,这貌似是一个不可能解决的问题。通过电脑软件、VGA硬件以及摄像机就可以轻松地录制到所要的视频文件。像以前,我们会给视频上加上标识,例如水印之类较低端的干扰措施,在线视频还是仍很容易被大量盗录。而POLYV新推出的问答播放器,很好的解决这一问题,用户可以在视频播放过程中加入问题,视频播放到指定的时间点后播放器会自动弹出问题,要求观看者回答,观看者只有在正确回答问题后才能继续播放,如问题回答错误,视频可以被跳至其它指定时间点。在线视频教学应用中,交互问题插入得越多,防录屏效果越好,这不但可以提升学员的学习效果,而且大大增加了盗版者操作成本,同时降低了被盗视频的使用体验。
    另外,POLYV新增了一个跑马灯技术,通过API接口与用户网站相连,访客在观看视频时会有访客的ID以跑马灯的方式展示。由于访客的ID是以无规则的方式出现的,所以着极强的增大了录屏者的后期处理难度,极好的解决了视频被盗录的问题。
 

来自 
http://www.polyv.net/about/product/2014/0624/252.html


8种网站防止盗链的方法



作为普通的网民来说,一般不需要知道也不用关心什么是盗链,不过如果你是网站的开发者或维护者,就不得不重视盗链的问题了。如果你刚刚开发完一个没有防盗链的带有文件下载功能的网站,挂上internet,然后上传几个时下非常热门的软件或电影并在网站内公布下载地址,让MSN上的所有好友都来体验一下你的杰作。

不用多久就会发现网速出奇地变慢,甚至服务器托管中心的服务员会热情地打电话告诉你的网站流量很大,估计是网站受欢迎起来了,问你是不是该考虑加钱租用带宽更宽但价格更贵的网线了。在这个值得庆祝的时候赶快打开Google Analytics看看有多少人来光顾你的网站了吧,如果发现访客每天才十来个人,很遗憾地告诉你:你的网站资源不幸地被人盗链了。

而且更糟糕的是,当你把网站上的文件和电影通通删光之后,网站仍然没有变快多少,从web服务器的访问日志里会发现疯狂的访问请求正从四面八方涌过来,web服务器为了迎接这批访客而没有时间处理正常的页面,这种状况可能会一直持续好几个周时间。

网站资源被盗链简单来说就是别人不是从你的网站通过下载资源,被盗链的几种可能情况:

1、人气非常旺的网站、论坛、社区的网页里直接引用了(使用标记)你网站上的图片,或者直接在其他网页(使用flash或媒体播放插件)里嵌入了你网站上的mp3。

2、在人气非常旺的网站、论坛、社区里提供了你的资源的下载地址。

3、你网站的资源可能被一些下载软件列入了“资源候选名单”,当其他人用下载工具下载相同的文件时,下载软件会自动找上门并且从你的服务器下载。

既然被盗链的后果这么可怕,那有哪些方法可以防止盗链呢下面从简到繁总结一下常见的以及自己实践过的一些方法,并简单分析一下。不过很遗憾地,这些方法都没法完全杜绝被盗链,并且防盗链的目的应该是从一定的程度上减少被盗链所产生的影响,同时能让合法的用户能够以自然的方式、顺畅地从你的网站下载资源。

方法1:判断引用地址

这个方法是最早及最常见的方法。所谓判断引用地址,就是判断浏览器请求时HTTP头的Referer字段的值,这个值在asp.net里面可以用 Request.UrlReferrer属性取得。几个例子来说,在正常情况下当用户在浏览 http://uushare.com/abc.html 时点击一个链接去到 http://uushare.com/jacky.mp3 文件时,浏览器在发出请求jacky.mp3 资源时还会附带当刻浏览器所处的页面地址(即http://uushare.com/abc.html),所以当你的网站程序接收到下载 jacky.mp3 资源请求的时候,先判断http的referer字段的值,如果是从 自己的域名(uushare.com)过来的,则可以认为是合法的连接请求,否则就返回一个错误的提示信息。

这种方法通常用于图片、 mp3这种容易被人用html“嵌入”到其他网站的资源,使用这种方法可以防止你的图片直接出现在别人的网页里(或者防止mp3直接被其他网站嵌入到 flash播放器里),不过访客使用下载工具还是可以轻松下载,因为现在的下载工具一般会自动用你的域名构造一个引用地址,所以如果想再进一步防范的话,可以使用一个对应表限制每个资源的引用地址,例如将 jacky.mp3 的引用地址限制为 http://uushare.com/abc.htmlid=12345,这样下载工具就不太可能构造一个“正确”的引用地址了。

方法2:使用登录验证

这个方法常见于论坛、社区。当访客请求网站上的一个资源时,先判断此请求是否通过登录验证(在asp.net里常用session或form验证来记录登录状态),如果尚未登录则返回一个错误提示信息。使用这个方法还可以进一步判断登录的用户的权限是否足够,以实现带“权限”的下载。

不过因为登录状态依赖于会话id,而会话id往往储存于http请求的cookie字段里,下载工具一般没法获得浏览器的cookie字段,所以这些资源往往无法使用下载工具来下载,给正常合法用户带来诸多不便(因为大部分网民的系统都安装了下载工具,一点击下载链接一般会被下载工具拦截,导致无法使用浏览器本身的下载功能)。简单的解决方法是将这个session id放到URL中。
这种方法的另外一个缺点是访客无法匿名下载,所以这个方法一般只用于论坛和社区网站。

方法3:使用cookie

其实这种方法原理上跟方法2差不多。就是在显示“下载”链接的页面里产生一个动态值的cookie,然后在处理资源下载请求时先判断cookie里有没有正确的cookie,如果没有则返回错误提示信息。至于这个动态值如何产生,只要能逆向判断动态值是否合法的都可以,例如将当前的时间去除秒数取哈希值(也叫散列值)。如果网页程序是asp.net则更简单,可以往Session里随便存一个字符串或数字,然后在处理下载请求时先检查Session 里是否存在这个字符串或数字。使用这个方法的缺点跟方法2一样。

方法4:使用POST下载

客户端浏览器请求资源都是使用HTTP的GET方法的,其实使用POST方法也可以往客户端返回数据。所以可以将下载链接换成一个表单(Form)和一个按钮(Submit),将待下载的文件的名称或id放到表单的一个隐藏文本框(Input)里,当用户点击提交按钮时,服务程序先判断请求是否为 POST方式,如果是则读取目标资源的二进制数据并写入响应对象(在asp.net里是respone.BinaryWrite方法)。

使用这个方法的缺点同样是无法使用下载工具,更没法实现断点续传。 不过比方法2,3好一点的是,下载工具不会拦截你的下载动作,所以正常用户还是比较顺畅地下载到文件。这个方法比较适合小文件的下载。

方法5:使用图形验证码

使用这个方法可以保证每次下载都是“人”在你的网站上下载,而不是下载工具。因为网上很多介绍使用图形验证码的方法,所以这里就不再重复了。这个方法的缺点是比较容易让正常的用户感到麻烦。

方法6:使用动态文件名

也叫动态钥匙法,当用户点击一个下载链接时,先在程序端计算一个Key(使用一定规律产生的Key,最好不要使用随机字符串例如GUID,并且这个 Key必须有一定时效的),然后在数据库或Cache里记录这个Key以及它所对应的资源ID或文件名,最后让网页重定向一个新的URL地址,这个新 URL地址里需要包含这个Key。当浏览器或下载工具发出下载请求时,程序先检测这个Key是否存在,如果存在则返回对应的资源数据。

使用这个方法的好处是下载工具也可以下载,并且在Key失效前可以断点续传,并且可以通过Key来控制下载的线程数。

使用这个方法(包括以上所有支持下载工具的方法)的缺点是:当任意一个用户下载成功之后,你的资源就会被一些下载工具列入“资源候选名单”,以后其他人在其他地方下载同样的文件时,下载工具会不断连接你的服务器,即使你的文件已经删除或者Key已经失效了,这样会造成类DDos攻击的后果,下面再介绍两个即可以让下载工具下载,又可以防止盗链的方法。

方法7:擅改资源的内容

一般热门的资源都是电影、mp3、较大的压缩包等,这些文件都是有很多可以插入数据的地方的,例如mp3有一个tag区,rar/zip有一个备注区,电影的内容随便一个地方,只要在下载过程当中,动态地往这些地方注入一些随机的字节(几个字节即可),就可以达到让整个文件的哈希值(即散列值、指纹值)发生改变,让从你网站下载的文件的哈希值跟别人的不一样,就可以防止下载工具主动找上门了。用这个方法配合方法6,可以达到较好的防盗链的效果。缺点是,虽然文件被修改的部分不会被“看”、“听”出来,不过多多少少让知道的人觉得不爽。另外就是如果别人把从你网站下载的文件放到其他网站,那么仍然存在下载工具主动找上门的情况(虽然实际上它下载不了内容)。

方法8:打包下载

这个方法跟方法7的道理是一样的,只不过这次不是往原始文件里修改,而是在原始的文件基础上再加个“外壳”,让资源的哈希值跟别人的不一样。使用这个方法可以在不擅改资源原始的内容基础上实现方法6同样的效果,并且狠一点的话,甚至可以在打包的时候放入自己的一些广告。缺点是用户每次下载都得加压缩,不过目前大部分人都懂得解压,所以这个缺点有时可以忽略不计。

来自 http://developer.51cto.com/art/201105/263526.htm


 

如何控制住本网站的视频,不被下载,或者防止其他网站盗链我们的视频? 
用的是flash播放器,有想过用混淆video url方案,但无从下手,而且是购买了第三方的video播放器(flowplayer),哎头脑一片混乱....真心求助!
 
---------------问题补充---------------

@shoffee:各位大神,小弟明白绝对防下载是不可能的,我的本意是是否可以有这种方案:video url 显示在前端页面的时候,是加密的,当用户直接打开这个url的时候,url不是能访问。我看到奇艺网一些收费视频好像是这样的。(2年前)

@Henry15:polyv有加密视频的方案,可以找他们了解下(2年前)

shoffeeshoffee
发帖于 2年前
16回/4363阅
 
 
 

按票数排序  显示最新答案  共有16个答案 (最后回答: 9个月前 )

0
0
0
0
0
0
0
0
0
0
  • 红星xx
     
     

    用 cookie 限制  某个客户端 ,就算 cookie 被复制 ,

    再用 带 过期时间的 token 组成提取视频的 url  限制 在 10分钟内 多次访问有效 。

    另外 nginx 有防盗链的 模块 ,你可以试一下。

     
     
    评论(0)引用此答案举报 (2013-06-13 16:16)
  • MZHS
     
     

    没做过这方面的东西
    不过可以给你一些思路:
    1.防止用户用迅雷等下载:URL加密(看youtube等视频网站查看网页源码你会发现视频所指向连接并不是以.swf等结尾)
    2.禁止视频缓存,我经常去缓存中拿视频^-^
    请看文章

     
     
    评论(0)引用此答案举报 (2013-06-13 16:27)
  • 方棱
     
     

    1,先根据用户信息,调用一个接口,得到一个动态码。

    2,下载视频文件时,必须带上动态码,才允许下载。

    3,每个动态码,只能用一次。

    4,每个动态码,生成之后10秒钟如果不被消费,就自动过期。

    这样,是否允许下载视频,就看第1步中,你是否发放动态码的判断了。

     
     
    --- 共有 1 条评论 ---
    • weosang这个方案靠谱 (2年前)  
       
    评论(1)引用此答案举报 (2013-06-13 16:42)
  •  
    好的
     
     
    评论(0)引用此答案举报来自 Android (2013-06-13 16:56)
  • Orzogc
     
     
    防止下载没用,一个屏幕录制软件就搞定了
     
     
    --- 共有 1 条评论 ---
    • 滔哥你狠... (2年前)  
       
    评论(1)引用此答案举报 (2013-06-13 17:00)
  • 灰花走湿
     
     
    限制一下下载,用户不满意,干脆不来你的网站,反而影响用户体验,不应该拿防止下载来做文章,建议,
     
     
    --- 共有 2 条评论 ---
    • 七月__用客户端吧,用网站不科学 (9个月前)  
       
    • shoffee大哥,关键是用户辛辛苦苦录制上传的video,而且收费,如果随随便便给Download了,那我们的平台更不被人信任了~~ (2年前)  
       
    评论(2)引用此答案举报 (2013-06-13 17:15)
  • eechen
     
     
    防盗链可以,防下载那是防不胜防,就算是Google的Youtube照样能用工具嗅探下载, Content-Type肯定会暴露你的视频地址,不过分段加载是个办法,起码用户不能一次下完,除非你的站影响力够大,否则像硕鼠这种工具不会对你的站点感兴趣,硕鼠下载后能自动合成一段完整的视频.
     
     
    评论(0)引用此答案举报 (2013-06-13 17:17)
  • Cloud_Lee
     
     
    送点钱给 硕鼠
     
     
    --- 共有 1 条评论 ---
    评论(1)引用此答案举报 (2013-06-13 17:33)
  • nullptr
     
     
    话说我都是缓存提取,vediocacheview很好用
     
     
    评论(0)引用此答案举报 (2013-06-13 18:01)
  •  

    防下载这种功能是不可能出现的了,就算是youku和tyoutube也是由一大堆app能下他们的视频…

    考虑下用nginx防盗链就行了

    来自  http://www.oschina.net/question/1167854_114593

     

    视频网站是如何防止被盗链的?

     
    按投票排序按时间排序

    3 个回答


普通分类: