Такие программы, как curl
или wget
имеют параметры --continue
(wget
) и --continue-at
(curl
), которые позволяют возобновлять прерванные загрузки, если данные не были повреждены.
wget
по умолчанию автоматически попытается возобновить загрузку, когда произойдет прерывание, поэтому вам не придется беспокоиться о нестабильной передаче.
Опция curl
--continue-at
обычно требует числового значения, но если вы передадите его -
вместо числа, он будет использовать свой выходной файл, чтобы определить, с какой точки он должен начать загрузку.
Пример использования (от man wget
) wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z
, curl ftp://sunsite.doc.ic.ac.uk/ls-lR.Z -o myfile.Z --continue-at -
Если вам нужно использовать некоторые конкретные файлы cookie, заголовки, отправку данных POST или что-либо еще для получения файла, современные браузеры (через панель инструментов разработчика, например, F12) позволяют вам скопировать команду запроса curl
которую можно использовать для доступа к этому ресурсу. (см. изображения)
Fire Fox:
Хром:
Просто скопируйте это как curl
а затем вставьте в консоль, добавив соответствующие флаги. Если команда не выполнена, вы можете просто вызвать curl
еще раз (куки могут быть признаны недействительными, поэтому вам может потребоваться запросить в браузере новую команду curl
) и продолжить загрузку.
Это может показаться сложным процессом получения команды, но он очень универсален - можно загружать почти все виды материалов, которые вы просматриваете в браузере, с помощью команды curl
предоставляемой браузером, возможно угадывая следующие ссылки 1 и вставляя вывод вместе.
1 Книга может быть загружена таким образом, что вы загружаете не весь PDF по одному запросу, а страницу за страницей, каждая по разному адресу. Поэтому вам нужно отправить запрос на www.example.com/page1.pdf
, www.example.com/page2.pdf
и www.example.com/page3.pdf
, чтобы получить три страницы.
Некоторые видеопотоки не отправляют видео по одному запросу, но требуют, чтобы клиент спрашивал о каждом сегменте видео отдельно.
В обоих случаях механизм прост: угадать следующий шаблон генерации ссылок, запросить все ссылки и затем "объединить" (в зависимости от типа файла) выходные данные.