防盗链实战一例
技术学习/linux学习 2007/05/21 17:50 最开始为了减少网站的流量,对下载服务器作了防盗链控制,用了SetEnvIf来做的
SetEnvIfNoCase Referer "^^http://.*\.eol\.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://www\.edu.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://free\.eol\.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://.*\.media.edu.cn/.*" local_ref=1
<FilesMatch "\.(mp3|rm|zip|rar|iso|mpg|pdf)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
但是有人反映bbs.eol.cn上的一些帖子上的mp3不能直接播放,我打开页面看到确实是这样的。
查看日志发现bbs.eol.cn来的请求就是403错误。肯定是防盗链没做好。
在网上找来找去,说的方法都是一样的,所以就一时没了门。
后来按同事给我的防止flashget下载的一个帖子那里得到启发,对browser做控制。
BrowserMatch "RealPlayer" local_media=0
BrowserMatch "MediaPlayer" local_media=0
Allow from env=local_media
但是还是不行,老觉得local_media应该是1,改过来,还是不行。
我就存下院文件看看,发现<object中id是NSPlayer,就想着是不是这里不对
就又加一条 BrowserMatch "NsPlayer" local_media=1
还是不行,后来配合日志发现大小写不一致,于是改成
BrowserMatch "NSPlayer" local_media=1
形成下边的策略,问题搞定!呵呵:>不容易!
SetEnvIfNoCase Referer "^http://(.)+\.eol\.cn/" local_ref=1
# SetEnvIfNoCase Referer "^http://*.eol.cn/" local_ref=1
SetEnvIfNoCase Referer "^http://bbs\.eol\.cn/" local_ref=1
SetEnvIfNoCase Referer "^http://www\.edu.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://free\.eol\.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://.*\.media.edu.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://219\.224\.99\.254/" local_ref=1
BrowserMatch "RealPlayer" local_media=1
BrowserMatch "MediaPlayer" local_media=1
BrowserMatch "NSPlayer" local_media=1
<FilesMatch "\.(mp3|rm|zip|rar|iso|mpg|pdf)">
Order Allow,Deny
Allow from env=local_ref
Allow from env=local_media
</FilesMatch>
SetEnvIfNoCase Referer "^^http://.*\.eol\.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://www\.edu.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://free\.eol\.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://.*\.media.edu.cn/.*" local_ref=1
<FilesMatch "\.(mp3|rm|zip|rar|iso|mpg|pdf)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
但是有人反映bbs.eol.cn上的一些帖子上的mp3不能直接播放,我打开页面看到确实是这样的。
查看日志发现bbs.eol.cn来的请求就是403错误。肯定是防盗链没做好。
在网上找来找去,说的方法都是一样的,所以就一时没了门。
后来按同事给我的防止flashget下载的一个帖子那里得到启发,对browser做控制。
BrowserMatch "RealPlayer" local_media=0
BrowserMatch "MediaPlayer" local_media=0
Allow from env=local_media
但是还是不行,老觉得local_media应该是1,改过来,还是不行。
我就存下院文件看看,发现<object中id是NSPlayer,就想着是不是这里不对
就又加一条 BrowserMatch "NsPlayer" local_media=1
还是不行,后来配合日志发现大小写不一致,于是改成
BrowserMatch "NSPlayer" local_media=1
形成下边的策略,问题搞定!呵呵:>不容易!
SetEnvIfNoCase Referer "^http://(.)+\.eol\.cn/" local_ref=1
# SetEnvIfNoCase Referer "^http://*.eol.cn/" local_ref=1
SetEnvIfNoCase Referer "^http://bbs\.eol\.cn/" local_ref=1
SetEnvIfNoCase Referer "^http://www\.edu.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://free\.eol\.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://.*\.media.edu.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://219\.224\.99\.254/" local_ref=1
BrowserMatch "RealPlayer" local_media=1
BrowserMatch "MediaPlayer" local_media=1
BrowserMatch "NSPlayer" local_media=1
<FilesMatch "\.(mp3|rm|zip|rar|iso|mpg|pdf)">
Order Allow,Deny
Allow from env=local_ref
Allow from env=local_media
</FilesMatch>
Trackback Address :: http://blog.ligj.eol.cn/trackback/478

