cURL — co to jest, jak działa i praktyczne przykłady użycia krok po kroku

cURL to narzędzie wiersza poleceń do przesyłania danych przez HTTP, FTP, SMTP i dziesiątki innych protokołów. Pokazuję co to jest, jak go użyć, najczęstsze komendy i praktyczne przykłady — od pobierania stron po testowanie API.

cURL (Client URL) to narzędzie wiersza poleceń i biblioteka (libcurl), które pozwala wysyłać i odbierać dane przez internet z poziomu terminala. Obsługuje HTTP, HTTPS, FTP, SFTP, SMTP, POP3, IMAP i kilkanaście innych protokołów. W praktyce: cURL to przeglądarka internetowa bez interfejsu graficznego — wpisujesz komendę, dostajesz odpowiedź serwera w terminalu.

cURL jest zainstalowany domyślnie na Linux, macOS i Windows 10/11 — nie musisz nic instalować. Używają go: programiści (testowanie API), administratorzy (diagnostyka serwerów), specjaliści SEO (sprawdzanie nagłówków HTTP, przekierowań, statusów), DevOps (automatyzacja).

Podstawowa składnia

curl [opcje] URL

Najprostsze użycie: pobierz stronę i wyświetl HTML w terminalu:

curl https://example.com

Terminal wyświetli surowy HTML strony. Nie zobaczysz „strony” jak w przeglądarce — zobaczysz kod źródłowy, który przeglądarka normalnie renderuje na graficzną stronę.

10 najczęstszych komend cURL z przykładami

1. Pobierz stronę i zapisz do pliku

curl -o strona.html https://example.com

-o strona.html = zapisz odpowiedź do pliku strona.html zamiast wyświetlać w terminalu.

2. Pobierz plik (np. PDF, ZIP, obrazek)

curl -O https://example.com/dokument.pdf

-O (wielka litera) = zapisz plik z oryginalną nazwą z URL. Odpowiednik „kliknij prawym → Zapisz jako” w przeglądarce.

3. Sprawdź nagłówki HTTP (bez pobierania treści)

curl -I https://seomantyczny.pl

-I (HEAD request) zwraca tylko nagłówki — status HTTP (200, 301, 404), Content-Type, Server, Cache-Control, Last-Modified. Idealne do szybkiego sprawdzenia: „czy strona odpowiada?”, „jaki jest status?”, „czy jest przekierowanie?”.

Przykładowa odpowiedź:

HTTP/2 200
content-type: text/html; charset=UTF-8
server: LiteSpeed
x-powered-by: PHP/8.2.21
cache-control: max-age=3600

4. Śledź przekierowania

curl -L https://google.com

-L (follow redirects) = jeśli serwer zwraca 301/302, cURL automatycznie podąża za przekierowaniem do docelowego URL. Bez -L: cURL zatrzyma się na pierwszym 301 i pokaże pustą odpowiedź.

5. Sprawdź łańcuch przekierowań (SEO!)

curl -ILs https://twojadomena.pl | grep -i "HTTP\|location"

Pokazuje każdy krok przekierowania: HTTP status + Location header. Idealne do diagnozy łańcuchów 301 → 301 → 301 (przekierowania wielokrokowe, które spowalniają i osłabiają SEO).

6. Wyślij zapytanie POST (testowanie API)

curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d '{"name": "Jan", "email": "jan@example.com"}'

-X POST = metoda HTTP (domyślnie GET). -H = nagłówek. -d = dane (body).

7. Wyślij zapytanie z autoryzacją (Basic Auth)

curl -u "login:haslo" https://api.example.com/protected

-u = Basic Authentication (login:hasło zakodowane w Base64). Używane m.in. przez WordPress REST API z Application Passwords.

8. Wyślij zapytanie z tokenem Bearer (OAuth)

curl -H "Authorization: Bearer TWOJ_TOKEN" https://api.example.com/data

Standard dla nowoczesnych API (Twitter, GitHub, Stripe, OpenAI).

9. Sprawdź swój publiczny adres IP

curl ifconfig.me

Zwraca Twój publiczny adres IP — jednolinijkowa odpowiedź, idealna do skryptów.

10. Zmierz czas odpowiedzi serwera (TTFB)

curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" https://seomantyczny.pl

Wyświetla TTFB i czas całkowity — szybki sposób na sprawdzenie szybkości serwera bez przeglądarki.

cURL a wget — jaka różnica?

Cecha cURL wget
Protokoły HTTP, FTP, SMTP, POP3, IMAP + 20 innych HTTP, FTP
Najlepszy do Testowanie API, nagłówki, pojedyncze żądania Pobieranie plików, rekursywne ściąganie stron
Upload Tak (PUT, POST, multipart) Ograniczone
Rekursywne pobieranie Nie Tak (wget -r)
Domyślnie w systemie Linux, macOS, Windows 10+ Linux (macOS/Windows: ręczna instalacja)
Biblioteka (libcurl) Tak (PHP, Python, Ruby, Go…) Nie

Zasada: cURL do interakcji z API i diagnostyki. wget do pobierania plików i mirrorowania stron.

cURL w praktyce SEO

Sprawdzenie statusu HTTP wielu URL-i naraz

Masz listę 100 URL-i w pliku urls.txt i chcesz sprawdzić status każdego:

while read url; do echo "$url $(curl -o /dev/null -s -w '%{http_code}' $url)"; done < urls.txt

Wynik: lista URL-i ze statusami (200, 301, 404, 500). Szybszy niż Screaming Frog dla prostych checków.

Sprawdzenie, czy strona zwraca prawidłowy canonical

curl -s https://twojadomena.pl/artykul | grep -i "canonical"

Wyciąga tag <link rel="canonical"> z HTML — sprawdzasz, czy canonical wskazuje na prawidłowy URL.

Sprawdzenie nagłówków cache (CDN, LiteSpeed)

curl -I https://twojadomena.pl | grep -iE "cache|x-litespeed|cf-cache"

Pokazuje nagłówki związane z cache: czy CDN serwuje z cache (HIT/MISS), czy LiteSpeed Cache jest aktywny, jakie są nagłówki Cache-Control.

cURL w PHP — libcurl

PHP ma wbudowane rozszerzenie cURL (libcurl), które pozwala robić to samo co komenda terminala, ale z poziomu kodu PHP. WordPress używa go intensywnie (HTTP API, aktualizacje, REST API, integracje):

$ch = curl_init('https://api.example.com/data');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer TOKEN']);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

W WordPress: zamiast cURL bezpośrednio, użyj wp_remote_get() / wp_remote_post() — wrappery, które obsługują cURL, ale z obsługą błędów i kompatybilnością WP.

Najczęściej zadawane pytania

Czy cURL jest na moim komputerze?

Prawdopodobnie tak. Linux i macOS: wpisz curl --version w terminalu. Windows 10/11: wpisz curl --version w CMD lub PowerShell. Jeśli nie ma: Linux → sudo apt install curl. Windows starszy niż 10 → pobierz z curl.se/download.html.

Czy cURL jest bezpieczny?

cURL to narzędzie — jak nóż kuchenny, może być użyte dobrze i źle. Sam cURL jest bezpieczny (obsługuje TLS, weryfikację certyfikatów). Ale: nie wklejaj w terminal komend cURL z nieznanych źródeł — mogą wysyłać Twoje dane na serwer atakującego. I nie używaj -k (skip certificate verification) na produkcji.

Jak wyjść z cURL, który się zawiesił?

Ctrl + C — przerywa aktualną komendę. Jeżeli cURL czeka na odpowiedź, która nie przychodzi — dodaj timeout: curl --max-time 10 URL (max 10 sekund).

cURL vs Postman — co lepsze do testowania API?

cURL — szybsze, lżejsze, skryptowalne, działa w terminalu. Dla szybkich testów i automatyzacji. Postman — GUI, kolekcje żądań, historia, testy, współdzielenie z zespołem. Dla złożonych API z wieloma endpointami. Oba narzędzia się uzupełniają — Postman potrafi generować komendy cURL z dowolnego żądania (przycisk „Code” → cURL).

Podsumowanie

cURL to szwajcarski scyzoryk internetu — jedna komenda w terminalu pozwala: pobrać stronę, sprawdzić nagłówki HTTP, przetestować API, zmierzyć TTFB, śledzić przekierowania, pobrać plik, wysłać dane POST. Jest domyślnie zainstalowany na każdym nowoczesnym systemie i nie wymaga konfiguracji. Zapamiętaj 3 najczęstsze flagi: -I (nagłówki), -L (follow redirects), -o (zapisz do pliku) — i masz 80% potrzeb pokrytych.

Picture of Tomasz Zieliński
Tomasz Zieliński

Tomasz zajmuje się tematyką SEO, sztucznej inteligencji i automatyzacji pracy w marketingu internetowym. W swoich artykułach analizuje zmiany w algorytmach wyszukiwarek, rozwój narzędzi AI oraz nowe sposoby tworzenia i optymalizacji treści. Interesuje go przede wszystkim to, jak technologia wpływa na codzienną pracę specjalistów SEO, marketerów i twórców internetowych.

Facebook
Twitter
LinkedIn
Pinterest

Najnowsze Wpisy

Śledź nas