Как сделать из Яндекс.Диск’а безлимитную систему хранения файлов
Эта статья является заключительной в серии моих постов про Яндекс.Диск и загрузку файлов: обход каптчи, даунлоад части файла с RANGE запросом из удаленного источника и автоматический аплоад на Яндекс.Диск. Все эти посты объединяет одно желание, разобраться, как именно работает система защиты Яндекс.Диск’а и какие у нее недостатки. Я ни в коем случае не хочу сказать, что в Яндексе работают непрофессионалы, наоборот, изучая код, я пришел к обратному выводу. Единственная цель этой статьи, на примере Яндекс.Диск’a показать, как можно из бесплатного файлового хостинга сделать бесплатное хранилище под Ваш проект, просто идея. Ну и конечно, дать некоторую пищу для размышления разработчикам подобных сервисов.
Итак, представляю вашему вниманию пример использования файлового хостинга Яндекс.Диск несовсем по назначению.
Загрузка файла самая простая часть в этой системе, вы можете прочитать, как это делается в моем предыдущем посте. Далее Яндекс.Диск выдает ссылку и вступает в действие следующая часть, обход каптчи.
Когда каптча успешно пройдена, система выдает вам временную ссылку, вида 18.dl19sd-narod.yandex.ru/disk/число/временный_хеш/имя_файла эта ссылка действительна только до той поры, пока вы не скачаете файл полностью или не пройдет по крайней мере 24 часа. Яндекс.Диск определяет это простейшим образом, HTTP Status Code 200. Как только сервер отдал Вам такой ответ, он больше ничего вам по этой ссылке не даст. Также существует ограничение на количество сгенерированных ссылок без каптчи, по последним данным за последние 5 минут, что не дает скачать много файлов за один раз. Кажется все логично? Как можно обойти такой «тупой каунтер», который просто считает сколько выдал ссылок, 1-2-3-4-5 и КАПТЧА. Да? Но в этом и проблема, именно тут и закладывается основа обхода этой системы. Нам ведь не надо хранить 5и гигабайтные файлы? Нам ведь нужно хранить наши файлики 5,10, 100 мегабайт? И что нам этот каунтер, когда есть архив? Под архивом, в данном конкретном случае, я подразумеваю простую склейку файлов.
Вы подготавливаете ваши файлы в 5и гигабайтные архивы, и используя скрипт даунлоада файлов по частям получаете к ним доступ. Даже если у вас 1 большой файл, достаточно просто добавить к нему 1 байт и все сработает. Так как ссылка действительна около суток, то за это время вы можете неограниченно выкачивать ваши файлы обратно. Яндекс.Диск будет думать, что вы просто качаете файл по частям, выдавая HTTP Status Code 206 и ссылка будет валидна даже после того, как вы скачаете файл! Именно по этой причине лимита 10 запросов без каптчи с Яндекс.Бар’ом за 5 минут (знатоки поправят, сколько точно) более чем достаточно. И не потому, что разработчик ошибся, а потому, что разработчик думал, что каптча защищает файл, а реально получается, что каптча защищает несколько файлов в одном файле.
Самое странное, что блокировка соединений происходит в пределах ссылки, а не в пределах IP адреса, т.е. Вы можете сгенерировать пару десятков ссылок и перегенерировать их по мере их выключения (примерно каждые 24 часа в настоящий момент) и качать с одного IP один и тот же файл в несколько потоков (по крайней мере у меня получилось). Так у вас всегда будет достаточное количество потоков для загрузки файлов. Периодически вам придется скачать файл полностью, чтобы не продлевать его жизнь в ручном режиме.
На самом деле, даже если Яндекс выключит возможность загрузки файлов без каптчи, проблему это не решит, так как ввести каптчу надо всего лишь раз в сутки (например, включить каптчу яндекс.диска в регистрацию на вашем проекте), чтобы качать из архива сколько душе угодно. Если же ввести ограничение на размер загруженного файла по ссылке, можно напороться на проблемы с некоторыми менеджерами загрузок, которые, в случае ошибок, могут часть файла перегрузить заново, особенно если размер файла большой, а канал не очень хороший.
Как все это можно использовать? Ну например, вы создаете очередную файловую помойку аля rapidshare.com или фотохостинг, но не хотите упираться в ограничения Яндекс.Фотки, какая основная проблема всех таких проектов? Правильно, где хранить файлы дешево. В случае с Яндекс.Диск вы можете просто купить шаред/VPS хостинг в Москве и рублей за 300 получить доступ к безлимитному 100 мегабит каналу до Яндекса. Т.е. при минимальном вложении вы получите файловую помойку неограниченной вместимости. Если немного потрудится, то реально сделать грамотный проект, с кешированием данных на шаред хостингах и с постоянным хранением на Яндекс.Диске.
Конечно, для крупных проектов, такие вещи не делаются, но думаю, что на начальных этапах развития вашего стартапа, на первый план выходит стоимость обслуживания серверов и систем хранения данных и в этом случае вы можете воспользоваться этой идеей.
P.S. Эта статья является результатом моего исследования и ни в коем случае не призывает использовать информацию в корыстных целях. Моя цель, помочь разработчикам улучшить безопасность веб приложений, заставить из подумать о том, что их приложение может использоваться не только так, как они это задумали изначально, а вот, например, таким «хитрым» способом. Именно поэтому никакого исходного кода законченной системы я приводить не буду.
P.P.S. По результатам коментариев в моем предыдущем посте, оказалось, что Яндекс относится лояльно к этой проблеме. Ну чтож, думаю, мы скоро это поймем, если скрипты, представленные в моих статьях продолжат свою работу 🙂
P.P.P.S. Настоящей статьей заканчивается эта серия, а также мой отпуск и мне пора опять выходить на работу, так что скорых новых постов ждать не следует. Надеюсь, вам понравились мои статьи.
- яндекс.диск
- хостинг файлов
- безопасность веб-приложений
Сообщество Империал: Скачивание с Яндекс диска — как это делать? — Сообщество Империал
jagd заказал: «. значительное превышение объёма мода над стандартным объёмом яндекс-диска делает скачивание мода крайне неудобным и проблематичным, не удаётся скачать даже отдельными папками.
Вижу два варианта, как исправить ситуацию:
1. Разбить файлы мода на Яндекс-диске по папкам размером существенно меньше 10Гб. Это несложно — просто вместо одной папки PIRATES сделать две или три: PIRATES(1), PIRATES(2), PIRATES(3).
2. Создать на яндекс-диске мода отдельную папку для обновлений. Копировать туда обновлённые файлы с сохранением структуры каталогов.
Надеюсь, авторы мода найдут способ изменить нынешнее положение вещей. «.
Flavius ответил: «Задание выполнено. Авторы мода нашли способ изменить положение вещей — выпущена Для просмотра ссылки Зарегистрируйтесь.
1. Архив мода сборки F-1 на ЯДиске разбит на три части размером существенно меньше 10Гб. Сборка включает в себя и мод, и игру, и наиболее актуальные саб-моды. Ошибиться при установке невозможно — установки просто нет(!) — мод установлен уже внутри архива, надо просто его распаковать. Недоскачать файлов и не узнать об этом нельзя — недоскаченные части архива не распакуются.
2. Отдельная папка создана. Она называется Для просмотра ссылки Зарегистрируйтесь. Там находятся и не вошедшие(по разным причинам) в основную сборку саб-моды, и дополнения — не поспевшие войти в основную сборку. При обновлении F-1, всё не поспевшее — туда включается.
3. Актуальной остаётся инструкция по скачиванию с Яндекс диска.
Скачивание с Яндекс диска — инструкция.
Принцип скачивания с ЯндексДиска такой.
Регистрируемся на ЯД, он предоставляет 10 Гб Вашего пространства в интернете. Открывая по ссылке нужный файл или папку, выбираем кнопку — Сохранить на свой ЯндексДиск. Нажимаем — сохраняем. Сохраняется почти мгновенно! Теперь, файл уже на Вашем личном пространстве в интернете. С него, со своего ЯД, уже и скачиваем. Можно скачать прямо так, но есть ещё улучшающий способ.
ЯД предлагает прогу-синхронизатор. — Устанавливаем к себе. Она на рабочий стол к Вам кидает ярлык — это папки синхронизации с тем Вашим ЯД, который у Вас в интернете. При простом открытии этих папок синхронизации, ЯД начинает автоматом закачивать то, что не синхронизировано. То есть — сохраненные Вами на Ваш интернет-диск файлы. Все.
Можно ничего не скачивать — синхронизация всё скачает. Причём быстро. Следите только, чтобы Ваш интернет-диск не был переполнен. А ещё, следите за размерами файлов! Они должны соответствовать моим. Такое бывает, что пользователь выдирает из своего синхронизатора файл раньше времени. И файл не успевает полностью вкачаться.
Вот и всё. — Просто, удобно и надёжно! Синхронизатор потом можно удалить, как программу, если он мешает. Ваши файлы тогда будут сохраняться просто в виртуале.
*Не пытайтесь скачать весь мод целиком, архивом — это не получится. А синхронизировать следует порциями меньше вместимости Вашего виртуального ЯД.
*В будущем, внимание следует уделять датам обновления вкладываемых мною файлов. Если у Вас файл с более ранней датой, чем на моём ЯД, значит я его обновил и следует его перескачать. Но об обновлении файлов, либо их состава, я буду сообщать разумеется. Что именно каждое обновление добавит — тоже буду рассказывать. Если я обновил файл и не сообщил об обновлении, значит оно было не существенным и не требующим обязательной срочной замены.
Вопрос: Как поделиться файлом через Яндекс.Диск?
Иногда может возникнуть необходимость поделиться файлом, загруженным в “облако”, например, Яндекс.Диск.
Такая потребность может возникнуть в т.ч при обращении в службу поддержки кассовой программы GBS.Market. Если файл очень большой, то не всегда технически есть возможность его отправить в обращении. Например, через обращения в Телеграм нельзя отправить файл объемом более 20Мб (из-за ограничений в API самого Телеграм).
Поделиться файлом через Яндекс.Диск очень просто. Необходимо:
- откройте приложение Яндекс.Диск
- скопируйте файл в имеющуюся папку или создайте новую папку
- нажмите правой кнопкой на файле, скопированном в Яндекс.Диск и выберите “скопировать ссылку на Яндекс.Диске”
- отправьте ссылку тому, с кем необходимо поделиться файлом
Аналогичным способом вы можете поделиться файлом, используя и другие облачные сервисы. Если у вас нет “облака”, установите Яндекс.Диск по инструкции.
Также статья отвечает на вопросы:
Как отправить большой файл в службу поддержки?
- 27 октября, 2023
- Просмотров 9
Как массово создать ссылки на Яндекс.Диск?
Можно ли как-то массово создать ссылки на файлы в Яндекс.Диске? К примеру, в папке 100 файлов и чтобы вручную для каждого файла не создавать, можно как-то ускорить этот процесс?
- Вопрос задан более трёх лет назад
- 2323 просмотра
Комментировать
Решения вопроса 2
Александр @ForestAndGarden
Совершенствовать среду обитания
Через андроид-приложение делается на удивление просто и интуитивно. Главное — выделить все те файлы, которыми хотите поделиться.
Ответ написан более трёх лет назад
Нравится 2 1 комментарий
Damian Lewis @DamianLewis Автор вопроса
Большое Спасибо! Этот вариант вполне устраивает
Программист
Использовать API, написав программу — получающую список файлов и публикующую их
Ответ написан более трёх лет назад
Нравится 1 1 комментарий
Damian Lewis @DamianLewis Автор вопроса
варианта для простых смертных нет?
Ответы на вопрос 1
Через iOS приложение Яндекс Диск так же можно сделать массовое создание ссылок для файлов на Яндекс Диске
(делал на iOS 17.0.3 / iPhone 14 Pro Max / версия iOS Яндекс Диск 4.92.0 от 15 октября 2023г.)
Как сделать:
1) Выделяем сначала один файл в папке со всеми файлами для которых нужно создать ссылки (долгим нажатием по одному файлу) далее -> «Выбрать» -> «Еще» -> «Выбрать все» -> «Поделиться» -> «Поделиться ссылками»
2) Приложение сгенерирует ссылки и сразу же откроется контекстное меню iOS, в нем выбираем «Скопировать» (приложение напишет вверху экрана «ссылки скопированы»)
3) Рекомендую вставить скопированные ссылки в пустую таблицу в Numbers для iOS, но можно и в заметки или в любой другой текстовый редактор (просто Numbers бесплатный))
Ответ написан 22 окт. 2023
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- Linux
- +1 ещё
Можно ли установить Яндекс.Диск на АльтЛинукс?
- нет подписчиков
- 22 мар.
- 224 просмотра