lighttpd 的 flv 流媒体(含有防盗链功能)

转载 2007年10月04日 22:21:00
原贴:http://blog.guoshuang.com/showlog.asp?cat_id=33&log_id=5692

lighttpd 的 flv 流媒体

本文打分:0 [2007-9-13]
下文很棒,收获不浅,lighttdp 可以在服务器端打开 mod_flv_streaming 从而更好的支持 flv 站点。怪不得 youtube 使用 lighttpd,我没办法测试,不知效果到底怎样。mod_secdownload 构造复杂的地址从而防止盗链。

以下为引用内容:

下载站是一类特殊的站点,站长们已经不需要为流量担心了。他们只需要担心服务器的负载了。尤其是现在迅雷等近乎掠压者的软件出现以后。
lighttpd是近来日渐流行的一个轻量级,着眼于高负载性能的开源的,免费的web服务器软件。在很多方面比如mod_rewrite方面与行业巨头apache很相似,
使得从apache往lighttpd上的迁移成本相对较低。
但是个人感觉,lighttpd还是着眼于高负载载上并不失灵活性。例如为了迎合日渐流行的在线视频站点如youtube类站点的胃口,还专门出一个针对flv下载的模块,
这个模块相当偏门。
lighttpd上还有一个专门针对下载站点的模块:mod_secdownload
根据其官方wiki文档,mod_secdownload有四个配置选项:

1. secdownload.secret = <string>
2. secdownload.document-root = <string>
3. secdownload.uri-prefix = <string> (default: /)
4. secdownload.timeout = <short> (default: 60 seconds)

在这个模块出现以前,人们也曾有几个思路去应对盗链:
1. 修改WEB应用。比如直接通过PHP读取文件内容,发送二进制码。由于发送过程完全可控,这个对访问者的控制完全准确,比如想限制只有登陆用户才可以下载 等等,易如反掌。问题是,每一次下载都通过php进行,严重地影响了服务器的效率。磁盘IO,CPU占用都容易跑满。
2.编程实施,自行设计一些 服务器模块。比如weidy同学以前好像做过IIS下的过滤器,思路是在IIS中通过插入Hook,检测对静态下载文件 (zip,exe,rar等文件的HTTP请求头中是否存在一个特定的Cookie,而这个cookie是有有效期的。当然这是可以的,我还有更好的思 路,那就是,自己写一个web server,你想干什么就干什么,你要加一个彩蛋以便每当有用户访问时都要你站长大人先按一下电话按键用户才可以继续下载都行…..问题是,不是所有人 都会。而且,实施也是一大麻烦。
3.基于服务器的现有模块,依照某些访问特性,比如来源页面(HTTP_REFERER)进行限制。但是,现在的 盗链网页已经非常聪明了,迅雷更聪明:它能精确地学习前人在下载该软件时的数据,模仿性地发送特定的HTTP_REFERER(说不定将来连COOKIE 也一起发送),非常牛B.所以像车东简单地这样写上:

1. RewriteEngine on
2. RewriteCond %{HTTP_REFERER} !^http://(www/.)?niernier/.com/.*$ [NC]
3. RewriteRule /.(mp3|rar)$ http://www.niernier.com/archives/000445.html [R=301,L]
4. #RewriteLog "logs/rewrite.log"
5. #RewriteLogLevel 3

已经没用了,当然用这个防止通过baidu搜mp3还是可以的,对迅雷,没用。某些牛X的网站好像也能突破这种简单的防盗链。

好了,现在看看light官方网站给出的办法:
首先,某些东西是一定要经常改变的.或者是Cookie,或者是URI,等等。而URI是最好操作的。
另外,URI中一定要有一个加密性的东西,在secdownload中,secdownload.secret选项就是让站长自行设置的一个密串。(当然这个密串要足够保密>>>)

然后,我们用PHP来生成软件下载链接:

1. <?php
2.
3. $secret = "verysecret";
4. $uri_prefix = "/dl/";
5.
6. # filename
7. $f = "/secret-file.txt";
8.
9. # current timestamp
10. $t = time();
11.
12. $t_hex = sprintf("%08x", $t);
13. $m = md5($secret.$f.$t_hex);
14.
15. # generate link
16. printf('<a href="%s%s/%s%s">%s</a>',
17. $uri_prefix, $m, $t_hex, $f, $f);
18. ?>

看 到了吗?这个新的链接包含了md5后的密钥(“verysecret”,在lighttpd.conf中指出),同时包含了时间特征串。这个时间串与文件 名,密钥一起参与了md5计算,以便对下载客户端提交的URI进行校验。如果不把时间放进去md5,客户端便可以假造URI,任意修改时间串。
还是把官方给的lighttpd.conf中的相关配置也给出:

1. server.modules = ( ..., "mod_secdownload", ... )
2.
3. secdownload.secret = "verysecret"
4. secdownload.document-root = "/home/www/servers/download-area/"
5. secdownload.uri-prefix = "/dl/"
6. secdownload.timeout = 120

现在,把你所有的页面的链接改成用这个php操作运算过的新地址吧。这个新地址被正确地被lighttpd解码并进行传送。
有趣的是,如果访问的URL已经超时失效,lighttpd送出的头是“408 Request Timeout” ,这不是一个标准的HTTP协议头,这是为了欺骗一下客户端。

当然,没有什么能永远防止疯狂下载。更妥善一点的情况是,这个下载地址并不是在html中直接给出,而是通过javascript来写出。即便是这样,如果hacker们
愿意,他也可以让一个firefox在后端访问该页并解析javascript最后遍历dom节点…. 得到该地址。你的地址每2分钟就超时,他也可以每2分钟来造访一次,拿到新地址。但是 有几个网站能够得到这种级别的高手的青睐呢?

 

linux下lighttpd服务器的详细安装步骤 以及对flv流媒体的支持配置

linux下lighttpd服务器的安装部署 以及对flv流媒体的支持配置
  • joeyon
  • joeyon
  • 2014年10月10日 15:37
  • 1340

live555笔记(一)

刚接触IPC行业,稍微熟悉了mpp相关例程,准备学习rtsp server,现在准备着手live555的学习。 1、简介 2、下载 3、移植 3.1、配置交叉编译选项 修改配置文件conf...

asp.net流媒体防下载防盗链dll插件

  • 2010年06月05日 13:37
  • 213KB
  • 下载

流媒体服务器防盗链插件

  • 2008年12月14日 17:37
  • 2.04MB
  • 下载

流媒体直播防盗链安全控制

防盗链概念主要是从网站的业务中起来,原有定义只要针对网站内容中的文字,图片被他人非法使用导致,随着网站内容的逐渐丰富,出现了更多音乐,视频,flash等方面内容,同时针对防盗链的技术要求也在不断加强。...

流媒体直播防盗链安全控制

转载自:http://blog.csdn.net/u013488847/article/details/45789071 防盗链概念主要是从网站的业务中起来,原有定义只要针对网站内容中的文字,图片被他...

流媒体直播防盗链安全控制

防盗链概念主要是从网站的业务中起来,原有定义只要针对网站内容中的文字,图片被他人非法使用导致,随着网站内容的逐渐丰富,出现了更多音乐,视频,flash等方面内容,同时针对防盗链的技术要求也在不断加强。...

具有P2P及防盗链功能的OTT/IPTV互联网解决方案

目前网络上提供OTT/IPTV的互联网公司众多,那么如何选择一款更优质成熟的OTT业务直播系统呢?总结一下关注点: 同时支持andorid安卓机顶盒和安卓手机APP观看。 具备防盗链、防下载功...

通过检查前导页实现的简单的防盗链功能

    其思路如下:获取用户访问下载资源之前的前导页,检查其主机部分是不是与当前主机在同一域名下,如果是则通过正常途径下载的,如果不是,则是通过外部链接下载的。    在asp.net中可以通过Htt...

S3增加防盗链功能和备份策略

下文所述基本都是基于控制台配置的,比较方便S3作为AWS里的文件存储服务,一些针对文件的增删、安全、请求等功能都提供了较为完善的支持,也都是可以在S3的控制台里直接配置(登陆账号后,顶部的导航栏里可以...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:lighttpd 的 flv 流媒体(含有防盗链功能)
举报原因:
原因补充:

(最多只允许输入30个字)