Nginx下载防盗链(迅雷等下载软件)
什么是下载盗链
假设我们是一个B站,有些视频资源是可以提供给用户下载的。这时迅雷等其他下载软件,也提供下载该视频的服务,
但是迅雷很不厚道的,将我们的下载资源提供给他的用户,下载。占用我们的带宽来服务他的用户,这是绝对不可以忍了的。
使用来源判断根本不靠谱,只能防止一些小白站点的盗链,迅雷之类的下载工具完全无效,如果你是
nginx 的话,使用 secure link 完美解决这个问题,远离迅雷.
本文仅用于下载服务器,不适用于图片防盗链.
原理
- 用户访问 down.php
- down.php 根据 secret 密钥、过期时间、文件 uri 生成加密串
- 将加密串与过期时间作为参数跟到文件下载地址的后面
- nginx 下载服务器接收到了客户端传来的加密串与过期时间,同时自己也使用配置文件里的密钥,也根据过期时间,文件uri 生成自己的加密串
- 将用户传进来的加密串与自己生成的加密串进行对比,一致允许下载,不一致 403整个过程实际上很简单,
secure link module
例子:
location /s/ {secure_link $arg_md5,$arg_expires;secure_link_md5 "$secure_link_expires$uri$remote_addr secret";if ($secure_link = "") {return 403;}if ($secure_link = "0") {return 410;}...
}
secure_link
- 实际是由客户端传来的,加密串和过期时间 的变量
- 当nginx secure_link_md5 指令做完内部检查
- 前后台的加密串不一致
- 设置 secure_link = ""
- 前后台的加密串一致
- 检查是否过期
- 过期
- 设置secure_link="0"
- 未过期
- 设置secure_link="1"
- 过期
- 检查是否过期
- 前后台的加密串不一致
secure_link_md5
- 是将所需参数传给后台处理
- 链接过期时间
- 链接URI
- 远程地址
部署
安装
将http_secure_link_module 加到nginx中
不需要下载第三方模块
# ./configure --with-http_secure_link_module \
--prefix=/usr/local/nginx-1.4.2 --with-http_stub_status_module
# make
# make install
配置nginx
server {listen 80;server_name s1.down.ttlsa.com;access_log /data/logs/nginx/s1.down.ttlsa.com.access.log main;index index.html index.php index.html;root /data/site/s1.down.ttlsa.com;location / {secure_link $arg_st,$arg_e;secure_link_md5 ttlsa.com$uri$arg_e;if ($secure_link = "") {return 403;}if ($secure_link = "0") {return 403;}}
}
PHP下载页面
<?php
# 作用:生成 nginx secure link 链接
# 站点: www.ttlsa.com
# 作者:凉白开
# 时间: 2013-09-11
$secret = 'ttlsa.com'; # 密钥
$path = '/web/nginx-1.4.2.tar.gz'; # 下载文件
# 下载到期时间,time 是当前时间,300 表示 300 秒,也就是说从现在到 300 秒之内文件不过期
$expire = time()+300;
# 用文件路径、密钥、过期时间生成加密串
$md5 = base64_encode(md5($secret . $path . $expire, true));
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
# 加密后的下载地址
echo '<a href=http://s1.down.ttlsa.com/web/nginx-1.4.2.tar.gz?st='.$md5.'&e='.$expire.'>nginx-1.4.2</a>';
echo '<br>http://s1.down.ttlsa.com/web/nginx-1.4.2.tar.gz?st='.$md5.'&e='.$expire;
?>
测试
打开 http://test.ttlsa.com/down.php 点击上面的连接下载
下载地址如下:
http://s1.down.ttlsa.com/web/nginx-1.4.2.tar.gz?st=LSVzmZllg68AJaBmeK3E8Q&e=1378881984
页面不要刷新,等到 5 分钟后在下载一次,你会发现点击下载会跳转到 403 页面。
注意事项
- 密钥防止泄露、以及经常更新密钥
- 下载服务器和 php 服务器的时间不能相差太大,否则容易出现文件一直都是过期状态.
Nginx下载防盗链(迅雷等下载软件)相关推荐
- 如何下载防盗链的歌曲?
初音,大家都很熟悉了.它是YAHAMA(雅马哈,就是生产电子琴的那个公司)推出的音乐编辑软件vocaloid的一款产品. 1月27号(春节放假回来的前一天)就要推出vocaloid 3啦!! 很喜欢I ...
- Nginx(七)防盗链
一 基本铺垫 盗链的理解 ① 什么是盗链 盗链就是'盗用'别的网站的'链接'1)'大佬'建一个网站,'提供下载'以提高自己知名度和吸引力,这样你就必须有'空间存储'那些供人们下载的资源2)'不劳 ...
- LAMP架构之nginx:nginx重定向+防盗链
LAMP架构之nginx:nginx重定向+防盗链 一.nginx重定向 1.防止域名恶意解析到服务器IP,rewrite(URL重定向) 2.重定向做全站加密 3.网站的整体迁移 二.nginx防盗 ...
- Nginx配置防盗链
Nginx配置防盗链 进入Nginx配置文件: [root@LHQ vhosts]# vim test.conf server { listen 80; server_name www.test.co ...
- 配置Nginx的防盗链,实现网站资源防盗
前言 在项目中,经常会有不想让本站点的静态资源被他人盗取访问的需求.比如网站中的图片,前端加载的一些js文件等.此时,就可以配置nginx的防盗链来实现网站资源的防盗. 当然,此方案的前提是前端资 ...
- asp下载防盗链代码
第一种: 终于对下载系统做了个防盗链措施,在下载的页面头部做了如下代码, 相关代码如下: <% From_url = Cstr(Request.ServerVariables("HTT ...
- web 下载 防盗链技术(二)
朋友有个音乐站www.54star.net,让我做的程序,全是320K的mp3,320K的MP3文件通常是普通56kmmp3大小的6,7倍,所以人稍微多些服务器带宽就吃紧.服务器经常是因为带宽不够远程 ...
- nginx的防盗链,动静分离,缓存,负载均衡,反向代理
1.防盗链有两种实现方式 第一种采用了URL重写模块 location ~.*\.(jpg|gif|png)$ {valid_referers none blocked *.demo.com demo ...
- 迅雷不能下载download.php,迅雷无法下载磁力链接文件?一招解决问题
iphone可以下载迅雷吗? 你好!之前可以下载,现在不能了.原因是针对近期有说法称"'XcodeGhost'木32313133353236313431303231363533e58685e ...
最新文章
- 【TensorFlow2.0】数据读取与使用方式
- go:系统参数or函数--未完
- Android LinearLayout
- 在Eclipse的DDMS中查找genymotion模拟器的sdcard中的文件---开发中遇到的问题(一)
- 使用枚举映射_用EnumMaps映射枚举键
- case函数,replace函数
- python 表情包 gif_几行 python 代码合成 gif / 微信表情~与恶意合成软件说再见【文末附代码】...
- java spring getbean_spring依赖注入中获取JavaBean
- 【渝粤教育】国家开放大学2018年春季 0314-21T兽医基础 参考试题
- POJ-2031-Building a Space Station
- ArcView 9.3 安装帮助指南(针对Student Edition-One-Year版本)
- eclipse配置jsp页面模板
- 微信任意用户密码修改漏洞分析
- 【学相伴】Nginx最新教程通俗易懂-狂神说
- Yii 使用EasyAPI实现发票
- 测试触控延时的软件,重点测试:触控屏响应时间_笔记本评测-中关村在线
- 单线服务器和双线服务器是什么意思?
- c2010页面闪现_Vue.js中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
- 在树莓派上安装centos 7,并配置softether本地网桥进行数据转发
- ubuntu14.04有线网卡检测不到问题