Сurl-запити: 10 прикладів для ефективної роботи 

Сurl-запити: 10 прикладів для ефективної роботи 

Завдяки своїй універсальності, curl-запити часто використовують розробники, системні адміністратори та DevOps-фахівці для автоматизації завдань, перевірки роботи серверів, отримання даних з API та багатьох інших цілей. 

У цій статті ми розглянемо 10 корисних прикладів використання curl, які допоможуть фахівцям ефективно вирішувати повсякденні мережеві завдання — від роботи з файлами та запитами до керування швидкістю завантаження.


Curl (або cURL) — це інструмент командного рядка для передачі даних з використанням різних протоколів. Головне призначення 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 –version
Фото: Код

У розділі «висновок» з’явиться інформація про версію програми та про перелік підтримуваних протоколів.

Основна структура команди Curl виглядає наступним чином: 

curl [OPTIONS] [URL]

Застосування 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:

curl –data “text=Hello” https://myDomain.com/firstPage.jsp

Тут параметр запиту POST називається text та містить значення Hello.

Також, ви можете вказати декілька HTTP-запитів в одній команді curl. Це можна зробити з використанням опції –next, наприклад:

В цій команді спочатку є запит POST, а далі — запит GET.

Кожен HTTP-запит містить в собі User-Agent, який передається у вигляді частини запиту. Цей юзер-агент вказує інформацію про браузер клієнта. За замовчуванням, у запиті присутній curl, а версія слугує інформацією про User-Agent. Приклад висновку надаємо нижче:

“GET / HTTP/1.1” 200 “_” ”curl/7/29/0”

Ви можете налаштувати інформацію про юзер-агента, скориставшись наступною командою:

Фото: Код

Тепер висновок буде виглядати так: 

“GET / HTTP/1.1” 200 “_” ”My new Browser”

Команда Curl і Cookies

Цей інструмент знадобиться для аналізу файлів cookie, які завантажуються за вказаною URL-адресою. Припустимо, ви відвідали https://testdomain.com/. За його допомогою ви зможете витягти та зберегти файли cookie у файл, а потім отримати до них доступ, застосовуючи команду cat або використовуючи текстовий редактор Vim.

Наведемо приклад такої команди:

curl –cookie-jar Mycookies.txt https://testdomain.com/ /index.html -O

Аналогічно, якщо у вас є файли cookie у вашому файлі, ви можете передати їх на сайт. Ось, як це можна здійснити: 

curl –cookie Mycookies.txt https://testdomain.com/ 

Цей інструмент повною мірою підтримує протокол FTP! Він надасть вам можливість завантажувати файли з віддаленого сервера. 

curl -u username:password -O ftp://sampleftpserver/testfile.tar.gz

У наведеній вище команді ftp://sampleftpserver — представлений FTP-сервер, який приймає з’єднання. Для анонімних FTP-з’єднань ви можете не вказувати імені користувача та паролю. Введіть цю команду та спостерігайте, як заповняється індикатор виконання.

Ви також маєте можливість завантажувати файли, виконуючи цю команду:

curl -u username:password -T testfile.tar.gz ftp://sampleftpserver

Обмеження швидкості завантаження

ри використанні Curl для стягування або завантажування даних неможливо заздалегідь визначити розмір висновку. Для запобігання обмежень пропускної здатності каналу ви можете обмежити швидкість стягування. Наведена нижче команда встановлює обмеження швидкості на рівні 100К:

curl –limit-rate 100K http://testdomain.com/samplefile.tar.gz -O

У цій статті ми надали вам інформацію про curl та пояснили, як використовувати цей потужний інструмент для стягування та завантаження даних. Якщо ви активно використовуєте командний рядок, то рекомендуємо освоїти роботу з даною утилітою.

Якщо необхідна допомога або потрібно вивчити складніші команди curl, то можна звернутись до відповідного посібника, який завжди доступний в усіх версіях операційної системи Unix. 

Сподіваємось, ця стаття стане для вас надійним ресурсом при засвоєнні даної утиліти. 

Артем Лебедєв
Артем Лебедєв
• SEO Specialist
Агенція digital-маркетингу Inweb
Почав працювати у компанії Inweb навесні 2020 року, за тиждень до карантину. До старту роботи в SEO був моряком, ходив у рейси та вивчав ментальність різних країн. Морська специфіка мені швидко набридла, тому що скільки себе знаю, завжди хотілося творчості та активного розвитку, щоб мозок не закисав і якнайшвидше працював. І мені пощастило потрапити відразу в точку, а саме в просування сайтів, де всі необхідні характеристики зійшлися воєдино. У SEO з будь-якого проєкту створюється своя творча одиниця, яка завдяки активній роботі та технічній складовій вже на ранніх етапах дає свої плоди та при комплексному підході результати не змушують на себе чекати. Мені швидко полюбилося SEO, тому що оптимізація сайтів має великий потенціал і безліч цікавих відгалужень, за якими необхідно постійно стежити, навчатися їм, і візуалізувати свої знання на практиці, отримуючи задоволення від процесу і результату. Як кажуть, «SEO не можна помістити до Лувру чи Ермітажу, але це мистецтво вищої категорії».
Більше цікавого