【问题标题】:How do you detect if a file is being downloaded by a Browser or a Download Manager您如何检测文件是否正在由浏览器或下载管理器下载
【发布时间】:2010-12-12 11:31:56
【问题描述】:

我很好奇 Rapidshare 等文件共享网站如何检测用户通过下载管理器下载文件。

如何启用 ASP.NET Web 应用程序以阻止从下载管理器下载。

【问题讨论】:

    标签: c# asp.net download download-manager


    【解决方案1】:

    当您是服务器时,您可以收到一些有关访问您的客户端的有趣信息。

    其中一个参数是告诉您“用户代理”,或者简单来说就是浏览器类型。

    在 PHP 中,它位于数组 $_SERVER (http://php.net/manual/en/reserved.variables.server.php) 中。

    在 Dot Net 中,我认为它是 HttpRequest 类 (http://msdn.microsoft.com/en-us/library/system.web.httprequest.aspx) 的一部分。

    您可以实时“询问”这些参数什么是客户端类型(IE、Firefox 或独立客户端),并对其做出反应,例如阻止下载。

    【讨论】:

    • 是的,用户代理是个好主意。但如果我没记错的话,它可以被欺骗。
    【解决方案2】:

    你想防止什么?下载管理器本身并不邪恶。

    您如何定义下载管理器?每个网络浏览器都有一个不同质量的集成下载管理器。

    您应该尽量避免在下载管理器中出现您不喜欢的行为,而不是下载管理器本身。

    • 您可以使用验证码阻止自动下载(但可能并不总是有效并且会惹恼用户)
    • 您可以通过每个 IP 只允许一次下载来防止并行下载。

    【讨论】:

    • 我只是好奇它们是如何工作的。用户代理是检测它的一种可能方法。
    【解决方案3】:

    rapidshare 等网站无法访问您的浏览器/下载管理器。他们根据您的 IP 地址从他们的服务器上找到有关您下载的信息。

    我不认为您可以制作任何具有此类权限的网络应用程序。

    【讨论】:

    • 我知道的几乎每个文件共享网站都有支持下载加速器的付费版本。如果您尝试从诸如 rapidshare 之类的网站下载文件,如果您碰巧使用了 FlashGet 之类的下载管理器,它会阻止下载发生。
    • 有点不同,他们检测到代理访问url并根据请求允许访问。同样,如果下载用户不是高级会员,它们会阻止来自相同 IP 的同时请求。
    【解决方案4】:

    我相信引荐来源网址 (http://en.wikipedia.org/wiki/HTTP_referrer) 可以用作另一种廉价检查,以查看从哪里开始下载。

    【讨论】:

      【解决方案5】:

      大多数下载管理器还使用Accept-Header HTTP 标头,允许部分内容下载并通过重置重新启动。在此处查看一些文档:HTTP Status: 206 Partial Content and Range Requests

      【讨论】:

        【解决方案6】:

        如果您的意思是阻止可恢复下载和多连接下载,您应该在您的响应中添加 Accept-Ranges:none 标头。

        在 Asp.net 或 Asp.net MVC 中:

        Response.AddHeader("Accept-Ranges", "none");

        要了解更多信息,请参阅Accept-Ranges

        【讨论】:

          猜你喜欢
          • 2015-06-02
          • 1970-01-01
          • 2015-06-29
          • 2010-11-09
          • 2010-12-19
          相关资源
          最近更新 更多