Co je to CURL?
CURL je nástroj pro přenos dat. Je také k dispozici jako knihovna pro vývojáře a jako CLI pro případy použití na bázi terminálu. Oba mají uvnitř stejný engine (pravdou je, že nástroj CLI je pouze program, který používá knihovnu pod kapotou).
CURL funguje se všemi protokoly, které jste mohli použít. Přejděte na tuto stránku a zkontrolujte, zda CURL funguje s vaším cílovým protokolem nebo ne.
Co CURL umí?
Hmm… Vše, co souvisí s přenosem dat. Každý musel používat prohlížeč. I nyní čtete tento článek prostřednictvím svého prohlížeče. Co prohlížeč udělá, vyžádá si stránku a dostane ji jako odpověď. Může zapisovat a číst soubory cookie. A pak to vykreslí (zobrazí obsah, obrázky a spouští JS skripty).
CURL může dělat vše, co prohlížeč, kromě vykreslování poslední části, protože to nesouvisí s přenosem dat.
Po dokončení může CURL stahovat HTML stránky, vyplňovat HTML formuláře a odesílat je, stahovat soubory z FTP/HTTP serveru a nahrávat soubory na stejný a číst/zapisovat cookies.
Díky tomu je vynikajícím nástrojem pro použití při skriptování, ladění a forenzní analýze atd.
Příklady příkazů Curl
Podívejme se, co můžete dělat s Curl.
1. Získejte odpověď ze serveru
Vše ze serveru je odpovědí na požadavek. Získání stránky HTML je tedy stejné jako stažení souboru.
Chcete-li získat odpověď HTML z http://info.cern.c,
curl http://info.cern.ch/
Chcete-li získat seznam příspěvků jako odpověď ze serveru ( https://jsonplaceholder.typicode.com/posts),
curl https://jsonplaceholder.typicode.com/posts
Protože víme, jak získat odpověď ze serveru, můžete si stáhnout soubor (řekněme logo Google).
curl https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
Výše uvedený příkaz vypíše binární obrazová data, která nemůžete zobrazit v terminálu. Musíte je uložit a poté je zobrazit pomocí prohlížeče fotografií.
Všimněte si, že různé příznaky voleb mohou být umístěny kdekoli v příkazu namísto striktního řazení. Takže se nemusíte bát, pokud jste umístili jakoukoli možnost na poslední, zatímco příklady měly příznak na začátku.
2. Uložte soubor s výchozím názvem souboru
Každý soubor poskytovaný na internetu má název souboru. Chcete-li použít stejný název souboru jako stažený název souboru, použijte parametr -O.
curl -O http://www.google.com/robots.txt
3. Uložte soubor s vlastním názvem
Chcete-li uložit název souboru s vlastním jménem, použijte parametr -o následovaný (přísně) vlastním názvem.
curl -O http://www.google.com/robots.txt googleRobots.txt
4. Stáhnout více souborů
Chcete-li stáhnout více souborů, oddělte je mezerou.
curl url1 url2 url3
Pokud chcete použít příznak -O pro všechny adresy URL, použijte
curl url1 url2 url3 -O -O -O
Stejné řešení by mělo být provedeno pro jakýkoli příznak. Je to proto, že první výskyt určitého příznaku je pro první adresu URL, druhý příznak je pro druhou adresu URL a tak dále.
5. Stáhněte si řadu souborů
curl má vestavěnou schopnost stahovat řadu souborů ze serveru. To lze ilustrovat na následujícím příkladu.
curl http://www.google.com/logo/logo[1-9].png
Příkaz výše stáhne soubory z logo1.png, logo2.png, logo3.png a až po logo9.png.
6. Stáhnout soubor, pouze pokud je nejnovější
Chcete-li stáhnout soubor pouze v případě, že čas úpravy souboru je pozdější než daný čas.
curl url -z "DD MMM YY MM:HH:SS"
7. Obnovit stahování
Pokud jste již částečně přenesli soubor, můžete přenos obnovit pomocí parametru -C. Offset, od kterého má přenos pokračovat, by měl být předán jako parametr do příznaku -C.
curl -C 1024 http://seeni.linuxhandbook.org/files/largeFile.mpv -O
8. Nahrajte soubor
Chcete-li nahrát soubor na server, musíte použít příznak -T následovaný cestou k souboru ve vašem místním systému.
curl -T uploadFile.txt http://upload.linuxhandbook.org/files
9. Smazat soubor
Chcete-li odstranit soubor s názvem deleteFile.txt na serveru, můžete použít příznak -X, který je určen pro jakékoli HTTP sloveso/metodu (jako GET, POST, PUT, DELETE, PATCH). Většina FTP serverů bude mít nakonfigurovanou metodu DELETE, pokud ne všechny pokročilé metody HTTP.
curl -X DELETE http://upload.linuxhandbook.org/files/deleteFile.txt
Můžete také upravit výše uvedený příkaz pro jakoukoli metodu HTTP, aby provedl odpovídající úlohu. Pokud například váš server umožňuje metodu TRUNCATE (jedná se o vymyšlenou HTTP metodu, nikoli standardní), která odstraní pouze obsah v souboru a nikoli soubor, lze použít příkaz podobný tomu níže.
curl -X TRUNCATE http://upload.linuxhandbook.org/files/mysql.dump
Výše uvedené jsou hlavní použití curl. Mohou se však vyskytnout potíže, se kterými je třeba bojovat, jako jsou přesměrování, ověřování uživatelů, certifikáty SSL atd., Můžeme je nazývat doplňky, protože jsou pouze volitelné, ale stále zůstávají pro určité účely klíčové. Podívejme se na některé z těchto doplňků a na to, jak s nimi zacházet s curl v další části.
10. Vyhněte se přesměrování
Když požádáte o http://www.google.com , bude vám poskytnuta pouze regionální stránka, jako je www.google.co.in. To se provádí pomocí přesměrování (HTTP pakety se stavovými kódy v rozsahu 300-399).
Přesměrování se můžete vyhnout pomocí možnosti L.
curl -L http://www.google.com
11. Autentizace
Když je server nakonfigurován tak, aby sloužil pouze určitým osobám s přihlašovacími údaji, bude jim poskytnuto uživatelské jméno a heslo. Přihlášení lze provést pomocí parametru -u.
curl -u username:password http://seeni.linuxhandbook.org/files/tasks.txt
12. Omezit přenos dat
Chcete-li zavést limit přenosu dat, použijte příznak –limit-rate. Následující příkaz se pokusí stáhnout soubor s rychlostním limitem 10K.
curl --limit-rate 10K http://seeni.linuxhandbook.org/files/logoDetails.tgz
13. Zobrazit/Skrýt stav přenosu
Pokud je odpověď přesměrována z terminálu, jako je stahování, nahrávání a pak curl automaticky zobrazí ukazatel stavu/průběhu přenosu.
Pokud nechcete vidět ukazatel průběhu, stačí k příkazu připojit parametr -s. U odpovědi určené pro terminál se pokrok nezobrazí.
14. Ignorujte certifikáty SSL
Pamatujete si situace, kdy je potřeba udělit výjimku bezpečnostnímu certifikátu, abyste mohli navštívit některé webové stránky? Pokud důvěřujete zdrojům a chcete provést přenos dat, můžete ignorovat ověření certifikátu SSL pomocí parametru -k.
curl -k https://notSoSecure.org/files/logoDetails.tgz
15. Získejte také informace o záhlaví
Chcete-li zobrazit informace záhlaví spolu s přenesenými daty, použijte parametr -i.
curl -i http://www.google.com/robots.txt
16. Získat pouze informace o záhlaví
Pokud chcete pouze záhlaví a ne data, použijte parametr -I
curl -I http://www.google.com/robots.txt
17. Změnit uživatelského agenta
Některé weby a servery neumožňují určitým druhům zařízení přístup k jejich systémům. Ale jak vědí, že používáme konkrétní druh zařízení? To je způsobeno polem záhlaví HTTP User-Agent. Tento User Agent můžeme změnit příznakem -A.
curl -A "Mozilla FireFox(42.0)" http://notAllowedForCLI.sites.org/randomFile.png
18. Odesílání dat na Server
Pokud server potřebuje nějaká data, jako je token nebo klíč API, použijte k odeslání dat příznak -d. Data, která je třeba odeslat, by měla následovat za příznakem v příkazu. Ke spojení více dat lze použít „&“. To se obvykle provádí pomocí požadavků GET a POST v prohlížečích. Toto je jeden ze způsobů, jak můžete odeslat informace z formuláře.
curl -d "token=34343abvfgh&name='seeni'" http://api.restful.org/getcontent
19. Zápis souborů cookie do souboru
Soubory cookie jsou malé informace, které umožňují udržovat relaci pomocí bezstavového protokolu HTTP. Pokud se chcete o souborech cookie dozvědět více, podívejte se na tento skvělý zdroj.
Pro zápis cookies do souboru by měl být použit parametr -c následovaný názvem souboru cookie.
curl -c googleCookie.txt http://www.google.com/files
20. Čtení souborů cookie ze souboru
Ke čtení cookie ze souboru lze použít parametr -b následovaný souborem cookie.
curl -b googleCookie.txt http://www.google.com/files
Všimněte si, že parametr -b pouze přečte cookie ze souboru. Pokud tedy server znovu odešle další cookie, možná budete muset k jejich zapsání použít volbu -c.
21. Zahájit novou relaci
Pokud chcete zahájit novou relaci zrušením souborů cookie, použijte příznak -j. Spustí novou relaci, i když jste poskytli soubor cookie ke čtení s parametrem -b.
curl -b googleCookie.txt http://www.google.com/files -j
Gratulujeme! Dotáhl jsi to až do konce. Pokud vám tento článek přijde užitečný, sdílejte ho se svými přáteli a sledujte nás na sociálních sítích. Pokud máte nějaké návrhy k tomuto článku nebo jinému tématu, neváhejte je uvést níže.