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 не вислизне від тебе — час завантажувати, обробляти і автоматизувати!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ