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 не ускользнёт от вас — время скачивать, обрабатывать и автоматизировать!
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ