什么是下载盗链


 

假设我们是一个B站,有些视频资源是可以提供给用户下载的。这时迅雷等其他下载软件,也提供下载该视频的服务,

但是迅雷很不厚道的,将我们的下载资源提供给他的用户,下载。占用我们的带宽来服务他的用户,这是绝对不可以忍了的。

使用来源判断根本不靠谱,只能防止一些小白站点的盗链,迅雷之类的下载工具完全无效,如果你是

nginx 的话,使用 secure link 完美解决这个问题,远离迅雷.

本文仅用于下载服务器,不适用于图片防盗链.

原理


  1. 用户访问 down.php
  2. down.php 根据 secret 密钥、过期时间、文件 uri 生成加密串
  3. 将加密串与过期时间作为参数跟到文件下载地址的后面
  4. nginx 下载服务器接收到了客户端传来的加密串与过期时间,同时自己也使用配置文件里的密钥,也根据过期时间,文件uri 生成自己的加密串
  5. 将用户传进来的加密串与自己生成的加密串进行对比,一致允许下载,不一致 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下载防盗链(迅雷等下载软件)相关推荐

  1. 如何下载防盗链的歌曲?

    初音,大家都很熟悉了.它是YAHAMA(雅马哈,就是生产电子琴的那个公司)推出的音乐编辑软件vocaloid的一款产品. 1月27号(春节放假回来的前一天)就要推出vocaloid 3啦!! 很喜欢I ...

  2. Nginx(七)防盗链

    一   基本铺垫 盗链的理解 ①  什么是盗链 盗链就是'盗用'别的网站的'链接'1)'大佬'建一个网站,'提供下载'以提高自己知名度和吸引力,这样你就必须有'空间存储'那些供人们下载的资源2)'不劳 ...

  3. LAMP架构之nginx:nginx重定向+防盗链

    LAMP架构之nginx:nginx重定向+防盗链 一.nginx重定向 1.防止域名恶意解析到服务器IP,rewrite(URL重定向) 2.重定向做全站加密 3.网站的整体迁移 二.nginx防盗 ...

  4. Nginx配置防盗链

    Nginx配置防盗链 进入Nginx配置文件: [root@LHQ vhosts]# vim test.conf server { listen 80; server_name www.test.co ...

  5. 配置Nginx的防盗链,实现网站资源防盗

    前言   在项目中,经常会有不想让本站点的静态资源被他人盗取访问的需求.比如网站中的图片,前端加载的一些js文件等.此时,就可以配置nginx的防盗链来实现网站资源的防盗. 当然,此方案的前提是前端资 ...

  6. asp下载防盗链代码

    第一种: 终于对下载系统做了个防盗链措施,在下载的页面头部做了如下代码, 相关代码如下: <% From_url = Cstr(Request.ServerVariables("HTT ...

  7. web 下载 防盗链技术(二)

    朋友有个音乐站www.54star.net,让我做的程序,全是320K的mp3,320K的MP3文件通常是普通56kmmp3大小的6,7倍,所以人稍微多些服务器带宽就吃紧.服务器经常是因为带宽不够远程 ...

  8. nginx的防盗链,动静分离,缓存,负载均衡,反向代理

    1.防盗链有两种实现方式 第一种采用了URL重写模块 location ~.*\.(jpg|gif|png)$ {valid_referers none blocked *.demo.com demo ...

  9. 迅雷不能下载download.php,迅雷无法下载磁力链接文件?一招解决问题

    iphone可以下载迅雷吗? 你好!之前可以下载,现在不能了.原因是针对近期有说法称"'XcodeGhost'木32313133353236313431303231363533e58685e ...

最新文章

  1. 【TensorFlow2.0】数据读取与使用方式
  2. go:系统参数or函数--未完
  3. Android LinearLayout
  4. 在Eclipse的DDMS中查找genymotion模拟器的sdcard中的文件---开发中遇到的问题(一)
  5. 使用枚举映射_用EnumMaps映射枚举键
  6. case函数,replace函数
  7. python 表情包 gif_几行 python 代码合成 gif / 微信表情~与恶意合成软件说再见【文末附代码】...
  8. java spring getbean_spring依赖注入中获取JavaBean
  9. 【渝粤教育】国家开放大学2018年春季 0314-21T兽医基础 参考试题
  10. POJ-2031-Building a Space Station
  11. ArcView 9.3 安装帮助指南(针对Student Edition-One-Year版本)
  12. eclipse配置jsp页面模板
  13. 微信任意用户密码修改漏洞分析
  14. 【学相伴】Nginx最新教程通俗易懂-狂神说
  15. Yii 使用EasyAPI实现发票
  16. 测试触控延时的软件,重点测试:触控屏响应时间_笔记本评测-中关村在线
  17. 单线服务器和双线服务器是什么意思?
  18. c2010页面闪现_Vue.js中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
  19. 在树莓派上安装centos 7,并配置softether本地网桥进行数据转发
  20. ubuntu14.04有线网卡检测不到问题

热门文章

  1. 零基础如何学好简笔画?—我用思维导图告诉你!
  2. Sql-server2019无域AlwaysOn集群
  3. 【KAWAKO】iphone13pro开箱流程
  4. 昨天写了这些骚代码,今天上班差点被同事揍了
  5. SERO即将销毁一半未产出的币
  6. Windos(nginx集群搭建)
  7. 关于数据在内存中的存储(进阶)
  8. 智慧校园:蓝牙人员定位系统如何守护校园安全?
  9. android设置--》应用程序详细信息--》强制停止
  10. 微信sdk服务器文档,4.4. 微信小程序 SDK 集成文档