Как да започнем да използваме Curl и защо: практическо въведение

Независимо дали става въпрос за тестване на изхода на API, преди да бъде внедрен в производствения процес, или просто извличане на отговор от уебсайт (например, за да се провери дали той не работи), Curl е практически вездесъщ.

Като изследовател на данни ми се налагаше да го използвам от време на време. Въпреки това, по-често просто замествах параметрите от копирана и поставена команда за къдрене, която обиколи канала Slack на моя екип.

Реших, че трябва да разбера по-добре този мощен инструмент, ако искам да го използвам с пълния му потенциал, и сега съм тук, за да споделя някои от най-интересните неща, които намерих в този урок за къдрици.

Ако имате някакви съвети или трикове, които бихте искали да добавите, моля, направете го в коментарите, тъй като разбирането ми за този инструмент все още е в начален етап.

Curl: За какво е полезен?

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'-) да се включат само заглавията (призоваващи метода на главата).

Задаване на стойността на вашия потребителски агент

След като разгледах основните неща, позволете ми да ви преведа през някои от най-страхотните неща, които открих, че можем да направим с къдренето.

Аргументът 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) взема специален низ за форматиране и попълва запазени ключови думи с различни свойства на отговора по форматиран начин. Всички ключови думи и съответните им стойности са достъпни в ръководството на командата.

Допълнителна информация

Ето няколко връзки, които може да ви бъдат интересни, в случай че искате да научите повече за тази широка тема:

  • Списък на потребителски агенти Компилация от аргументи на потребителски агент за различни устройства и браузъри.
  • Официалната документация на Curl.
  • Страницата на Curl.

В заключение

Надявам се, че това въведение ви е било полезно и оставяте този урок, познавайки поне основите на тази удобна команда.

Както казах по-рано, аз все още се уча и ще оценя всички други интересни частици от знанията за използването на програмата. Същото важи и за всякакви отзиви за написаното от мен до момента.

Ако съм направил някакви грешки или има някаква част, която смятате, че бих могъл да формулирам по-ясно, моля да ме уведомите.

Надявам се скоро да се видим отново, щастливо кодиране!

Последвайте ме в Medium и Twitter, за да сте в крак с моите уроци, съвети и статии. Помислете дали да споделите тази статия с приятел на уеб разработчик, ако ви е харесала (или като пасивен агресивен начин да им кажете да се научат да къдрят).

Първоначално публикувано на www.dataden.tech на 7 октомври 2018 г.