JavaRush /Курсы /Docker SELF /Использование `curl` и `wget` для загрузки файлов

Использование `curl` и `wget` для загрузки файлов

Docker SELF
8 уровень , 4 лекция
Открыта

1. Знакомство с curl

Вы когда-нибудь сталкивались с ситуацией, когда на собеседовании вам предлагают скачать файл из интернета через терминал, а вы задумчиво смотрите на экран, понимая, что забыли, как это делается? Сегодня мы научимся использовать curl и wget, которые станут вашими верными спутниками для работы с сетевыми данными.

Эти утилиты позволяют загружать веб-страницы, скачивать файлы, отправлять HTTP-запросы, работать с API и даже выполнять сценарии автоматизации. Разберём их функциональность, преимущества и типичные сценарии использования.

curl — это инструмент командной строки для передачи данных через сетевые протоколы. Главная мощь curl заключается в его гибкости: поддержка более чем 20 протоколов (HTTP, HTTPS, FTP, SCP и даже SMTP). По мнению разработчиков, это отличный "швейцарский нож" для работы с интернетом.

Основной синтаксис curl

curl [опции] URL

Проще говоря, вводите команду curl, указываете нужный адрес — и наслаждаетесь результатом. Давайте разберёмся, как это работает.

Загрузка веб-страницы

Допустим, вам захотелось загрузить главную страницу Google. Это делается так:

curl http://www.google.com

На экране вы увидите HTML-код страницы. Довольно полезно, если вы хотите исследовать структуру сайта или автоматизировать что-то связанное с ним.

Сохранение содержимого в файл

Если весь этот текстовый поток вам мешает, можно сохранить результат в файл:

curl -o google.html http://www.google.com

Флажок -o (output) говорит curl, что мы хотим перенаправить вывод в файл. Теперь HTML-код страницы сохранён в google.html. Хотите посмеяться? Дайте файл другу и скажите, что скачали "весь интернет".

Загрузка файла

Представьте, что вам нужно загрузить файл из интернета (например, какой-нибудь .zip). Вот с этим curl справляется на ура:

curl -O http://example.com/file.zip

В отличие от -o, флажок -O сохраняет файл с оригинальным именем, указанным в URL. Это полезно, если вы скачиваете множество файлов из одного источника.

HTTP-аутентификация

Иногда доступ к файлу или API-ресурсу защищён логином и паролем. В этом случае используйте curl с флажком -u:

curl -u username:password http://example.com/private-data

Это особенно полезно для работы с закрытыми API, например, GitHub или Docker Registry.

Загрузка через API

Одна из самых крутых возможностей curl — работа с API. Допустим, вам нужно отправить запрос на сервер, который возвращает данные в формате JSON:

curl -X GET "https://api.exchangerate-api.com/v4/latest/USD"

Здесь флажок -X указывает метод HTTP-запроса (GET, POST, DELETE и т.д.). Для автоматизации интеграции с внешними сервисами это просто находка.


2. Что такое wget?

Если curl — это швейцарский нож, то wget — это бульдозер. Его главная задача — загружать файлы. Главное отличие от curl заключается в том, что wget специально разработан для надёжной загрузки больших файлов, а также поддерживает возобновление загрузки, что очень удобно при плохом соединении.

Основной синтаксис wget

wget [опции] URL

Простая загрузка файла

wget http://example.com/file.zip

Эта команда скачает файл и сохранит его с оригинальным именем в текущей директории. Просто и эффективно.

Сохранение с другим именем

Если оригинальное имя файла вам не нравится, можете задать своё:

wget -O newfile.zip http://example.com/file.zip

Возобновление загрузки

Допустим, вы скачиваете огромный файл, но соединение обрывается. Не беда: просто используйте флажок -c (continue):

wget -c http://example.com/largefile.iso

wget продолжит загрузку с места, где она была прервана. Причём это работает даже спустя несколько дней, если сервер поддерживает такой режим.

Загрузка целого сайта

Да, с помощью wget можно скачать целый сайт (или его копию). Просто используйте опцию --mirror:

wget --mirror http://example.com

Эта команда скачает сайт с сохранением структуры директорий. Теперь у вас есть "зеркало" сайта для использования в оффлайн-режиме.


3. Сравнение curl и wget

Функция curl wget
Поддержка большого числа протоколов Да Только HTTP/HTTPS и FTP
Автоматическое возобновление загрузки Нет (можно скриптовать) Да
Работа с API Да Нет
Простота управления файлами Средняя Отличная
Скачивание целых сайтов Нет Да

В общем, если вам нужно работать с API или чем-то специфическим, используйте curl. Если же вам нужно скачивать файлы — wget будет лучшим выбором.


4. Практическое применение

Загрузка и обработка файла

Сочетаем wget и наши навыки работы с текстом:

wget -O data.txt http://example.com/data.txt
cat data.txt | grep "keyword" | awk '{print $2, $4}'

Здесь мы скачали файл, отфильтровали строки по ключевому слову и извлекли нужные столбцы.

Работа с API

Скачиваем курсы валют с помощью curl и находим нужную валюту:

curl -s "https://api.exchangerate-api.com/v4/latest/USD" | grep "EUR"

Это полезно, если вы хотите построить автоматизированную систему обмена валют.

Автоматизация обновлений

Представьте, что вам нужно каждый день скачивать обновления файла. Вот пример простого скрипта:

#!/bin/bash
wget -O updates.zip http://example.com/daily-updates.zip
unzip -o updates.zip -d /path/to/updates

Сохраняем скрипт и добавляем его в cron. Теперь он будет выполнен автоматически — приятно, не правда ли?


5. Типичные ошибки и особенности

Ошибка 403 (Forbidden):

Это случается, если сервер требует дополнительные заголовки (напр., User-Agent). Исправляется так:

curl -A "Mozilla/5.0" http://example.com

Перенаправления:

Если сервер перенаправляет вас на другой URL, добавьте флажок -L в curl:

curl -L http://example.com

SSL-ошибки:

Иногда wget или curl могут жаловаться на SSL. Можно отключить проверку сертификата (но это небезопасно!):

wget --no-check-certificate https://example.com
curl -k https://example.com

С этим мощным арсеналом вы готовы покорять интернет в терминале. Теперь никакой файл или API не ускользнёт от вас — время скачивать, обрабатывать и автоматизировать!

1
Задача
Docker SELF, 8 уровень, 4 лекция
Недоступна
Скачивание файла с использованием `curl`
Скачивание файла с использованием `curl`
1
Задача
Docker SELF, 8 уровень, 4 лекция
Недоступна
Скачивание файла с использованием `wget`
Скачивание файла с использованием `wget`
1
Задача
Docker SELF, 8 уровень, 4 лекция
Недоступна
Работа с API через `curl`
Работа с API через `curl`
1
Задача
Docker SELF, 8 уровень, 4 лекция
Недоступна
Автоматизированная загрузка
Автоматизированная загрузка
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 64
1 октября 2025
""" После выполнения команды необходимо убедиться, что файл `exchange_rates.json` создан и содержит данные от API. """ Вам тут в задачу насрали P.S. Загрузка целого сайта Да, с помощью wget можно скачать целый сайт (или его копию). Просто используйте опцию --mirror:

wget --mirror http://example.com
Я начинаю понимать, за что любят линух P.P.S. Вроде бы курс должен быть о чем-то другом, но мне уже всё равно...