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.zip

Metody 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&param2=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/1

Nagłó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.com

Zaawansowane 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.zip

Czym 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.zip

PRO 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/login

Sprawdź 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.com

Webhook 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 webhooka

Pobierz 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.com

Podsumowanie: 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.