Sieć to nie tylko przeglądarka. Sieć to terminal.
– Mądrość z konsoli
Czym jest curl? – Szwajcarski scyzoryk protokołów (i API)!
curl (Client URL) to prawdziwy kombajn do przesyłania danych przez sieć. Obsługuje taką masę protokołów (HTTP, HTTPS, FTP, SFTP, SMB, IMAP, POP3, SCP, TELNET i wiele, wiele innych), że staje się niezastąpiony przy niemal każdej interakcji z siecią. Jest szczególnie popularny wśród programistów i pentesterów do testowania API.
Podstawowe użycie: Po prostu pobierz!
# Pobierz zawartość strony (domyślnie wyświetli na standardowe wyjście)
curl https://example.com
# Zapisz pobraną zawartość do pliku o konkretnej nazwie (`-o` jak output)
curl -o plik.html https://example.com
# Zapisz pobrany plik, używając jego oryginalnej nazwy z URL-a (`-O` jak remote-name)
curl -O https://example.com/plik.zipMetody HTTP: Gadamy z serwerem jak równy z równym!
curl to mistrz w wysyłaniu różnych typów żądań HTTP.
# GET (domyślna metoda, pobierz dane)
curl https://api.example.com/data
# POST z danymi formularza (`-X POST` do określenia metody, `-d` do danych)
curl -X POST -d "param1=wartosc1¶m2=wartosc2" https://api.example.com/submit
# POST z danymi JSON (musisz ustawić odpowiedni nagłówek `Content-Type`)
curl -X POST -H "Content-Type: application/json" \
-d '{"key":"value", "array": ["item1", "item2"]}' https://api.example.com/submit
# PUT (zaktualizuj zasób)
curl -X PUT -d "nowe_dane_do_zasobu" https://api.example.com/resource/1
# DELETE (usuń zasób)
curl -X DELETE https://api.example.com/resource/1Nagłówki i ciasteczka: Bądź sprytny!
Możesz manipulować nagłówkami HTTP i ciasteczkami, co jest kluczowe w testowaniu bezpieczeństwa i API.
# Dodaj własny nagłówek HTTP (np. token autoryzacyjny `Bearer`)
curl -H "Authorization: Bearer twój_super_tajny_token" https://api.example.com
# Wiele nagłówków naraz (każdy `-H` to jeden nagłówek)
curl -H "Content-Type: application/json" \
-H "X-Custom-Header: moja_wartość" https://api.example.com
# Użyj ciasteczek z pliku lub podaj je ręcznie (`-b` jak cookie)
curl -b "session=abc123; user=ubikone" https://example.com
# Zapisz ciasteczka zwrócone przez serwer do pliku (`-c` jak cookie-jar)
curl -c cookies.txt https://example.com
# Użyj ciasteczek zapisanych wcześniej w pliku (`-b` działa też dla plików)
curl -b cookies.txt https://example.comZaawansowane opcje: curl ogarnia wszystko!
# Podążaj za przekierowaniami HTTP (`-L` jak location)
curl -L https://example.com/redirect
# Pokaż tylko nagłówki odpowiedzi (GET bez ciała, `-I` jak head)
curl -I https://example.com
# Pokaż szczegóły żądania i odpowiedzi (verbose, `-v`) – super do debugowania!
curl -v https://example.com
# Ignoruj weryfikację certyfikatów SSL (`-k` jak insecure) – używaj tylko do testów!
curl -k https://example.com
# Ogranicz prędkość pobierania (`--limit-rate`) – żeby nie zapchać łącza
curl --limit-rate 1M https://example.com/duży_plik.zipCzym jest wget? – Solidny pachołek do pobierania!
wget (Web Get) to prostsze narzędzie, skupiające się głównie na… pobieraniu plików. Jest za to bardzo solidny i świetnie radzi sobie z rekursywnym pobieraniem całych stron, kontynuowaniem przerwanych transferów i pracą w tle.
Podstawowe użycie: Po prostu pobierz ten plik!
# Pobierz plik (domyślnie zapisze go w bieżącym katalogu pod oryginalną nazwą)
wget https://example.com/plik.zip
# Zapisz plik pod konkretną nazwą (`-O` jak output-file)
wget -O moja_nazwa.zip https://example.com/plik.zip
# Pobierz w tle (`-b` jak background) – przydatne dla dużych plików
wget -b https://example.com/duży_plik.zip
# Rekurencyjnie pobierz całą stronę (ostrożnie, można pobrać cały internet!)
wget -r https://example.com
# Kontynuuj przerwane pobieranie (`-c` jak continue)
wget -c https://example.com/duży_plik.zipPRO TIP: curl jest królem do API, testowania HTTP, a wget – do masowego, niezawodnego pobierania plików. Znaj swoją broń!
Praktyczne przykłady: Od testów po automatyzację!
Test API: Czy to API w ogóle działa?
# GET z autoryzacją Bearer token (token przechowywany w zmiennej `$TOKEN`)
curl -H "Authorization: Bearer $TOKEN" \
https://api.github.com/user
# POST z danymi JSON do endpointu logowania
curl -X POST \
-H "Content-Type: application/json" \
-d '{"username":"user","password":"pass"}' \
https://example.com/api/loginSprawdź odpowiedź serwera: Ile to zajęło i czy się udało?
# Pokaż tylko kod statusu HTTP (np. 200, 404, 500)
curl -o /dev/null -s -w "%{http_code}\n" https://example.com
# Pokaż całkowity czas odpowiedzi serwera (w sekundach)
curl -o /dev/null -s -w "%{time_total}s\n" https://example.com
# Pokaż wszystkie nagłówki odpowiedzi (bez ciała)
curl -I https://example.comWebhook test: Czy mój system odbiera powiadomienia?
# Wyślij przykładowy ładunek JSON do webhooka
curl -X POST \
-H "Content-Type: application/json" \
-d '{"event":"test","data":"hello world z terminala!"}' \
https://webhook.site/xxx-xxx-xxx-xxx-xxx # Tutaj Twój URL webhookaPobierz z autoryzacją: Dostęp do chronionych zasobów!
# Autoryzacja Basic (nazwa użytkownika i hasło)
curl -u user:pass https://example.com/secret
# Autoryzacja Bearer token (token w nagłówku)
curl -H "Authorization: Bearer twój_token_tutaj" https://example.comPodsumowanie: Twoja brama do internetu (bez przeglądarki)!
curl i wget to Twoi niezbędni towarzysze w codziennej pracy z siecią. Jeden do finezyjnych zapytań API, drugi do solidnego pobierania. Razem – potężny duet!
Kluczowe punkty do zapamiętania:
- curl – to narzędzie wieloprotokołowe, idealne do API, wysyłania różnych metod HTTP, manipulacji nagłówkami i ciasteczkami.
- wget` – to prosty, ale niezawodny pobieracz plików, świetny do rekursywnego pobierania stron i kontynuowania przerwanych transferów.
- Naucz się, kiedy używać którego – to oszczędzi Ci czasu i nerwów.