Як почати використовувати Curl і чому: практичне введення

Будь то тестування вихідних даних API перед його розгортанням у виробництві або просто отримання відповіді з веб-сайту (наприклад, перевірка його відсутності), Curl практично всюди присутній.

Мені, як вченому з даних, довелося час від часу користуватися ним. Однак частіше за все я просто замінював параметри з скопійованої та вставленої команди curl, яка обходила канал Slack моєї команди.

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

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

Локон: Для чого це добре?

Curl - це інструмент командного рядка, який дозволяє нам робити HTTP-запити з оболонки. Він також охоплює багато інших протоколів, таких як FTP, хоча вони виходять за рамки цього посібника.

Його назва розшифровується як «Клієнтська URL-адреса», і її розробив шведський розробник Даніель Стенберг. Це проект з відкритим кодом, і його код можна знайти тут, на випадок, якщо вам захочеться зробити свій внесок.

Ви можете викликати його з улюбленого терміналу, і він зазвичай постачається попередньо в ОС на базі Linux. В іншому випадку його зазвичай можна завантажити через apt-get на Linux і варити на Mac.

Виклик методу GET

У самому основному вигляді команда curl буде виглядати так:

curl //www.dataden.tech

Поведінка за замовчуванням для curl - це виклик методу HTTP GET за вказаною URL-адресою. Таким чином, результатом програми для цієї команди буде все тіло відповіді HTTP (в даному випадку HTML), який сайт повертає в GET, який буде записаний як вказано на stdout .

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

Багато разів ми хочемо спрямувати вміст відповіді у файл. Це робиться за допомогою аргументу -o , наприклад:

curl -o output.html www.dataden.tech

що еквівалентно:

curl www.dataden.tech > output.html

За бажанням, ви можете вказати URL-адресу сайту, на якому ви хочете викликати curl, аргументом -s , наприклад:

curl -s //www.dataden.tech

що дозволяє змінити порядок аргументів.

Ви також можете використовувати –next, щоб вказати більше однієї URL-адреси, хоча офіційний документ радить замість цього викликати curl для кожної URL-адреси в іншій команді.

Виконання POST для URL-адреси

Іноді вам захочеться перевірити, чи працює API правильно, і зазвичай для цього потрібно надсилати аргументи до нього.

Зазвичай ми робимо це за допомогою методу POST, передаючи деякі JSON з усіма необхідними параметрами. Є багато способів зробити це за допомогою завивки.

Ви можете передавати значення своїх аргументів таким чином:

curl --data "name=John&surname=Doe" //www.dataden.tech

Або як звичайний JSON:

curl --data '{"name":"John","surname":"Doe"}' \//www.dataden.tech

Використання –data еквівалентно використанню -d, і обидва способи автоматично змінять метод на POST. Однак ми також можемо використовувати прапор -X ( –request ), щоб вказати, який метод ми хочемо викликати:

curl -X "POST" \-d "name=John&surname=Doe" //www.example.com

Отримання заголовків сайту

Іноді нам просто потрібно швидко перевірити, чи сайт все ще працює, не бажаючи завантажувати цілу, потенційно важку відповідь. В інших випадках заголовки зберігають важливі конфігурації.

Ці два випадки використання також розглядаються за допомогою curl. Ми можемо використовувати параметр –include ( -i ) для включення заголовків, а –head ( -I -це капітал 'i'-) для включення лише заголовків (викликаючи метод HEAD).

Встановлення значення вашого агента користувача

Тепер, коли я розглянув основи, дозвольте мені провести вас через кілька найкрутіших речей, які, на мою думку, ми можемо робити з завиванням.

Аргумент user-agent дозволяє вказати, які версії пристрою та браузера ви використовуєте, якщо це робить сайт рендерингу по-іншому.

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

З точки зору безпеки, це, мабуть, порушує деякі проблеми. Я не знав, наскільки легко прикидатися, що використовую інший пристрій (навіть не використовуючи віртуальну машину) до цього часу, і працюючи в Запобіганні шахрайству, я розумію, чому це може бути проблемою.

З урахуванням сказаного, якщо ви використовуєте це назавжди, це чудовий спосіб побачити, як виглядає веб-сайт із планшета, мобільного пристрою чи ноутбука, щоб назвати декілька.

Ось приклад, прямо з офіційної документації (хоча списки агентів-користувачів легко доступні в Інтернеті).

curl --user-agent "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" www.example.com

Хронометраж з'єднання з Curl

Ще однією причиною, через яку я почав більше дізнаватися про curl, було те, що я хотів побачити, скільки часу саме потрібно, щоб мій веб-сайт відповів.

Хоча основна документація цього не охоплює, трохи гуглиння розкрив цю команду, яку я знайшов дуже корисною:

curl -w "%{time_total}\n" -o /dev/null -s www.example.com

Це просто виведе загальний час, необхідний для отримання відповіді з даного домену.

Більш загально, аргумент -w (–write-out) приймає спеціальний рядок форматування та заповнює зарезервовані ключові слова з різними властивостями відповіді у форматованому вигляді. Усі ключові слова та їх відповідні значення доступні на сторінці керівництва команди.

Подальше читання

Ось кілька посилань, які можуть вас зацікавити, якщо ви хочете дізнатись більше про цю широку тему:

  • Список User-Agents Компіляція аргументів user-agent для різних пристроїв та браузерів.
  • Офіційна документація Curl.
  • Сторінка Curl.

Щоб зробити висновок

Сподіваюся, вам було корисно це введення, і ви залишите цей підручник, знаючи хоча б основи цієї зручної команди.

Як я вже говорив раніше, я все ще навчаюся, і буду цінувати будь-які інші цікаві шматочки знань про використання програми. Те саме стосується будь-яких відгуків про те, що я писав до цього часу.

Якщо я зробив якісь помилки або є якась частина, яку, на вашу думку, я міг би сформулювати чіткіше, будь ласка, дайте мені знати.

Сподіваюся, скоро побачимось знову, щасливого кодування!

Слідкуйте за мною на Medium та Twitter, щоб бути в курсі моїх підручників, порад та статей. Подумайте про те, щоб поділитися цією статтею з другом веб-розробника, якщо вам це сподобалось (або як пасивно-агресивний спосіб сказати їм навчитися завивати).

Спочатку опубліковано на www.dataden.tech 7 жовтня 2018 року.