如何检测浏览器或下载管理器是否正在下载文件

时间:2010-12-12 11:31:56

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

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

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

6 个答案:

答案 0 :(得分:2)

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

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

在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或独立客户端),并对其做出反应,如阻止下载。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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

您应该尝试在下载管理器中防止您不喜欢的行为,而不是下载管理器本身。

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

答案 3 :(得分:1)

我相信引荐来源(http://en.wikipedia.org/wiki/HTTP_referrer)可以用作另一个便宜的检查,以查看下载的启动位置。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

在Asp.net或Asp.net MVC中:

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

要了解详情,请参阅Accept-Ranges