cURL je nástroj pro práci s příkazovou řádkou, který slouží k získávání a odesílání dat pomocí URL adres.
Pro vývojáře nebo pracovníky technické podpory je znalost cURL klíčová při řešení problémů s webovými aplikacemi. Jedná se o multiplatformní nástroj, který je použitelný na operačních systémech Windows, macOS a Linux.
Následují nejčastěji používané syntaxe spolu s příklady, které vám usnadní orientaci:
Ověření dostupnosti URL adresy
V případě, že pracujete v prostředí Linux a potřebujete otestovat dostupnost externí URL adresy, je prvním krokem ověření, zda je adresa dostupná pomocí cURL.
Příkaz:
curl yoururl.com
V případě úspěšného připojení se nezobrazí žádný výstup. Pokud se však server nemůže připojit, objeví se chybová hláška, například „nemohl rozlišit hostitele“.
Ukázkový výstup chyby:
curl: (6) Could not resolve host: helloitdoesntexist.com; Unknown error
Uložení výstupu URL/URI do souboru
Pro uložení obsahu URL adresy nebo URI do souboru je možné využít následující syntaxi:
curl https://yoururl.com > yoururl.html
Příklad použití:
curl https://gf.dev > /tmp/gfhtml
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 18557 0 18557 0 0 72565 0 --:--:-- --:--:-- --:--:-- 72772
Výše uvedený příklad uloží celý obsah stránky gf.dev do souboru /tmp/gf.html.
Zobrazení hlaviček požadavku a odpovědi
Při řešení problémů s webovými aplikacemi je důležité zkontrolovat, zda se odesílají a přijímají správné hlavičky požadavku a odpovědi.
Příkaz:
curl -v yoururl.com
Ukázkový výstup:
* About to connect() to etechblog.cz.com port 443 (#0)
* Trying 104.25.134.107...
* Connected to etechblog.cz.com (104.25.134.107) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: CN=ssl371609.cloudflaressl.com,OU=PositiveSSL Multi-Domain,OU=Domain Control Validated
* start date: Nov 07 00:00:00 2019 GMT
* expire date: May 15 23:59:59 2020 GMT
* common name: ssl371609.cloudflaressl.com
* issuer: CN=COMODO ECC Domain Validation Secure Server CA 2,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: etechblog.cz.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sat, 09 Nov 2019 19:41:37 GMT
< Content-Type: text/html; charset=UTF-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Set-Cookie: __cfduid=d2ce6cd359ebc0b6eb5ff3a454ed042021573328497; expires=Sun, 08-Nov-20 19:41:37 GMT; path=/; domain=.etechblog.cz.com; HttpOnly; Secure
< Vary: Accept-Encoding
< Link: <https://etechblog.cz.com/wp-json/>; rel="https://api.w.org/"
< Link: <https://etechblog.cz.com/>; rel=shortlink
< X-SRCache-Fetch-Status: HIT
< X-SRCache-Store-Status: BYPASS
< X-Frame-Options: SAMEORIGIN
< X-Powered-By: EasyEngine v4.0.12
< Via: 1.1 google
< CF-Cache-Status: DYNAMIC
< Strict-Transport-Security: max-age=15552000; preload
< X-Content-Type-Options: nosniff
< Alt-Svc: h3-23=":443"; ma=86400
< Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
< Server: cloudflare
< CF-RAY: 533243e4bcd4bbf4-LHR
<
Stahování s omezenou rychlostí
Pro účely optimalizace nebo testování, jak dlouho trvá stahování při určité rychlosti, můžete použít následující příkaz:
curl --limit-rate 2000B
Příklad použití:
curl --limit-rate 2000B https://gf.dev
Připojení pomocí proxy serveru
Tato funkce je užitečná zejména v situacích, kdy pracujete v DMZ a potřebujete se připojit k externí síti pomocí proxy.
Příkaz:
curl --proxy yourproxy:port https://yoururl.com
cURL umožňuje vkládat hlavičky s daty, což je výhodné pro testování a odstraňování specifických problémů. Následuje příklad, jak poslat hlavičku Content-Type:
curl --header 'Content-Type: application/json' http://yoururl.com
Tímto způsobem je cURL instruován, aby v hlavičce požadavku odeslal Content-Type jako application/json.
Pro rychlou kontrolu hlavičky odpovědi můžete použít následující syntaxi:
curl --head http://yoururl.com
Ukázkový výstup:
HTTP/1.1 200 OK
Date: Sat, 09 Nov 2019 19:51:23 GMT
Content-Type: text/html
Connection: keep-alive
Set-Cookie: __cfduid=d3cb2c7b8e566ad99c870b0af12b0f1eb1573329083; expires=Sun, 08-Nov-20 19:51:23 GMT; path=/; domain=.chandan.io; HttpOnly
X-GUploader-UploadID: AEnB2Uo96JhvJmR2zYUL-Ndh2ta3UD_ykQAB5C7O8cjZQhCf-GxHQ0MsodSzRnl3guSN3ywAYNjtWcPXfwDXjLg3bQ-P5vQMOA
Expires: Sat, 09 Nov 2019 20:51:23 GMT
Cache-Control: public, max-age=3600
Last-Modified: Mon, 06 Aug 2018 10:45:47 GMT
x-goog-generation: 1533552347482034
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 24620
x-goog-hash: crc32c=DpDPAQ==
x-goog-hash: md5=cIP/3rusdUx12Zla1kf1yA==
x-goog-storage-class: MULTI_REGIONAL
Accept-Ranges: bytes
CF-Cache-Status: DYNAMIC
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 53325234dc2fbb9a-LHR
Připojení k HTTPS/SSL a ignorování chyb certifikátu
Pokud se pokoušíte o přístup k URL adrese zabezpečené pomocí SSL/TLS certifikátu a certifikát je neplatný nebo se neshoduje CN, zobrazí se následující chyba:
curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.
Naštěstí můžete cURL instruovat, aby ignoroval chybu certifikátu pomocí parametru --insecure
.
Příkaz:
curl --insecure https://yoururl.com
Připojení pomocí specifického protokolu (SSL/TLS)
Tato funkce je užitečná při testování, zda se konkrétní URL dokáže připojit pomocí určitého protokolu SSL/TLS.
Pro připojení pomocí SSL v3:
curl --sslv3 https://yoururl.com
Pro různé verze TLS:
curl --tlsv1 https://example.com
curl --tlsv1.0 https://example.com
curl --tlsv1.1 https://example.com
curl --tlsv1.2 https://example.com
curl --tlsv1.3 https://example.com
Stahování souborů z FTP serveru
Pomocí cURL je také možné stahovat soubory z FTP serveru, stačí zadat uživatelské jméno a heslo.
Příkaz:
curl -u user:password -O ftp://ftpurl/style.css
Pro detailnější výstup můžete vždy použít parametr -v
s libovolnou syntaxí.
Hlavička Host je užitečná pro testování cílové URL přes IP adresu v případě, že je obsah dostupný pouze při shodě hlavičky Host. Můžete ji také použít pro testování aplikace s load balancerem.
Příkaz:
curl --header 'Host: targetapplication.com' https://192.0.0.1:8080/
Možnost používat cURL online
Ano, je to možné díky následujícím nástrojům. cURL můžete spouštět i vzdáleně.
Online CURL – je jednoduchý nástroj pro načítání URL online s možností přidat volby:
--connect-timeout
--cookie
--data
--header
--head
--location
--max-time
--proxy
--request
--user
--url
--user-agent
Tvůrce příkazového řádku cURL – je nástroj, který vám pomůže vygenerovat příkaz curl. V uživatelsky přívětivém rozhraní zadáváte potřebné informace a ve spodní části se vygeneruje příkaz cURL.
cURL je užitečný nástroj pro řešení problémů s připojením v reálném čase a doufám, že vám výše uvedené informace pomohou. Pokud se chcete dozvědět více, doporučuji online kurz Základy příkazového řádku Linuxu.