Как определить, загружается ли файл браузером или менеджером загрузки

Мне любопытно, как сайты обмена файлами, такие как rapidshare, обнаруживают пользователей, загружающих файлы через менеджеры загрузки.

Как включить веб-приложение ASP.NET, чтобы предотвратить загрузку из диспетчера загрузки.


person ashwnacharya    schedule 12.12.2010    source источник


Ответы (6)


Когда вы являетесь сервером, вы можете получать интересную информацию о клиенте, который обращается к вам.

Один из параметров сообщает вам «User Agent», или, проще говоря, тип браузера.

В 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 или независимый клиент) и отреагировать на это, например, запретив загрузку.

person taxman    schedule 12.12.2010
comment
Да, пользовательский агент — хорошая идея. Но его можно подделать, если я не ошибаюсь. - person ashwnacharya; 12.12.2010

Что вы хотите предотвратить? Менеджер загрузок сам по себе не зло.

Как вообще определить менеджер загрузок? Каждый веб-браузер имеет встроенный менеджер загрузок разного качества.

Вы должны попытаться предотвратить поведение, которое вам не нравится в менеджерах загрузки, а не в самих менеджерах загрузки.

  • Вы можете предотвратить автоматическую загрузку с помощью капчи (но это может не всегда работать и раздражать пользователей).
  • И вы можете предотвратить несколько параллельных загрузок, разрешив только одну загрузку с одного IP-адреса.
person CodesInChaos    schedule 12.12.2010
comment
Мне просто интересно, как они работают. Пользовательский агент — один из возможных способов его обнаружения. - person ashwnacharya; 12.12.2010

Такие сайты, как rapidshare, не имеют доступа к вашим браузерам/менеджерам загрузки. Они узнают информацию о ваших загрузках со своего сервера по вашему IP-адресу.

Я не думаю, что вы можете сделать какое-либо веб-приложение, которое может иметь такие разрешения.

person crodjer    schedule 12.12.2010
comment
Почти на каждом известном мне файлообменнике есть платные версии, поддерживающие ускорители загрузки. Если вы попытаетесь загрузить файл с сайта, такого как, скажем, rapidshare, это предотвратит загрузку, если вы используете менеджер загрузок, такой как FlashGet. - person ashwnacharya; 12.12.2010
comment
это немного отличается, они обнаруживают URL-адрес доступа агента и разрешают доступ в соответствии с запросом. Точно так же они блокируют одновременные запросы с одного и того же IP-адреса, если загружающий пользователь не является премиум-членом. - person crodjer; 12.12.2010

Я считаю, что можно использовать реферер ( http://en.wikipedia.org/wiki/HTTP_referrer ) как еще одна дешевая проверка, чтобы увидеть, где инициируется загрузка.

person Alexei Levenkov    schedule 12.12.2010

Большинство менеджеров загрузок также используют HTTP-заголовок Accept-Header, позволяющий загружать частичный контент и перезапускать его после перезагрузки. См. некоторые документы здесь: Статус HTTP: 206 частичных запросов содержимого и диапазона

person Simon Mourier    schedule 12.12.2010

если вы имеете в виду предотвращение возобновляемых загрузок и загрузок с несколькими подключениями, вы должны добавить заголовок Accept-Ranges:none к своему ответу.

В Asp.net или Asp.net MVC:

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

Чтобы узнать больше об этом, см. раздел Accept-Range.

person Karim    schedule 26.04.2013