Co to jest curl?
Autor: Redakcja Domeny.ForSale Opublikowano
W skrócie: curl to narzędzie wiersza poleceń służące do przesyłania danych między komputerem a serwerem. Pozwala między innymi pobrać plik, sprawdzić odpowiedź strony i wysłać dane do API, czyli interfejsu umożliwiającego komunikację między programami. Działa bez graficznej przeglądarki, dlatego przydaje się w diagnostyce i automatyzacji.
Do czego służy curl i czym różni się od przeglądarki?
curl uruchamiasz w terminalu: wpisujesz polecenie, adres oraz opcjonalne parametry określające sposób działania. Narzędzie obsługuje różne protokoły komunikacji, w tym HTTP i HTTPS, wykorzystywane przez strony internetowe. W praktyce często służy do sprawdzania usług WWW i pracy z API.
Przeglądarka pobiera stronę, interpretuje jej kod i wyświetla interfejs. curl domyślnie wypisuje otrzymane dane w terminalu — na przykład kod HTML albo odpowiedź JSON, czyli tekstowy format danych używany przez wiele API. Nie wykonuje JavaScriptu ani nie renderuje strony, więc nie zastępuje testu jej wyglądu i działania w przeglądarce.
Przykładowo: jeśli formularz na stronie nie działa, curl może pomóc sprawdzić, czy serwer przyjmuje żądanie i jak na nie odpowiada. Nie pokaże jednak, czy przycisk formularza jest prawidłowo podłączony do kodu JavaScript.
Z curl powiązana jest biblioteka libcurl, którą programiści mogą wykorzystać we własnych aplikacjach. Polecenie curl to gotowy program; libcurl to zestaw funkcji do budowania oprogramowania przesyłającego dane.
Jak sprawdzić dostępność narzędzia i wykonać pierwsze żądanie?
Otwórz terminal i wpisz:
curl --version
Jeżeli curl jest dostępny, zobaczysz numer wersji i informacje o obsługiwanych funkcjach. Jeśli system nie rozpoznaje polecenia, zainstaluj narzędzie przez menedżer pakietów swojego systemu lub zgodnie z oficjalną instrukcją projektu curl. Dostępność protokołów i opcji może zależeć od wersji oraz sposobu zbudowania programu.
W niektórych starszych środowiskach Windows PowerShell nazwa curl może wskazywać na inne polecenie. W takim przypadku użyj curl.exe, aby wywołać właściwy program.
Najprostsze żądanie wygląda tak:
curl https://example.com
Dla adresu HTTP lub HTTPS curl domyślnie wykonuje żądanie GET, czyli prośbę o pobranie zasobu. Odpowiedź wypisuje na standardowe wyjście, zazwyczaj do terminala. Adresy zawierające znaki specjalne, takie jak &, ujmuj w cudzysłowy, aby powłoka nie potraktowała ich jako elementów własnej składni.
Jak sprawdzić nagłówki i przekierowania?
Nagłówki HTTP to informacje towarzyszące żądaniu lub odpowiedzi, na przykład typ przesyłanej treści i instrukcje dotyczące pamięci podręcznej. Aby poprosić serwer o same nagłówki odpowiedzi, użyj:
curl -I https://example.com
Opcja -I wysyła żądanie HEAD. Nie każdy serwer obsługuje je tak samo jak GET. Jeśli chcesz zobaczyć nagłówki odpowiedzi na zwykłe pobranie strony razem z jej treścią, zastosuj -i.
curl domyślnie nie podąża za przekierowaniami HTTP. Opcja -L pozwala przejść pod adres wskazany przez serwer:
curl -i -L https://example.com
Kod 200 zwykle oznacza poprawną odpowiedź, 404 — brak zasobu, a 500 — błąd po stronie serwera. Sam kod nie dowodzi jednak, że strona działa prawidłowo: odpowiedź 200 może zawierać komunikat o problemie zamiast oczekiwanych danych.
Do dokładniejszej diagnostyki służy -v, które pokazuje między innymi szczegóły połączenia i wymieniane nagłówki. Przed udostępnieniem takiego zapisu usuń tokeny, ciasteczka i inne poufne informacje.
Jak pobrać plik i wysłać dane do API?
Aby zapisać odpowiedź w pliku zamiast wyświetlać ją w terminalu, użyj opcji -o:
curl -f -L -o dokument.pdf https://example.com/dokument.pdf
To przykład składni — wskazany plik nie musi istnieć. -o ustala lokalną nazwę pliku, -L obsługuje przekierowania, a -f powoduje zgłoszenie błędu przy odpowiedziach HTTP wskazujących na niepowodzenie, zasadniczo od kodu 400. Bez -f curl może zakończyć pracę pomyślnie mimo otrzymania strony błędu. Zapis do istniejącego pliku może nadpisać jego zawartość.
Wysyłanie danych do API może wyglądać tak:
curl -i https://api.example.com/items -H "Content-Type: application/json" --data '{"name":"test"}'
Opcja -H dodaje nagłówek, a --data przekazuje treść żądania i domyślnie wybiera metodę POST, często używaną do wysyłania danych. Ten przykład zakłada terminal zgodny ze składnią powłoki Bash; zasady cytowania w Windows mogą być inne. Rzeczywisty adres, wymagane pola i sposób uwierzytelniania sprawdź w dokumentacji konkretnego API.
Jak używać curl bezpiecznie?
curl może nie tylko odczytywać dane, lecz także wykonywać operacje zmieniające stan usługi. Przed uruchomieniem cudzego polecenia sprawdź adres docelowy, przesyłane dane i opcje. Wywołanie API może utworzyć rekord, usunąć zasób lub uruchomić płatną operację.
Nie stosuj rutynowo opcji -k lub --insecure: wyłącza ona weryfikację certyfikatu TLS, który pomaga potwierdzić tożsamość serwera. Błąd certyfikatu lepiej wyjaśnić niż ukryć. Nie uruchamiaj też pobranego skryptu bez sprawdzenia jego treści, zwłaszcza poleceniem łączącym curl bezpośrednio z powłoką.
Na początek wykonaj odczyt publicznego zasobu przez curl -i, obejrzyj kod odpowiedzi i nagłówki, a dopiero później przejdź do żądań wysyłających dane.
Zobacz też: Co to jest API?
