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).
Spis treści
TogglePodstawowa 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.

