
В Linux существует несколько утилит для загрузки файлов из интернета, но две из них, wget и curl, являются наиболее популярными и мощными. В этой статье мы рассмотрим обе утилиты и изучим, как использовать их для загрузки файлов из интернета.
Wget
Wget - это бесплатная и открытая утилита командной строки для загрузки файлов из интернета. Wget способен загружать файлы по протоколам HTTP, HTTPS и FTP, а также поддерживает множество опций, которые позволяют настроить загрузку почти любым способом.
Синтаксис команды:
$ wget [опции]
Опции команды
- -V или --version - выводит информацию о версии команды wget и завершает работу программы.
- -h или --help - выводит подробную справку о команде wget и ее опциях.
- -b или --background - запускает процесс загрузки в фоновом режиме.
- -o или --out-file - указывает файл, в который будет записана отладочная информация.
- -d или --debug - включает режим отладки, что позволяет получать более подробную информацию о процессе загрузки.
- -v или --verbose - выводит подробную информацию о процессе загрузки на экран.
- -q или --quiet - отключает вывод информации о процессе загрузки на экран.
- -i или --input-file - указывает файл, содержащий список URL-адресов для загрузки.
- --force-html - принудительно интерпретирует входной файл как HTML-файл.
- -t или --tries - указывает количество попыток загрузки файла в случае неудачной загрузки.
- -O или --output-document - указывает имя файла для сохранения загружаемого файла.
- -c или --continue - продолжить загрузку файла, если она была прервана.
- -S или --server-response - выводит ответ сервера на экран.
- --spider - выполняет только проверку доступности URL-адресов без их загрузки.
- -T или --timeout - устанавливает время ожидания для соединения и загрузки файлов.
- --limit-rate - ограничивает скорость загрузки.
- -w или --wait - добавляет задержку между загрузками файлов.
- -Q или --quota - ограничивает количество загружаемых данных.
- -4 или --inet4only - указывает использовать только протокол IPv4.
- -6 или --inet6only - указывает использовать только протокол IPv6.
- -U или --user-agent - указывает пользовательский агент, который будет использоваться для загрузки файлов.
- -r или --recursive - загружает файлы рекурсивно, то есть загружает все файлы, связанные с указанным URL.
- -l или --level - указывает максимальную глубину рекурсивного поиска.
- -k или --convert-links - конвертирует все ссылки на локальные ссылки.
- -P или --directory-prefix - указывает каталог, в который будут сохранены загружаемые файлы.
- -m или --mirror - загружает файлы, заменяет удаленные файлы на локальных дисках и удаляет локальные файлы, которых нет на удаленном сервере.
- -p или --page-requisites - загружает все дополнительные файлы, связанные с HTML-страницей, такие как изображения и скрипты.
Примеры использования команды wget
-
Скачивание одного файла:
$ wget https://example.com/file.txt
Эта команда загрузит файл file.txt с сайта example.com в текущую директорию.
-
Скачивание нескольких файлов из списка в файле:
$ wget -i list.txt
Файл list.txt содержит список URL-адресов файлов, каждый URL-адрес на новой строке. Данная команда загрузит все файлы из списка в текущую директорию.
-
Скачивание файлов в фоновом режиме:
$ wget -b https://example.com/file.txt
Эта команда загрузит файл file.txt с сайта example.com в фоновом режиме. Это позволяет продолжать работу в терминале, пока файл загружается.
-
Скачивание файлов с использованием авторизации:
$ wget --user=username --password=password https://example.com/file.txt
Эта команда загрузит файл file.txt с сайта example.com, используя логин и пароль для авторизации.
-
Скачивание файлов рекурсивно:
$ wget -r https://example.com/
Эта команда загрузит все файлы с сайта example.com, включая все страницы, изображения, стили и скрипты, находящиеся в его поддиректориях.
При рекурсивной загрузке желательно указывать глубину рекурсии с помощью опции -l или --level. По умолчанию значение данной опции равно 5. Например, если вы хотите загрузить только главную страницу, используйте -l 1. Если вы хотите загрузить главную страницу и все страницы, на которые есть ссылки на главной странице, используйте -l 2, и т.д.
-
Скачивание файлов с сохранением структуры директорий:
$ wget -r -nH --cut-dirs=1 -P /path/to/save https://example.com/
Эта команда загрузит все файлы с сайта example.com и сохранит их в директорию /path/to/save с сохранением структуры директорий (т.е. каждый файл будет сохранен в своей поддиректории). Опция --cut-dirs=1 удаляет первый уровень директорий из URL-адресов файлов, чтобы сохранить структуру директорий в соответствии с оригинальным сайтом.
Curl
Curl - это еще одна мощная утилита командной строки для загрузки файлов из интернета. Она также поддерживает протоколы HTTP, HTTPS и FTP, а также поддерживает множество других протоколов, таких как SMTP и POP3.
Синтаксис команды:
$ curl [опции]
Опции команды
Команда curl предоставляет множество опций, которые можно использовать для настройки запросов и получения информации от серверов. Вот список всех опций команды curl:
- -a, --append - добавлять данные в конец файла вместо перезаписи.
- -A, --user-agent - устанавливает User-Agent заголовок.
- -b, --cookie - отправлять куки в запросе.
- -c, --cookie-jar - сохранять куки в файл.
- -d, --data - отправлять данные в теле запроса.
- -e, --referer - устанавливает Referer заголовок.
- -f, --fail - немедленно выйти с ошибкой, если запрос не завершится успешно.
- -F, --form - отправлять данные в теле запроса как форму.
- -H, --header - добавлять заголовок к запросу.
- -i, --include - включать заголовки ответа в вывод.
- -I, --head - выполнять HEAD запрос.
- -j, --junk-session-cookies - игнорировать куки сессии при сохранении куки в файл.
- -k, --insecure - игнорировать ошибки SSL.
- -L, --location - следовать за редиректами.
- -m, --max-time - максимальное время выполнения запроса.
- -n, --netrc - использовать файл .netrc для авторизации в сервере.
- -o, --output - сохранять вывод в файл.
- -O, --remote-name - сохранять вывод в файл с именем, полученным от сервера.
- -p, --proxytunnel - использует HTTP CONNECT для соединения через прокси.
- -P, --ftp-port - устанавливает порт для FTP.
- -q, --silent - подавлять вывод.
- -r, --range - отправлять запрос на определенный диапазон байт.
- -s, --show-error - показывать ошибки.
- -S, --show-error - показывать ошибки.
- -t, --telnet-option - отправлять опции Telnet.
- -T, --upload-file - отправлять файл в теле запроса.
- -u, --user - устанавливает имя пользователя и пароль.
- -v, --verbose - выводить подробную информацию.
- -w, --write-out - задает формат вывода.
- -x, --proxy - устанавливает адрес прокси-сервера.
- -X, --request - устанавливает тип запроса.
Примеры использования команды curl
-
Получение содержимого веб-страницы:
$ curl http://www.example.com
Эта команда отправляет GET-запрос на URL-адрес
-
Скачивание файла:
$ curl -O http://www.example.com/file.zip
Эта команда загружает файл file.zip с URL-адреса http://www.example.com и сохраняет его в текущей директории с тем же именем.
-
Отправка POST-запроса с данными формы:
$ curl -d "param1=value1¶m2=value2" -X POST http://www.example.com/form
Эта команда отправляет POST-запрос на URL-адрес http://www.example.com/form с данными формы, переданными в параметре -d.
-
Отправка запроса с заголовком:
$ curl -H "Authorization: Bearer token" http://www.example.com/api
Эта команда отправляет GET-запрос на URL-адрес http://www.example.com/api с заголовком Authorization, содержащим токен авторизации.
-
Отправка запроса с JSON-данными:
$ curl -d '{"param1": "value1", "param2": "value2"}' -H "Content-Type: application/json" http://www.example.com/api
Эта команда отправляет POST-запрос на URL-адрес http://www.example.com/api с JSON-данными в теле запроса и соответствующим заголовком Content-Type.