上鸿观点

网站屏蔽外链和迅雷

Tags:

2013/4/11 11:21:29 by Michael


      公司托管的服务器最近访问非常的慢。查看流量一直在5M左右。但是公司网站的访问量没有那么大。

       仔细分析查找,发现是网站上的很多的资源:如音乐,图片被外链,别的网站引用了。公司网站是java语言开发的,所以做了一个filter过滤器,过滤了外链。但是一经过一段时间的观查发现流量被占用的原因应该是资源被迅雷占用了。经过查找相关资料发现一旦有用户使用迅雷下载后,你的资源会被他给收录。以后如果有用户要下载相同资源他会自动过来下载。其实资源共享本来没有什么,但是如果你每年花了近万的钱托管服务器,到头来网速却像乌龟一样慢,心里也会像吃了苍蝇一样吧。

        最好没有办法,只有对用户访问资源资源做一个限制。我的做法是像这类工具是直接对过地址来下载的。但是一般的用户会通过页面来下载,所以我会在页面加一个访问权限。

       下面是JAVA下的处理办法,如果是其它语言,思路同下。

        过滤Filter代码如下:

package misstimes.web.interceptor;


import java.io.IOException;

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;

 

public class ResourceLimit  implements Filter{

    public void init(FilterConfig filterConfig) throws ServletException {}
    
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {

     HttpServletResponse responseH=(HttpServletResponse)response;
     HttpServletRequest requestH=(HttpServletRequest)request;
     String url = requestH.getHeader("Referer");
     String myHostName = "misstimes.com";
     //String myHostName = "127.0.0.1";
     String ifActResource = (String)requestH.getSession().getAttribute("ifActResource");
     if(url == null||url.indexOf(myHostName)<=0||ifActResource==null){
      //System.out.println(ifActResource);
      //System.out.println(url);
      //System.out.println("--------------访问禁止");
      responseH.sendRedirect("/index.jsp");      
     }else{
      //System.out.println(ifActResource);
      //System.out.println(url);
      //System.out.println("--------------访问通过");
      chain.doFilter(request, response);
     }
    }
    public void destroy() {}
}

 

在页面中加上如下添加权限代码:

  String ifActResource = (String)session.getAttribute("ifActResource");
if(ifActResource==null){
 session.setAttribute("ifActResource","1");
}

这样暂时能屏蔽迅雷。

最后想对迅雷说,做得过了。一个企业应该有起码的道德线。




 
返回上鸿观点