您的位置:首页 > 移动开发

HelixApp Real 4.3免费版 + ASP.NET 2.0轻松实现电影防盗链

2007-05-13 09:00 441 查看
  盗链乃VOD系统之大敌。
  最近在做电影站玩,电影服务器采用的是Helix 9 for Win,找到了一个免费的的工具叫“HelixApp”,其实现防盗原理是:
  在电影服务器端,通过插件,生成一个与时间相关的数字串(付费版还可以是其它字符),添加到原播放文件之后。例如,原来的播放地址是:rtsp://www.myvod.com/test.rmvb,那么,现在的播放地址很可能是:rtsp://www.myvod.com/test.rmvb?pxd=123456(pxd=后面的数串随机生成,下文称之为KEY),然后,在Web上,通过同样的算法、同样的因子,就可以生成同样的KEY,便可以与原来的播放URL相拼接,正常访问影片。
  因为KEY在一定时间后失效(可以通过配置文件设置),所以,盗链者即使得到了播放地址,一段时间后,也就成了一个“死链”了,这样就可以防止盗链。
  HelixApp针对Helix+ASP有一套完整的“解决方案”,提供了调试页、提供了示例、提供了安装视频……却给.NET用户提供了...Nothing.^_^于是乎,我们只有自己动手啦。通过上面的介绍,大家已经看到,在完成了Helix服务器端的配置以后,关键问题在于把KEY计算出来。还好,HelixApp提供了一个ASP页面,其中包含了加密算法的源码:

<% OPTION EXPLICIT %>
<%

'************HelixApp加密URL****************************************
CONST KEY = "101325" '加密因子,必须要和INI配置文件的要对应一样

'免费版--加密方法简单,注意时区和服务器时间对齐
Function UrlEnc_evaluate(orgurl , EncKey)
DIM ts
ts = DateDiff("s", "1970-1-1 8:0:0" , Now) 'unix time_t格式的时间,北京时间是东八区,所以这里是8:00,假如服务器时区是东6区,这里就是6:00
ts = ts xor EncKey
UrlEnc_evaluate = orgurl & "?pxd=" & ts
End Function
%>

咱们这些小字辈的Web编程的初学者,看到ASP那可是再头疼不过的事儿了——不了解太多语法、不知道怎么调试……哈哈,好在它注释还比较完整。连蒙带猜,瞎撞了一番,竟然让把我这小KEY给算出来了,代码如下:

/// <summary>
/// 反回通过HelixApp 4.3防盗加密过的URL
/// </summary>
/// <param name="orgurl">原始URL</param>
/// <param name="encKey">加密因子</param>
/// <returns></returns>
public string GetMoviePxd(string orgurl, long encKey)
{
//unix time_t格式的时间,北京时间是东八区,所以这里是8:00,假如服务器时区是东6区,这里就是6:00
TimeSpan ts = DateTime.Now - DateTime.Parse("1970-1-1 8:0:0");
long totalSeconds = (long)ts.TotalSeconds;
long pxd = totalSeconds ^ encKey;
return string.Format(orgurl + "?pxd={0}", pxd.ToString());
}

嗯,用C#看就简单多了,首先,计算一个1970年1月1日到现在的时间差ts,然后返回全部秒数totalSeconds。把totalSeconds和加密因子encKey进行异或,就得到了我们需要的数字串KEY,最后字符串拼接返回URL。
  到这里,大家会想,这个算法很简单,而且只跟时间相关,所以,谁都可以把这个串计算出来呀。呵呵,这就是加密因子的作用了。通过设置一个不一样的加密因子,就可以得到不同的KEY了。这个值,需要与Helix服务器端的加密因子一致:

CryKey = 101325
;CryKey 加密因子,缺省 101325。示例:CryKey = www.qhhndx.com@101325
;请调试好后最好修改此密钥,密钥可以是数字与字母与数子的组合,最长可以到30位。
;修改时请与网页加密程序中的密钥相互对应,切记!CONST KEY = "101325" '加密因子

呵呵,通过把服务器端ForbidRepeatUrl设置成2,还可以防下载(未完整测试,反正在这边用迅雷下载不了),有兴趣的朋友可以试试。欢迎交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: