как в rapidshare.de?

bevaine

Новичок
как в rapidshare.de?

Мне интересно как реализована защита от нескольких потоков скачивания на rapidshare.de? Переходишь по ссылки, ждешь примерно 30 секунд, получаешь рефер, качаешь качалкой, качается в один поток, остальные блокируются. Прерываю закачку (нажимаю пауза), потом опять возобновляю закачку все нормально докачивается дальше. Вопрос, как скрипт узнает что я продолжаю закачку а не окрываю очередной дополнительный поток, ведь нельзя никак определить что закачка прервалась.
 

kvf77

Red Devil
bevaine

тебе нужно про антилич читать - воспользуйся поиском

antileech
 

bevaine

Новичок
я нашел антилич но там, нет защита от нескольких потоков скачиваний.
 

SiMM

Новичок
> Мне интересно как реализована защита от нескольких потоков скачивания на rapidshare.de?
Не поддерживать докачку (не выдавать заголовка Accept-Ranges) - и всего делов то.
 

bevaine

Новичок
вы плохо читали мой первый пост. я весь инет перыл ни чего не еашел нужного.
SiMM если не буду выдавать заголовок Accept-Ranges, то как докачивать файл после прерывания закачки?
 

SiMM

Новичок
> SiMM если не буду выдавать заголовок Accept-Ranges, то как докачивать файл после прерывания закачки?
Никак. А что, rapidshare это умеет?
Ага. Ну так при запуске скрипта пишете в базу, что мол такой-то файл с таким-то id скачивается - как только скрипт завершил работу - удаляете запись. Либо удаляете её по таймауту. Пока в базе лежит непросроченный id - отдаёте на запрос 404 или что-то более подходящее.
 

bevaine

Новичок
да умеет, разрешает какчать только в один поток, на части разбивать не дает, если прервал закачку то потом будет возможно докачать файл, судя из логов flashget'a, когда разбивает на части то ranges подавляется, а при докачки проходит.

-~{}~ 03.11.05 13:38:

Автор оригинала: SiMM
Никак. А что, rapidshare это умеет?
Ага. Ну так при запуске скрипта пишете в базу, что мол такой-то файл с таким-то id скачивается - как только скрипт завершил работу - удаляете запись. Либо удаляете её по таймауту. Пока в базе лежит непросроченный id - отдаёте на запрос 404 или что-то более подходящее.
например я остановил закачку, как скрипт это узнает( в базе числиться что я его скачиваю), а потом сразу возобновил закачку, по идеи range должен блокироваться, а на rapidshare не так. Вообще закрыть сесию можно только когда указать дойдет до конца файла, другой выход не вижу :(
 

SiMM

Новичок
> например я остановил закачку, как скрипт это узнает
Никак. А почему ты решил, что на rapidshare это сделано средствами PHP, при чём - исключительно стандартными?
 

berkut

Новичок
если мыслить в плоскости пхп, то ведь можно при отдаче писать в базу/сшм ип и имя файла. при отдаче проверять connection_aborted() если клиент отвалился - удалять запись из базы и выходить. при старте скрипта проверять наличие пары ип-файл в бд, если есть, то 404
 

bevaine

Новичок
connection_aborted() не работает при загрузке файла, проверено мной.
 

berkut

Новичок
и правда, как-то странно. я проверял примеры из комментов в мане, ни на винде ни на фрибсд не работают!? Хотя в комментах-то пишут, что работает!?
PHP:
Set_Time_Limit(60); //this you know what gonna do
Ignore_User_Abort(True); //this will force the script running at the end
While (!Connection_Aborted()) {
    Echo "\n"; //this will save de while
    Flush(); //Now php will check de connection
    Sleep(1);
}
 

berkut

Новичок
нифига-се, это получается, что это 100% работает только в пхп3? а как-же надпись из мануала Returns connection status bitfield (PHP 3 >= 3.0.7, PHP 4, PHP 5)
 

bevaine

Новичок
вообще-то написано:
Note: The following applies to 3.0.7 and later.
later - позже(англ.), SiMM - учи английский.
 

Steamroller

Новичок
например я остановил закачку, как скрипт это узнает( в базе числиться что я его скачиваю), а потом сразу возобновил закачку, по идеи range должен блокироваться, а на rapidshare не так.
Смысл такой: ты сделал пометку, что на такой-то ip идет отдача. Далее вызываешь функцию, которая отдает юзеру файл (fpassthru или readfile). Если эта функция вернула не ожидаемое число байт (или вообще false) - снимаешь пометку, и завершаешь работу скрипта.
 

SiMM

Новичок
> Note: The following applies to 3.0.7 and later.
Значит это оплошности русского перевода (в английский смотреть не стал).

> Смысл такой
Если это работает - просьба отписаться.
 

berkut

Новичок
баги в переводе.
>> SiMM Если это работает - просьба отписаться.
присоеденяюсь.
Вот у меня не работает. Скачка картинки через скрипт занимает ~8 сек. А readfile() выполняется меньше секунды и всегда возвращает размер картинки. Вот такая штука.
 
Сверху