繁体   English   中英

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

[英]How do you detect if a file is being downloaded by a Browser or a Download Manager

我对诸如Rapidshare这样的文件共享站点如何检测通过下载管理器下载文件的用户感到好奇。

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

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

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

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

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

实时地,您可以向那些参数“询问”客户端类型(IE,Firefox或独立客户端)的类型,并对它做出反应,例如阻止下载。

Rapidshare之类的网站无法访问您的浏览器/下载管理器。 他们根据您的IP地址从服务器中找到有关您下载内容的信息。

我认为您无法制作任何具有此类权限的Web应用程序。

您想预防什么? 一个下载管理器本身并不是邪恶的。

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

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

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

我相信引荐来源网址( http://en.wikipedia.org/wiki/HTTP_referrer )可以用作另一个廉价的检查,以查看在何处启动下载。

大多数下载管理器还使用Accept-Header HTTP标头,允许部分内容下载并通过重置重新启动。 在此处查看一些文档: HTTP状态:206部分内容和范围请求

如果您要阻止可恢复的下载和多连接下载,则应在response中添加一个Accept-Ranges:none标头。

在Asp.net或Asp.net MVC中:

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

要了解更多信息,请参见接受范围

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM