什么是下载盗链

 
假设我们是一个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 ;
} if ($secure_link = "") {
return ;
} ...
}
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. --with-http_stub_status_module
# make
# make install
配置nginx
server {
listen ;
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 ;
}
if ($secure_link = "") {
return ;
} }
}
 
PHP下载页面
<?php
# 作用:生成 nginx secure link 链接
# 站点: www.ttlsa.com
# 作者:凉白开
# 时间: --
$secret = 'ttlsa.com'; # 密钥
$path = '/web/nginx-1.4.2.tar.gz'; # 下载文件
# 下载到期时间,time 是当前时间, 表示 秒,也就是说从现在到 秒之内文件不过期
$expire = time()+;
# 用文件路径、密钥、过期时间生成加密串
$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. nginx secure_link下载防盗链

    下载服务器上有众多的软件资源, 可是很多来源不是本站,是迅雷.flashget, 源源不断的带宽,防盗链绝对是当务之急. 使用来源判断根本不靠谱,只能防止一些小白站点的盗链,迅雷之类的下载工具完全无效 ...

  2. Nginx中防盗链(下载防盗链和图片防盗链)操作记录

    日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...

  3. Nginx中防盗链(下载防盗链和图片防盗链)及图片访问地址操作记录

    日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...

  4. Nginx图片防盗链【实战】

    访问我的博客 前言 博主目前在一家原创小说网站公司工作,由于站内的作品全部是原创,于是乎不可避免地会被一些盗版网站爬取盗版,对于防盗版一直没有很好的对策,让公司很是苦恼. 最近去一些盗版网站上搜索我们 ...

  5. 听说你的资源被盗用了,那你知道 Nginx 怎么防盗链吗?

    上一篇文章讲了 Nginx 中的变量和运行原理,下面就来说一个主要提供变量并修改变量的值的模块,也就是我们要讲的防盗链模块:referer 模块. 简单有效的防盗链手段 场景 如果做过个人站点的同学, ...

  6. 完美的nginx图片防盗链设置详解

    一般,我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显示,但是您如果通过浏览器直接输入图片地址,仍然会显示图片,仍然可以右键图片另存为下载文件!依然可以下载?这样就不是彻底的防盗链了! [r ...

  7. nginx 有关防盗链的设置

    http://blog.csdn.net/longjef/article/details/53284108 关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链 ...

  8. nginx作防盗链设置

    盗链是一种损害原有网站合法权益,给原网站所在服务器造成额外负担的非法行为. 盗链的实现原理: 客户端向服务器请求资源时,为了减少网络带宽,提高响应时间,服务器一般不会一次将所有资源完整地传回给客户端. ...

  9. NGINX 如何防盗链

    一.安装Nginx: 1.解决依赖关系 # yum groupinstall "Development Tools" "Server Platform Deveopmen ...

随机推荐

  1. Ubuntu下修改NAT模式的IP地址

    1,查看虚拟机的网段 在编辑->虚拟网络编辑器->NAT设置->网关 IP  可以查看到虚拟机的网关 如图 2,图形化设置: 图中 Netmask设置的是255.255.255.0 ...

  2. Chrome 本地通信

    http://blog.csdn.net/ztmaster/article/details/52684772

  3. 【uva11732-"strcmp()" Anyone?】Trie

    http://acm.hust.edu.cn/vjudge/problem/28438 题意:给定n个字符串,问用strcmp函数比较这些字符串共用多少次比较. 题解: 插入一个‘#’作为字符串的结束 ...

  4. 01-导航实例-QQ空间Demo示例程序源代码

    01-导航实例-QQ空间.zip62.4 KB // MJLoginViewController.h Map // //  MJLoginViewController.h //  01-导航实例-QQ ...

  5. Ubuntu10.04中利用V4L2读取摄像头数据并保存成文件【转】

    转自:http://blog.chinaunix.net/uid-29339876-id-4042245.html 利用V4L2读取UVC摄像头数据并保存成视频文件,主要参考http://linuxt ...

  6. phoronix-test-suite测试云服务器

    centos系统 phoronix-test-suite是目前Linux下比较常用的性能测试软件. 使用phoronix-test-suite条件前提:需要安装php5,需要PHP都DOM扩展 因为是 ...

  7. OpenCV-2.4.6-android-sdk 人脸识别demo搭建

    最近项目需要研究下人脸识别,在领导推荐下准备研究OpenCV 一,上官网了解下 基本知识 http://docs.opencv.org/doc/tutorials/introduction/andro ...

  8. gdrive无限网盘挂载systemd文件

    我的博客新地址:www.liuquanhao.com --------------------------------------------------------------------- 首先应 ...

  9. [BZOJ3209]花神的数论题 组合数+快速幂

    3209: 花神的数论题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2498  Solved: 1129[Submit][Status][Disc ...

  10. [BZOJ1494][NOI2007]生成树计数 状压dp 并查集

    1494: [NOI2007]生成树计数 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 793  Solved: 451[Submit][Status][ ...