GNU/Linux >> Znalost Linux >  >> Cent OS

Výukový program příkazů cURL s příklady

cURL je nástroj příkazového řádku a knihovna, kterou lze použít k příjmu a odesílání dat mezi klientem a serverem nebo libovolnými dvěma počítači připojenými přes internet. Podporuje širokou škálu protokolů, jako je HTTP, FTP, IMAP, LDAP, POP3, SMTP a mnoho dalších.

Díky své všestrannosti se cURL používá v mnoha aplikacích a pro mnoho případů použití. Nástroj příkazového řádku lze například použít ke stahování souborů, testování rozhraní API a ladění problémů se sítí. V tomto článku se podíváme na to, jak můžete použít nástroj příkazového řádku cURL k provádění různých úkolů.

Obsah

  • 1 Nainstalujte cURL

    • 1.1 Linux
    • 1.2 MacOS
    • 1.3 Windows
  • 2 základní použití cURL
  • 3 Stahování souborů pomocí cURL
  • 4 Anatomie požadavku/odpovědi HTTP
  • 5 Sledování přesměrování pomocí cURL
  • 6 Zobrazení záhlaví odpovědí pomocí cURL
  • 7 Zobrazení záhlaví požadavků a podrobností o připojení
  • 8 Chyby umlčení
  • 9 Nastavení záhlaví požadavků HTTP pomocí cURL
  • 10 Vytváření požadavků POST pomocí cURL
  • 11 Odesílání dat JSON pomocí cURL
  • 12 Změna metody požadavku
  • 13 Replikace požadavků prohlížeče pomocí cURL
  • 14 Selhání cURL při chybách HTTP
  • 15 Odesílání ověřených požadavků pomocí cURL
  • 16 Podpora testovacího protokolu s cURL
  • 17 Nastavení hlavičky hostitele a možnosti –vyřešit cURL
  • 18 Přeložit domény na adresy IPv4 a IPv6
  • 19 Deaktivace kontrol certifikátů cURL
  • 20 Odstraňování problémů s webovými stránkami s „rozdělením časování cURL“
  • 21 konfiguračních souborů cURL
  • 22 Závěr

Nainstalujte cURL

Linux

Většina distribucí Linuxu má ve výchozím nastavení nainstalovaný cURL. Chcete-li zkontrolovat, zda je ve vašem systému nainstalována nebo ne, zadejte curl v okně terminálu a stiskněte enter. Pokud není nainstalován, zobrazí se chyba „příkaz nenalezen“. K instalaci do vašeho systému použijte níže uvedené příkazy.

Pro systémy založené na Ubuntu/Debianu použijte:

sudo apt update
sudo apt install curl

Pro systémy CentOS/RHEL použijte:

sudo yum install curl

Na druhou stranu pro systémy Fedora můžete použít příkaz:

sudo dnf install curl

MacOS

MacOS je dodáván s předinstalovaným cURL a přijímá aktualizace, kdykoli Apple vydá aktualizace pro operační systém. Pokud však chcete nainstalovat nejnovější verzi cURL, můžete nainstalovat curl Homebrew balíček. Jakmile nainstalujete Homebrew, můžete jej nainstalovat pomocí:

brew install curl

Windows

Pro Windows 10 verze 1803 a vyšší se nyní cURL standardně dodává v příkazovém řádku, takže jej můžete používat přímo odtud. Pro starší verze Windows má projekt cURL binární soubory Windows. Jakmile stáhnete soubor ZIP a rozbalíte jej, najdete složku s názvem curl-<version number>-mingw . Přesuňte tuto složku do vámi zvoleného adresáře. V tomto článku budeme předpokládat, že se naše složka jmenuje curl-7.62.0-win64-mingw a přesunuli jsme jej pod C: .

Dále byste měli přidat cURL bin do adresáře Windows PATH proměnná prostředí, aby ji systém Windows mohl najít, když zadáte curl v příkazovém řádku. Aby to fungovalo, musíte postupovat podle těchto kroků:

  • Spuštěním systempropertiesadvanced otevřete dialogové okno „Pokročilé vlastnosti systému“. z dialogového okna Spustit ve Windows (klávesa Windows + R).
  • Klikněte na tlačítko „Proměnné prostředí“.
  • Dvakrát klikněte na „Cesta“ v části „Systémové proměnné“ a přidejte cestu C:curl-7.62.0-win64-mingwbin . V systému Windows 10 to můžete provést pomocí tlačítka „Nový“ vpravo. Ve starších verzích Windows můžete zadat ;C:curl-7.62.0-win64-mingwbin (všimněte si středníku na začátku) na konci textového pole „Hodnota“.

Po dokončení výše uvedených kroků můžete zadat curl zkontrolovat, zda to funguje. Pokud vše proběhlo v pořádku, měli byste vidět následující výstup:

C:UsersAdministrator>curl
curl: try 'curl --help' or 'curl --manual' for more information

Základní použití cURL

Základní syntaxe použití cURL je jednoduše:

curl <url>

Tím se načte obsah dostupný na dané adrese URL a vytiskne se na terminál. Pokud například spustíte curl example.com , měli byste vidět vytištěnou stránku HTML, jak je uvedeno níže:

Toto je nejzákladnější operace, kterou může cURL provést. V několika následujících částech se podíváme na různé možnosti příkazového řádku, které cURL přijímá.



Stahování souborů pomocí cURL

Jak jsme viděli, cURL přímo stáhne obsah URL a vytiskne jej do terminálu. Pokud však chcete výstup uložit jako soubor, můžete zadat název souboru s -o možnost, třeba takto:

curl -o vlc.dmg https://ftp.belnet.be/mirror/videolan/vlc/3.0.4/macosx/vlc-3.0.4.dmg

Kromě ukládání obsahu se cURL přepne na zobrazení pěkného ukazatele průběhu se statistikami stahování, jako je rychlost a čas:

Místo ručního zadávání názvu souboru můžete nechat cURL zjistit název souboru pomocí -O volba. Pokud tedy chcete výše uvedenou adresu URL uložit do souboru vlc-3.0.4.dmg , můžete jednoduše použít:

curl -O https://ftp.belnet.be/mirror/videolan/vlc/3.0.4/macosx/vlc-3.0.4.dmg

Mějte na paměti, že když použijete -o nebo -O options a soubor se stejným názvem existuje, cURL jej přepíše.

Pokud máte částečně stažený soubor, můžete stahování obnovit pomocí -C - možnost, jak je uvedeno níže:

curl -O -C - https://ftp.belnet.be/mirror/videolan/vlc/3.0.4/macosx/vlc-3.0.4.dmg

Stejně jako většina ostatních nástrojů příkazového řádku můžete kombinovat různé možnosti dohromady. Například ve výše uvedeném příkazu můžete kombinovat -O -C - a napište jej jako -OC - .

Anatomie požadavku/odpovědi HTTP

Než se ponoříme hlouběji do funkcí podporovaných cURL, probereme něco málo o HTTP požadavcích a odpovědích. Pokud jste obeznámeni s těmito pojmy, můžete přímo přeskočit na další sekce.

Chcete-li požádat o zdroj, jako je webová stránka, nebo odeslat nějaká data na server, HTTP klient (jako je prohlížeč nebo cURL) odešle HTTP požadavek na server Server odpoví odpovědí HTTP, která obsahuje „obsah “ na této stránce.

Požadavky HTTP obsahují metodu požadavku, adresu URL, některá záhlaví a některá volitelná data jako součást „těla požadavku“. Metoda požadavku řídí, jak by měl být určitý požadavek zpracován. Nejběžnější typy metod požadavku jsou „GET“ a „POST“. Obvykle používáme požadavky „GET“ k načtení zdroje ze serveru a „POST“ k odeslání dat na server ke zpracování. Požadavky „POST“ obvykle obsahují některá data v těle požadavku, která může server použít.

HTTP odpovědi jsou podobné a obsahují stavový kód, některá záhlaví a tělo. Tělo obsahuje skutečná data, která mohou klienti zobrazit nebo uložit do souboru. Stavový kód je 3místný kód, který klientovi sděluje, zda byl požadavek úspěšný či neúspěšný a jak má dále postupovat. Běžné stavové kódy jsou 2xx (úspěch), 3xx (přesměrování na jinou stránku) a 4xx/5xx (pro chyby).

HTTP je „protokol aplikační vrstvy“ a běží přes jiný protokol nazývaný TCP. Postará se o opětovné odeslání ztracených dat a zajistí, aby klient a server přenášeli data optimální rychlostí. Když používáte HTTPS, mezi TCP a HTTP běží další protokol nazvaný SSL/TLS, který zajišťuje data.

Nejčastěji používáme názvy domén jako google.com pro přístup k webovým stránkám. Mapování názvu domény na IP adresu probíhá prostřednictvím jiného protokolu zvaného DNS.



Nyní byste měli mít dostatečné zázemí, abyste pochopili zbytek tohoto článku.

Sledování přesměrování pomocí cURL

Ve výchozím nastavení, když cURL obdrží přesměrování po odeslání požadavku, automaticky nepožádá o novou adresu URL. Příkladem může být adresa URL https://www.facebook.com . Když zadáte požadavek pomocí této adresy URL, server odešle přesměrování HTTP 3XX na https://www.facebook.com/ . Jinak je však tělo odpovědi prázdné. Takže pokud to zkusíte, dostanete prázdný výstup:

Pokud chcete, aby cURL následovalo tato přesměrování, měli byste použít -L volba. Pokud to budete opakovat, požádejte o https://www.facebook.com/ pomocí -L vlajka, takhle:

curl -L https://www.facebook.com/

Nyní budete moci vidět obsah HTML stránky, podobně jako na níže uvedeném snímku obrazovky. V další části uvidíme, jak můžeme ověřit, že existuje přesměrování HTTP 3XX.

Mějte prosím na paměti, že cURL může následovat přesměrování pouze v případě, že server odpověděl „přesměrováním HTTP“, což znamená, že server použil stavový kód 3XX a k označení nové adresy URL použil záhlaví „Umístění“. cURL nedokáže zpracovat metody přesměrování založené na JavaScriptu nebo HTML ani „Obnovit hlavičku“.

Pokud existuje řetězec přesměrování, -L možnost bude následovat přesměrování až 500krát. Počet maximálních přesměrování, která budou následovat, můžete ovládat pomocí --max-redirs vlajka.

curl -L --max-redirs 700 example.com

Pokud tento příznak nastavíte na -1 , bude následovat přesměrování donekonečna.

curl -L --max-redirs -1 example.com

Zobrazení záhlaví odpovědí pomocí cURL

Při ladění problémů s webem můžete chtít zobrazit hlavičky odpovědí HTTP odeslané serverem. Chcete-li tuto funkci povolit, můžete použít -i možnost.

Pokračujme v našem předchozím příkladu a potvrďte, že skutečně dochází k přesměrování HTTP 3XX, když zadáte požadavek HTTP na https://www.facebook.com/ , spuštěním:

curl -L -i https://www.facebook.com/

Všimněte si, že jsme také použili -L takže cURL může následovat přesměrování. Je také možné tyto dvě možnosti zkombinovat a zapsat je jako -iL nebo -Li místo -L -i .

Jakmile příkaz spustíte, uvidíte přesměrování HTTP 3XX a také odpověď stránky HTTP 200 OK po přesměrování:

Pokud používáte -o /-O možnost v kombinaci s -i , budou hlavičky a tělo odpovědí uloženy do jednoho souboru.

Zobrazení záhlaví požadavků a podrobností o připojení

V předchozí části jsme viděli, jak můžete zobrazit záhlaví odpovědí HTTP pomocí cURL. Někdy však můžete chtít zobrazit další podrobnosti o požadavku, jako jsou odeslaná záhlaví požadavku a proces připojení. cURL nabízí -v příznak (nazývaný „podrobný režim“) pro tento účel a lze jej použít následovně:

curl -v https://www.booleanworld.com/

Výstup obsahuje data požadavku (označená > ), hlavičky odpovědí (označené < ) a další podrobnosti o požadavku, jako je použitá IP adresa a proces handshake SSL (označeno * ). Tělo odpovědi je také k dispozici pod těmito informacemi. (To však není vidět na níže uvedeném snímku obrazovky).

Nejčastěji nás tělo odpovědi nezajímá. Můžete jej jednoduše skrýt „uložením“ výstupu na nulové zařízení, což je /dev/null v systémech Linux a MacOS a NUL v systému Windows:

curl -vo /dev/null https://www.booleanworld.com/ # Linux/MacOS
curl -vo NUL https://www.booleanworld.com/ # Windows

Chyby umlčování

Dříve jsme viděli, že cURL zobrazuje ukazatel průběhu při ukládání výstupu do souboru. Lišta průběhu bohužel nemusí být užitečná za všech okolností. Pokud například skryjete výstup pomocí -vo /dev/null , objeví se ukazatel průběhu, který není vůbec užitečný.

Všechny tyto extra výstupy můžete skrýt pomocí -s záhlaví. Pokud budeme pokračovat v našem předchozím příkladu, ale skryjeme ukazatel průběhu, příkazy budou:

curl -svo /dev/null https://www.booleanworld.com/ # Linux/MacOS
curl -svo NUL https://www.booleanworld.com/ # Windows

-s volba je však trochu agresivní, protože dokonce skrývá chybové zprávy. Chcete-li pro váš případ použití skrýt ukazatel průběhu, ale přesto zobrazit všechny chyby, můžete kombinovat -S možnost.

Pokud se tedy pokoušíte uložit výstup cURL do souboru, ale chcete jednoduše skrýt ukazatel průběhu, můžete použít:

curl -sSvo file.html https://www.booleanworld.com/

Nastavení záhlaví požadavků HTTP pomocí cURL

Při testování rozhraní API možná budete muset nastavit vlastní hlavičky pro požadavek HTTP. cURL má -H možnost, kterou můžete k tomuto účelu použít. Pokud chcete odeslat vlastní záhlaví X-My-Custom-Header s hodnotou 123 na https://httpbin.org/get , měli byste spustit:

curl -H 'X-My-Custom-Header: 123' https://httpbin.org/get

(httpbin.org je velmi užitečný web, který vám umožňuje zobrazit podrobnosti o požadavku HTTP, který jste na něj odeslali.)

Data vrácená adresou URL ukazují, že tato hlavička byla skutečně nastavena:

Můžete také přepsat libovolná výchozí záhlaví odeslaná pomocí cURL, jako jsou záhlaví „User-Agent“ nebo „Host“. Klient HTTP (v našem případě cURL) odešle hlavičku „User-Agent“, aby serveru sdělila typ a verzi použitého klienta. Klient také používá hlavičku „Host“ k tomu, aby sdělil serveru, který web by měl obsluhovat. Tato hlavička je potřeba, protože webový server může hostovat více webových stránek na jedné IP adrese.

Také, pokud chcete nastavit více hlaviček, můžete jednoduše zopakovat -H možnost podle potřeby.

curl -H 'User-Agent: Mozilla/5.0' -H 'Host: www.google.com' ...

Nicméně cURL má určité zkratky pro často používané příznaky. Záhlaví „User-Agent“ můžete nastavit pomocí -A možnost:

curl -A Mozilla/5.0 https://httpbin.org/get

Záhlaví „Referer“ se používá k tomu, aby serveru sdělilo umístění, ze kterého na něj odkazoval předchozí web. Obvykle jej zasílají prohlížeče, když požaduje Javascript nebo obrázky propojené se stránkou, nebo když následuje přesměrování. Pokud chcete nastavit záhlaví „Referer“, můžete použít -e příznak:

curl -e https://www.google.com/ https://httpbin.org/get

V opačném případě, pokud sledujete sadu přesměrování, můžete jednoduše použít -e ';auto' a cURL se o nastavení přesměrování postará sám.

Vytváření požadavků POST pomocí cURL

Ve výchozím nastavení odesílá cURL požadavky GET, ale můžete jej použít také k odesílání požadavků POST s -d nebo --data volba. Všechna pole musí být uvedena jako key=value páry oddělené ampersandem (& ) charakter. Jako příklad můžete odeslat požadavek POST na httpbin.org s některými parametry:

curl --data "firstname=boolean&lastname=world" https://httpbin.org/post

Z výstupu můžete snadno zjistit, že jsme zveřejnili dva parametry (toto se zobrazí pod klávesou „formulář“):

Jakékoli speciální znaky, například @ , %= nebo mezery v hodnotě by měly být zakódovány ručně. Pokud byste tedy chtěli odeslat parametr „email“ s hodnotou „[email protected]“, použili byste:

curl --data "email=test%40example.com" https://httpbin.org/post

Případně můžete použít pouze --data-urlencode abych to vyřídil za vás. Pokud chcete odeslat dva parametry, email a name , takto byste měli použít možnost:

curl --data-urlencode "[email protected]" --data-urlencode "name=Boolean World" https://httpbin.org/post

Pokud --data parametr je příliš velký pro zadání na terminálu, můžete jej uložit do souboru a poté odeslat pomocí @ , asi takhle:

curl --data @params.txt example.com

Doposud jsme viděli, jak můžete zadávat požadavky POST pomocí cURL. Pokud chcete nahrát soubory pomocí požadavku POST, můžete použít -F ("formulář") možnost. Zde odešleme soubor test.c , pod názvem parametru file :

curl -F [email protected] https://httpbin.org/post

Zobrazí se obsah souboru, který ukazuje, že byl úspěšně odeslán:

Odesílání dat JSON pomocí cURL

V předchozí části jsme viděli, jak lze odesílat požadavky POST pomocí cURL. Data JSON můžete odeslat také pomocí --data volba. Většina serverů však očekává, že obdrží požadavek POST s páry klíč-hodnota, podobnými těm, o kterých jsme hovořili dříve. Musíte tedy přidat další hlavičku nazvanou ‚Content-Type:application/json‘, aby server pochopil, že pracuje s daty JSON a správně s nimi nakládá. Při odesílání JSON také nemusíte data kódovat do adresy URL.

Pokud tedy máte následující data JSON a chcete odeslat požadavek POST na https://httpbin.org/post:

{
  "email": "[email protected]",
  "name": ["Boolean", "World"]
}

Poté můžete odeslat data pomocí:

curl --data '{"email":"[email protected]", "name": ["Boolean", "World"]}' -H 'Content-Type: application/json' https://httpbin.org/post

V tomto případě se data zobrazí pod json hodnota ve výstupu httpbin.org:

Můžete také uložit soubor JSON a odeslat jej stejným způsobem jako dříve:

curl --data @data.json https://httpbin.org/post

Změna metody požadavku

Dříve jsme viděli, jak můžete odesílat požadavky POST pomocí cURL. Někdy může být nutné odeslat požadavek POST bez jakýchkoli dat. V takovém případě můžete jednoduše změnit metodu požadavku na POST pomocí -X možnost, třeba takto:

curl -X POST https://httpbin.org/post

Můžete také změnit metodu požadavku na cokoli jiného, ​​například PUT, DELETE nebo PATCH. Jednou významnou výjimkou je metoda HEAD, kterou nelze nastavit pomocí -X volba. Metoda HEAD se používá ke kontrole, zda je dokument přítomen na serveru, ale bez stahování dokumentu. Chcete-li použít metodu HEAD, použijte -I možnost:

curl -I https://www.booleanworld.com/

Když zadáte požadavek HEAD, cURL ve výchozím nastavení zobrazí všechna záhlaví požadavku. Servery neodesílají žádný obsah, když obdrží požadavek HEAD, takže za hlavičkami není nic:

Replikace požadavků prohlížeče pomocí cURL

Pokud chcete replikovat požadavek zadaný prostřednictvím vašeho prohlížeče prostřednictvím cURL, můžete pomocí vývojářských nástrojů Chrome, Firefox a Safari získat příkaz cURL.

Uvedené kroky jsou stejné pro všechny platformy a prohlížeče:

  • Otevřete nástroje pro vývojáře ve Firefoxu/Chrome (obvykle F12 na Windows/Linux a Cmd+Shift+I na Macu)
  • Přejděte na kartu sítě
  • Vyberte požadavek ze seznamu, klikněte na něj pravým tlačítkem a vyberte „Kopírovat jako cURL“

Zkopírovaný příkaz obsahuje všechny hlavičky, metody požadavků, soubory cookie atd. potřebné k replikaci přesně stejného požadavku. Příkaz můžete vložit do svého terminálu a spustit jej.

Provedení chyby cURL při chybách HTTP

Je zajímavé, že cURL nerozlišuje mezi úspěšným HTTP požadavkem (2xx) a neúspěšným HTTP požadavkem (4xx/5xx). Takže vždy vrátí stav ukončení 0, pokud nebyl problém s připojením k webu. To ztěžuje psaní skriptů shellu, protože neexistuje způsob, jak zkontrolovat, zda lze soubor úspěšně stáhnout.

Můžete to zkontrolovat ručním zadáním požadavku:

curl https://www.booleanworld.com/404 -sSo file.txt

Můžete vidět, že curl netiskne žádné chyby a stav ukončení je také nula:

Pokud chcete vzít v úvahu i tyto chyby HTTP, můžete použít -f možnost, třeba takto:

curl https://www.booleanworld.com/404 -fsSo file.txt

Nyní můžete vidět, že cURL vypíše chybu a také nastaví stavový kód na 22, aby informoval, že došlo k chybě:

Vytváření ověřených požadavků pomocí cURL

Některé webové stránky a rozhraní API vyžadují ověření pomocí uživatelského jména a hesla. Toho lze dosáhnout dvěma způsoby. Uživatelské jméno a heslo můžete uvést pomocí -u možnost:

curl -u boolean:world https://example.com/

Případně jej můžete jednoduše přidat do samotné adresy URL pomocí <username>:<password>@<host> syntaxe, jak je znázorněno:

curl https://boolean:[email protected]/

V obou těchto metodách curl provádí „základní“ ověření se serverem.

Podpora testovacího protokolu pomocí cURL

Vzhledem k široké škále protokolů podporovaných cURL jej můžete dokonce použít k testování podpory protokolů. Pokud chcete zkontrolovat, zda web podporuje určitou verzi SSL, můžete použít --sslv<version> nebo --tlsv<version> vlajky. Pokud například chcete zkontrolovat, zda web podporuje TLS v1.2, můžete použít:

curl -v --tlsv1.2 https://www.booleanworld.com/

Požadavek proběhne normálně, což znamená, že web podporuje TLSv1.2. Nyní se podívejme, zda web podporuje SSL v3:

curl -v --sslv3 https://www.booleanworld.com/

Tento příkaz vyvolá handshake_failed chyba, protože server tuto verzi SSL nepodporuje.

Upozorňujeme, že v závislosti na vašem systému a verzi/konfiguraci knihovny nemusí některé z těchto možností verze fungovat. Výše uvedený výstup byl převzat z cURL Ubuntu 16.04. Pokud to však zkusíte s cURL v MacOS 10.14, zobrazí se chyba:

Stejným způsobem můžete také testovat verze protokolu HTTP pomocí příznaků --http1.0 , --http1.1 nebo --http2 .

Nastavení hlavičky hostitele a cURL --resolve možnost

Dříve jsme diskutovali o tom, jak se webový server rozhodne poskytovat návštěvníkům různé webové stránky v závislosti na záhlaví „Host“. To může být velmi užitečné pro kontrolu, zda má váš web správně nakonfigurovaný virtuální hosting, změnou záhlaví „Host“. Řekněme například, že máte místní server na 192.168.0.1 se dvěma nakonfigurovanými webovými stránkami, konkrétně example1.com a example2.com . Nyní můžete otestovat, zda je vše správně nakonfigurováno nastavením hlavičky hostitele a kontrolou, zda je poskytován správný obsah:

curl -H 'Host: example1.com' https://192.168.0.1/
curl -H 'Host: example1.com' https://192.168.0.1/

Bohužel to nefunguje tak dobře pro weby používající HTTPS. Jeden web může být nakonfigurován tak, aby obsluhoval více webů, přičemž každý web používá svůj vlastní certifikát SSL/TLS. Vzhledem k tomu, že SSL/TLS probíhá na nižší úrovni než HTTP, znamená to, že klienti, jako je cURL, musí serveru sdělit, ke kterému webu se snažíme přistupovat na úrovni SSL/TLS, aby server mohl vybrat správný certifikát. Ve výchozím nastavení to cURL vždy sdělí serveru.

Pokud však chcete odeslat požadavek na konkrétní IP, jako je výše uvedený příklad, server může vybrat nesprávný certifikát a to způsobí selhání ověření SSL/TLS. Host hlavička funguje pouze na úrovni HTTP a ne na úrovni SSL/TLS.

Chcete-li se vyhnout problému popsanému výše, můžete použít --resolve vlajka. Příznak vyřešení odešle požadavek na vámi zvolený port a IP, ale správně odešle název webu na úrovni SSL/TLS i HTTP.

Podívejme se na předchozí příklad. Pokud jste používali protokol HTTPS a chtěli jste jej odeslat na místní server 192.168.0.1 , můžete použít:

curl https://example1.com/ --resolve example1.com:192.168.0.1:443

Funguje také dobře pro HTTP. Předpokládejme, že pokud váš HTTP server sloužil na portu 8080, můžete použít buď --resolve příznak nebo ručně nastavte hlavičku hostitele a port, například takto:

curl https://192.168.0.1:8080/ -H 'Host: example1.com:8080'
curl https://example.com/ --resolve example1.com:192.168.0.1:8080

Dva výše uvedené příkazy jsou ekvivalentní.

Vyřešte domény na adresy IPv4 a IPv6

Někdy můžete chtít zkontrolovat, zda je web dostupný přes IPv4 i IPv6. Pomocí -4 můžete přinutit cURL, aby se připojilo buď k verzi vašeho webu s protokolem IPv4 nebo přes IPv6. nebo -6 příznaky.

Mějte prosím na paměti, že webové stránky jsou dostupné přes IPv4 a IPv6, pouze pokud:

  • Pro web existují příslušné záznamy DNS, které jej spojují s adresami IPv4 a IPv6.
  • Ve svém systému máte připojení IPv4 a IPv6.

Pokud chcete například zkontrolovat, zda se můžete dostat na web icanhazip.com přes IPv6, můžete použít:

curl -6 https://icanhazip.com/

Pokud je web dostupný přes HTTPS, měli byste ve výstupu získat svou vlastní IPv6 adresu. Tento web vrací veřejnou IP adresu každého klienta, který se k němu připojuje. V závislosti na použitém protokolu tedy zobrazuje adresu IPv4 nebo IPv6.

Můžete také použít -v možnost spolu s -4 a -6 získat další podrobnosti.

Zakázání kontrol certifikátů cURL

Ve výchozím nastavení cURL kontroluje certifikáty, když se připojuje přes HTTPS. Často je však užitečné zakázat kontrolu certifikátů, když se pokoušíte odesílat požadavky na stránky pomocí certifikátů s vlastním podpisem, nebo když potřebujete otestovat stránky, které mají nesprávně nakonfigurovaný certifikát.

Chcete-li zakázat kontroly certifikátů, použijte -k osvědčení. Vyzkoušíme to odesláním požadavku na expired.badssl.com, což je webová stránka využívající SSL certifikát, jehož platnost vypršela.

curl -k https://expired.badssl.com/

S -k jsou kontroly certifikátů ignorovány. Takže cURL stáhne stránku a úspěšně zobrazí tělo požadavku. Na druhou stranu, pokud jste nepoužili -k možnost, zobrazí se chyba podobná té níže:

Odstraňování problémů s webovými stránkami s „rozdělením časování cURL“

Můžete se dostat do situací, kdy je pro vás web velmi pomalý a chtěli byste se do problému ponořit hlouběji. Pomocí -w můžete nastavit, aby cURL zobrazoval podrobnosti požadavku, jako je čas potřebný k překladu DNS, navázání spojení atd. volba. To je často nazýváno jako cURL „časové rozdělení“.

Chcete-li například zobrazit tyto podrobnosti pro připojení k https://www.booleanworld.com/ , spustit:

curl https://www.booleanworld.com/ -sSo /dev/null -w 'namelookup:t%{time_namelookup}nconnect:t%{time_connect}nappconnect:t%{time_appconnect}npretransfer:t%{time_pretransfer}nredirect:t%{time_redirect}nstarttransfer:t%{time_starttransfer}ntotal:tt%{time_total}n'

(Pokud to spouštíte ze systému Windows, změňte /dev/null na NUL ).

Získáte výstup podobný tomuto:

Každá z těchto hodnot je v sekundách a zde je to, co každá hodnota představuje:

  • namelookup — Doba potřebná pro překlad DNS.
  • připojit — Čas potřebný k navázání spojení TCP.
  • appconnect — Toto je doba potřebná k navázání spojení pro všechny vrstvy mezi TCP a aplikační vrstvou, jako je SSL/TLS. V našem případě je aplikační vrstvou HTTP. Také, pokud taková mezivrstva neexistuje (např. když existuje přímý požadavek HTTP), bude tento čas vždy 0.
  • předběžně převést — Toto je doba od začátku do okamžiku, kdy se právě chystá zahájení přenosu souboru.
  • přesměrování — Toto je celková doba potřebná ke zpracování všech přesměrování.
  • zahájit převod — Doba od začátku do okamžiku, kdy se má přenést první bajt.
  • celkem — Celková doba potřebná k dokončení celého procesu cURL.

Řekněme například, že se potýkáte se zpožděním při připojování k webu a zjistíte, že hodnota „namelookup“ byla příliš vysoká. Protože to ukazuje na problém se serverem DNS vašeho ISP, můžete začít pátrat po tom, proč je vyhledávání DNS tak pomalé, a v případě potřeby přejít na jiný server DNS.

konfigurační soubory cURL

Někdy můžete chtít, aby všechny požadavky cURL používaly stejné možnosti. Ruční předávání těchto možností není proveditelné řešení, takže cURL vám umožňuje specifikovat možnosti v konfiguračním souboru.

Výchozí konfigurační soubor se nachází v ~/.curlrc v Linux/MacOS a %appdata%_curlrc ve Windows. Uvnitř tohoto souboru můžete zadat libovolné možnosti, které potřebujete, například:

# Always use IPv4
-4
# Always show verbose output
-v
# When following a redirect, automatically set the previous URL as referer.
referer = ";auto"
# Wait 60 seconds before timing out.
connect-timeout = 60

Po vytvoření výše uvedeného souboru zkuste zadat požadavek s curl example.com . Zjistíte, že tyto možnosti se projevily.

Pokud chcete místo výchozího souboru použít vlastní konfigurační soubor, můžete použít -K možnost ukázat curl na váš konfigurační soubor. Například, pokud máte konfigurační soubor s názvem config.txt , pak jej můžete použít s:

curl -K config.txt example.com

Závěr

V tomto článku jsme probrali nejběžnější použití příkazu cURL. Tento článek samozřejmě jen poškrábe povrch a cURL umí spoustu dalších věcí. Můžete zadat man curl ve vašem terminálu nebo stačí navštívit tuto stránku a zobrazit manuálovou stránku se seznamem všech možností.


Cent OS
  1. Výukový program příkazu Linux Ping s příklady

  2. Příkaz Nohup s příklady

  3. vim výukový program s příklady příkazů

  1. Tmux Tutorial:Jak nainstalovat a používat s příklady příkazů

  2. Příkaz curl pro Linux vysvětlený s příklady

  3. wc Linux Command s příklady

  1. Bash HereDoc výukový program s příklady

  2. Curl Command v Linuxu s příklady

  3. Linux ip příkaz s příklady