Сurl-запити: 10 прикладів для ефективної роботи
Завдяки своїй універсальності, curl-запити часто використовують розробники, системні адміністратори та DevOps-фахівці для автоматизації завдань, перевірки роботи серверів, отримання даних з API та багатьох інших цілей.
У цій статті ми розглянемо 10 корисних прикладів використання curl, які допоможуть фахівцям ефективно вирішувати повсякденні мережеві завдання — від роботи з файлами та запитами до керування швидкістю завантаження.
Команда Curl підтримує наступний список протоколів:
- HTTP і HTTPS;
- FTP і FTPS;
- IMAP і IMAPS;
- POP3 і POP3S;
- SMB і SMBS;
- SFTP;
- SCP;
- TELNET;
- GOPHER;
- LDAP і LDAPS;
- SMTP і SMTPS.
Curl також взаємодіє з libcurl — вільною бібліотекою для обробки URL на стороні клієнта. Частіше за все curl використовують для виконання HTTP-запитів. Наприклад, для отримання змісту вебсторінки, надсилання даних на сервер або виконання різноманітних дій з вебсервісами.
Які сфери застосування:
- Безбраузерний доступ.
- Вбудування в shell-скрипти.
- Для тестування API.
Далі ми розглянемо декілька корисних curl-запитів і те, як вони працюють і які функції виконують.
Перевірка версії Curl
Перш ніж перейти до використання Curl, треба увійти на VPS (віртуальний приватний сервер). Якщо вам потрібна допомога, рекомендуємо ознайомитися з інструкцією з використання SSH.
Спочатку перевіримо доступну версію за допомогою наступної команди:
У розділі «висновок» з’явиться інформація про версію програми та про перелік підтримуваних протоколів.
Основна структура команди Curl виглядає наступним чином:
Застосування Curl у найпростішому випадку полягає у відображенні змісту вебсторінки. Нижченаведена команда дозволить виводити на екран зміст домашньої сторінки — https://www.example.com
В цьому випадку розглянемо сторінку https://inweb.ua/ua/:
Ця команда виводить весь вихідний код вказаної сторінки на екран. Якщо протокол не вказаний, Curl автоматично інтерпретує його як HTTP. Також, можна налаштовувати запити, додавати заголовки, надсилати форми, встановлювати різноманітні параметри — все це робиться через командний рядок з використанням різноманітних опцій curl.
Команда curl для роботи з файлами
Команди Curl надають можливість завантажувати файли з віддалених джерел. Існує два варіанти використання цієї команди.
- Параметр -O зберігає файл у поточному робочому каталозі з тим самим іменем, як у віддаленого файлу;
- Параметр -o дозволяє встановити інше ім’я файлу або вказати місце розташування для збереження.
Наприклад:
- Завантажити файл і зберегти його з оригінальним іменем (testfile.tar.gz).
В цьому випадку розглянемо домен https://inweb.ua/ua/
Наведена вище команда збереже файл як testfile.tar.gz.
- Ця команда збереже його як newtestfile.tar.gz.
В разі переривання завантаження, ви можете відновити її, скористувавшись наступною командою:
Curl також дозволяє завантажувати декілька файлів одночасно. Приклад:
Якщо вам потрібно завантажити декілька файлів з різних URL-адрес — вкажіть їх усі в одному файлі. Для завантаження файлів з різноманітних URL-адрес можна об’єднати команди Curl з xargs.
Наприклад, у нас є файл allUrls.txt, в якому перераховані всі URL-адреси для завантаження. Наведений нижче приклад демонструє, як завантажити усі файли з використанням цих URL-адрес.
Команди Curl для HTTP
Стандартний HTTP-запит обов’язково містить в собі заголовок. Заголовок HTTP передає додаткові відомості про віддалений вебсервер разом із запитом. З допомогою інструментів розробника у браузері можна переглянути інформацію про заголовок, а її перевірку можна виконати з виконанням команди curl.
Нижче наведено приклад, який показує, як отримати відомості про заголовок з вебсайту.
З допомогою curl можна надсилати запити як методом GET, так і POST.
Приклад запиту GET виглядає наступним чином:
Далі — приклад запиту POST:
Тут параметр запиту POST називається text та містить значення Hello.
Також, ви можете вказати декілька HTTP-запитів в одній команді curl. Це можна зробити з використанням опції –next, наприклад:
В цій команді спочатку є запит POST, а далі — запит GET.
Кожен HTTP-запит містить в собі User-Agent, який передається у вигляді частини запиту. Цей юзер-агент вказує інформацію про браузер клієнта. За замовчуванням, у запиті присутній curl, а версія слугує інформацією про User-Agent. Приклад висновку надаємо нижче:
Ви можете налаштувати інформацію про юзер-агента, скориставшись наступною командою:
Тепер висновок буде виглядати так:
Команда Curl і Cookies
Цей інструмент знадобиться для аналізу файлів cookie, які завантажуються за вказаною URL-адресою. Припустимо, ви відвідали https://testdomain.com/. За його допомогою ви зможете витягти та зберегти файли cookie у файл, а потім отримати до них доступ, застосовуючи команду cat або використовуючи текстовий редактор Vim.
Наведемо приклад такої команди:
Аналогічно, якщо у вас є файли cookie у вашому файлі, ви можете передати їх на сайт. Ось, як це можна здійснити:
Цей інструмент повною мірою підтримує протокол FTP! Він надасть вам можливість завантажувати файли з віддаленого сервера.
У наведеній вище команді ftp://sampleftpserver — представлений FTP-сервер, який приймає з’єднання. Для анонімних FTP-з’єднань ви можете не вказувати імені користувача та паролю. Введіть цю команду та спостерігайте, як заповняється індикатор виконання.
Ви також маєте можливість завантажувати файли, виконуючи цю команду:
Обмеження швидкості завантаження
ри використанні Curl для стягування або завантажування даних неможливо заздалегідь визначити розмір висновку. Для запобігання обмежень пропускної здатності каналу ви можете обмежити швидкість стягування. Наведена нижче команда встановлює обмеження швидкості на рівні 100К:
У цій статті ми надали вам інформацію про curl та пояснили, як використовувати цей потужний інструмент для стягування та завантаження даних. Якщо ви активно використовуєте командний рядок, то рекомендуємо освоїти роботу з даною утилітою.
Якщо необхідна допомога або потрібно вивчити складніші команди curl, то можна звернутись до відповідного посібника, який завжди доступний в усіх версіях операційної системи Unix.
Сподіваємось, ця стаття стане для вас надійним ресурсом при засвоєнні даної утиліти.