Co to jest curl?

Autor: 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?

Przeczytaj także

Dowiedz się, jak PHP-FPM obsługuje żądania PHP, czym różni się od serwera WWW i jak dobrać ustawienia procesów do ruchu oraz zasobów hostingu.
Poznaj BIND, otwarte oprogramowanie serwera DNS: sprawdź, jak obsługuje domeny, czym różnią się jego role i kiedy warto samodzielnie go wdrożyć.
Poznaj najważniejsze Security Headers, ich rolę w ochronie strony oraz sposób sprawdzania i wdrażania nagłówków bez blokowania potrzebnych funkcji.