|
|
|
| Есть много разных программ, предназначенных для скачивания сайтов. А что произойдёт, если на скачиваемой странице встретится такой код:
| |
|
|
|
|
|
|
|
для: Владимир55
(07.02.2009 в 18:19)
| | УМРЕШЬ :)
такого на скачиваемой (из браузера) страницы быть не может. рнр-код выполняется на сервере. | |
|
|
|
|
|
|
|
для: elenaki
(07.02.2009 в 18:28)
| | да, но подозревая, что тезка говорит как раз о том, что будет с html кодом страницы при таком php раскладе, скажу, что страница просто будет пустой ) | |
|
|
|
|
|
|
|
для: ddhvvn
(07.02.2009 в 19:24)
| | Я говорю о странице, которая расположена на моем сайте. И я вправе разместить в ней всё, что угодно. В частности, упомянутый мною код. А воспроизводиться будет всё своим чередом - что на сервере, что вне его.
Как известно, броузер при скачивании обычно не используется, а применяется file_get_contents или что-то подобное. И я ищу способ, что бы внешний "скачивальщик" не просто получил пустую страницу, а как бы "завис" на ней.
Возможно такое? | |
|
|
|
|
|
|
|
для: Владимир55
(07.02.2009 в 20:41)
| | Возможно. Ставится sleep с большим значением. Так что либо срабатывает ограничение на работу скрипта, либо, если оно убрано, то качалка будет ждать пока у нее не истечет таймаут. | |
|
|
|
|
|
|
|
для: Loki
(07.02.2009 в 22:30)
| | Вот это классное решение!
Спасибо, Loki ! | |
|
|
|
|
|
|
|
для: Loki
(07.02.2009 в 22:30)
| | Так же будет ждать и обычный пользователь. | |
|
|
|
|
|
|
|
для: BinLaden
(08.02.2009 в 00:37)
| | Обычный пользователь сюда не попадет. Я хочу сделать ловушку для качалок. | |
|
|
|
|
|
|
|
для: Владимир55
(08.02.2009 в 03:27)
| | Нормальная качалка пропустит эту страницу и пойдет дальше. | |
|
|
|
|
|
|
|
для: Drago
(08.02.2009 в 03:32)
| | А если вместо sleep ей выдать 10 мб мусора - будет качать? | |
|
|
|
|
|
|
|
для: Владимир55
(08.02.2009 в 11:16)
| | Будет, однако, это может занять ресурсы, предназначенные для нормальных пользователей - грубо говоря ваш сайт будет проще положить путем DDOS-атаки. Веренее даже распределенной сети атакующих не потребуется - достаточно будет несколько качалок. Однако, если посещаемость не высокая - можно попробовать. | |
|
|
|
|
|
|
|
для: cheops
(08.02.2009 в 13:05)
| | Качалками я сам не пользовался, но могу предположить, что они имеют настройки, ограничивающие максимальный вес скачиваемого файла.
Как Вы полагаете, сколько "мусора" будет нормально, что бы занять качалку, но что бы она не отказалась от скачивания этого файла?
10 мб - много? | |
|
|
|
|
|
|
|
для: Владимир55
(08.02.2009 в 13:23)
| | Но ведь в этом случае пользователь тоже будет качать эти самые 10 мб или ждать пока завершится sleep
Разницы между нажатием Ctrl+S в браузере и программой для скачивания сайтов нету, разве что во втором случае это автоматизировано | |
|
|
|
|
|
|
|
для: ChieFSS
(08.02.2009 в 13:47)
| | Пользователь здесь никогда не окажется - это ловушка для качалок.
Осталось только понять, какие по размеру файлы качалки не откажутся скачивать. | |
|
|
|
|
|
|
|
для: Владимир55
(08.02.2009 в 13:56)
| | Ну вот к примеру гл.страница фишек.нет весит 2.7 мб
Если сайт попроще, я думаю 1 мб качать будут
Попробуйте бесконечный цикл :) | |
|
|
|
|
|
|
|
для: ChieFSS
(08.02.2009 в 14:05)
| | "Попробуйте бесконечный цикл :)"
В каком смысле? | |
|
|
|
|
|
|
|
для: ChieFSS
(08.02.2009 в 14:05)
| | Бесконечный цикл (особенно если будет много операций с базой данных или сетью) положит сервер при первом же заходе любой многопоточной качалки. В эту сторону уже предлагалось решение - тут разумнее sleep() использовать - и ресурсы сервера не тратятся и клиент ждет, особенно, если ему в перерывах что-нибудь давать (но, столько, чтобы это не осядало в буфере). | |
|
|
|
|
|
|
|
для: Владимир55
(08.02.2009 в 13:56)
| | Да дело в том, что они и не смогут определить размер файла, если вы его сами им не сообщите при помощи HTTP-заголовка Content-length, выводите содержимое файла при помощи echo, а не путем перенаправления на файл и ни одна программа не сможет узнать сколько в конечном итоге ей предстоит загрузить. Если Oper пользуетесь и качаете ей объемные файлы, например, те же дампы из phpMyAdmin - возможно замечали, что вместо размера файла стоит знак вопроса - тоже самое происходит и в других качалок. О том узнает клиент конечный размер файла или нет - зависит только от вашей доброй воли. | |
|
|
|
|
|
|
|
для: Drago
(08.02.2009 в 03:32)
| | >Нормальная качалка пропустит эту страницу и пойдет дальше.
Совсем необязательно: в php есть такая классная штука как ob_implicit_flush, которая позволяет отправлять клиенту данные не дожидаясь завершения работы скрипта. Так что можно качалку все время "держать в тонусе", выдавая ей каждые 20-25 секунд по строчке текста. | |
|
|
|
|
|
|
|
для: Loki
(09.02.2009 в 10:55)
| | по-моему, в первую очередь, в тонусе будет находиться сам сервер. Пока не поляжет :) | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2009 в 11:48)
| | А про это вопроса небыло:) | |
|
|
|
|
|
|
|
для: Владимир55
(07.02.2009 в 18:19)
| | Я конечно не спец еще, а так только учусь. А что если просто вычеслять качалка это или еще что то, и из этих данных потом принимать решение давать или не давать. | |
|
|
|
|
|
|
|
для: magic
(09.02.2009 в 12:19)
| | Еще проще и естественнее - ничего не определяя, просто давать, уж коль просят.
[поправлено модератором] | |
|
|
|