热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

使用Apache打造完美限制的HTTP下载服务器

话说现在建站真不容易,想好好搞一个下载站,总会被人WC的采集,盗链,攻击,无人值守的垃圾站比苦心经营的站收入还要可观。所以保卫好自己的服务器是一件很重要的工作

一开始本来准备选择使用FTP作为下载服务器的,不过过了几天就发现很多都是通过盗链的方式来FTP下载。这下服务器在持续性全速提供上传,但是网站的页面浏览量却少得可怜。因为FTP天生不能放盗链的特性所以只能考虑放弃使用,最后决定用HTTP下载来替代。

   直接用HTTP服务器下载也不是很容易的事。最开始在IIS里面配置,IIS只能设定最大下载速度和最大连接数,这对于一些使用下载工具一来就开50+线程霸道下载的朋友明显是防不住的。网上搜了N久就发现一个用Delphi写的看不懂的ISAPI Filter以及别的收费软件若干。试过之后都起不了作用,也便放弃了,最后发现Apache有这些开源的功能模块,最终打造出完美限制的HTTP下载服务器。

首先说说完美限制的意思:防盗链、限制客户端下载线程数,限制下载带宽。下面一一介绍怎么在Apache里面实现这些功能。

   防盗链

   传统的防盗链都是通过Referer来判断用户来路的,不过这样的方法对于下载工具来说形同虚设,因为现在的下载工具早就能伪造Referer了。

   现在一些流行的防盗链的方式都是用在浏览页面的时候产生一个随机验证码,在用户点击连接的时候服务器会验证这个验证码是否有效从而决定是否允许下载。或者就是用某些方法把文件实际地址进行伪装。不过我觉得这些都不怎么好用,我用了一个简单有效的方式来实现防盗链。

   其实就是用COOKIE,配合Apache的URL Rewrite模块很简单的就能实现防盗链下载。
   首先在浏览页面的时候,会向客户端发送一个特别的COOKIE,例如“Site=3grjz.com“,盗链而来的将没有这个COOKIE。

   在Apache的httpd.conf文件里面搜索:

   #LoadModule rewrite_module modules/mod_rewrite.so

  把它前面的#去掉,再找到块,在里面加入类似如下代码:

代码如下:

   
  # Other configurations …
  RewriteEngine On   # 启动URL Rewrite引擎
   RewriteCond   %{HTTP_COOKIE} !^.*(?:Site=3grjz.com).*$   # 对于COOKIE里面没有特殊记录的请求进行重定向

   RewriteRule ^.*$ error.html # 将非法访问重定向到错误页面
   


  这样如果一个盗链而来的请求将会因为没有特殊COOKIE而被重定向到错误页面,就算实际地址暴露也不怕。至于这个COOKIE的内容是什么以及有效时间完全可以由管理员自己来设定,也就是说下载工具也没法伪造,从而防止了服务器资源被盗链的危险。

   限制客户端多线程下载操作流程

   限制多线程现在需要用到一个Apache的扩展模块mod_limitipconn,这里是作者的官方网站[url]http://dominia.org/djao/limitipconn2.html[/url],先下载适合自己版本的模块文件到Apache安装目录下的modules目录下面,然后在httpd.conf文件中搜索:

   #LoadModule status_module modules/mod_status.so

  把它前面的#去掉,再加入:

   ExtendedStatus On
  LoadModule limitipconn_module modules/mod_limitipconn.dll
 # 如果你下载的不是Win版,请把后面的文件名改为你所下载的文件名

代码如下:

   

   # 这里表示限制根目录,即全部限制,可以根据需要修改
   MaxConnPerIP 2 # 这里表示最多同时两个线程
   NoLimit html/* # 这里表示html目录下不受限制
   

  

  这样来自同一客户端的超过2个的线程请求将被拒绝,从而限制了客户端的多线程下载。

   限制下载带宽操作流程

   这个同样需要扩展模块支持,模块是mod_bw,在作者的官方网站[url]http://ivn.cl/apache/[/url]可以下载到。同样也是放入modules目录下面,然后在httpd.conf文件中加入:

   LoadModule bw_module modules/mod_bw.dll
  再找到块,加入:

代码如下:

   
  # Other configurations …
  BandwidthModule On # 启动带宽限制
   ForceBandwidthModule On # 启动带宽限制
   MaxConnection all 2000 # 最大连接数2000
  Bandwidth all 200000 # 单个客户端最大带宽200KB
  

  这样限制了同时最多2000个连接数,每个客户端最大200KB的下载带宽。

   到此,我们的完美限制的HTTP下载服务器就配置完成了,重新启动你的Apache这些功能便能生效了。因为Apache和这些模块都是开源免费的,我们不需要为此掏一分钱,不用去购买那些第三方的软件,只是需要多去了解一下这些软件的使用说明。不要一切都祈祷有现成美好的东西,自己动手做一次会有不一样的收获。


推荐阅读
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • “近年来最大计算机漏洞”被中国程序员发现!
    头条中国程序员,计算机漏洞头条(观察者网讯)据美联社12月11日报道,中国阿里云安全团队在Web服务器软件阿帕奇(Apache)下的开源日志组件Log4j内,发现一个漏洞Log4S ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 做好了项上,其中包含有一个上传的功能。在开发环境和测试环境运行、测试都没什么问题。也许是由于本地的局域网的问题,一切都运行的比较快,但把它发布到外网的服务器上去时。就特别的慢。上传小的文件还算比 ... [详细]
  • 本文目录一览:1、java中几种解析html的工具 ... [详细]
  • win10下载速度慢
    运维|windows运维win10,下载,速度慢运维-windows运维秒赞源码详细说明,vscode怎么跑项目,台电安装ubuntu,tomcat记录请求报文,sqlite的数据 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 搜索+剪枝 POJ 1416 Shredding Company
    POJ1416ShreddingCompanyTimeLimit: 1000MSMemoryLimit: 10000KTotalSubmissions: 5231Accepted: ... [详细]
  • ASP.NETCoreZero笔记(PowerTools)
    安装ASP.NETCoreZeroPowerTool根据官方的介绍,使用该工具,可以快速得创建具备单个表结构及父子表结构的服务以及前端页面。服务:指的是生产对应基础功能webApi ... [详细]
author-avatar
mobiledu2502892513
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有