Używanie curl
i wget
do pobierania plików
1. Wprowadzenie do curl
Zdarzyło ci się kiedyś, że na rozmowie kwalifikacyjnej poprosili cię o pobranie pliku z internetu przez terminal, a ty patrzyłeś na ekran i zastanawiałeś się, jak to zrobić? Dzisiaj nauczymy się używać curl
i wget
, które staną się twoimi wiernymi towarzyszami w pracy z danymi sieciowymi.
Te narzędzia pozwalają na pobieranie stron internetowych, plików, wysyłanie zapytań HTTP, pracę z API, a nawet wykonywanie skryptów automatyzacji. Omówimy ich funkcjonalność, zalety i typowe scenariusze użycia.
curl
to narzędzie wiersza poleceń do przesyłania danych za pomocą protokołów sieciowych. Główna siła curl
leży w jego elastyczności: obsługuje ponad 20 protokołów (HTTP, HTTPS, FTP, SCP, a nawet SMTP). Według deweloperów, to doskonały "scyzoryk szwajcarski" do pracy z internetem.
Podstawowa składnia curl
curl [opcje] URL
Krótko mówiąc, wpisujesz polecenie curl
, podajesz odpowiedni adres — i cieszysz się wynikiem. Przyjrzyjmy się, jak to działa.
Pobieranie strony internetowej
Załóżmy, że chcesz pobrać główną stronę Google. Robi się to tak:
curl http://www.google.com
Na ekranie zobaczysz kod HTML strony. Całkiem przydatne, jeśli chcesz zbadać strukturę strony lub zautomatyzować coś z nią związanego.
Zapisywanie zawartości do pliku
Jeśli ten tekstowy strumień ci przeszkadza, możesz zapisać wynik do pliku:
curl -o google.html http://www.google.com
Flaga -o
(output) mówi curl
, że chcemy przekierować wynik do pliku. Teraz kod HTML strony został zapisany w google.html
. Chcesz się pośmiać? Daj plik znajomemu i powiedz, że pobrałeś "cały internet".
Pobieranie pliku
Wyobraź sobie, że musisz pobrać plik z internetu (na przykład jakiś .zip
). Z tym curl
radzi sobie znakomicie:
curl -O http://example.com/file.zip
W przeciwieństwie do -o
, flaga -O
zapisuje plik z oryginalną nazwą podaną w URL. To przydatne, jeśli pobierasz wiele plików z jednego źródła.
HTTP uwierzytelnianie
Czasami dostęp do pliku lub zasobu API jest chroniony loginem i hasłem. W takim przypadku użyj curl
z flagą -u
:
curl -u username:password http://example.com/private-data
Jest to szczególnie przydatne przy pracy z zamkniętymi API, na przykład GitHub lub Docker Registry.
Pobieranie przez API
Jedna z najfajniejszych możliwości curl
— praca z API. Załóżmy, że musisz wysłać żądanie na serwer, który zwraca dane w formacie JSON:
curl -X GET "https://api.exchangerate-api.com/v4/latest/USD"
Tutaj flaga -X
wskazuje metodę zapytania HTTP (GET, POST, DELETE, itd.). Do automatyzacji integracji z zewnętrznymi usługami to prawdziwy skarb.
2. Co to jest wget
?
Jeśli curl
to szwajcarski scyzoryk, to wget
to buldożer. Jego głównym zadaniem jest pobieranie plików. Główna różnica w porównaniu z curl
polega na tym, że wget
jest specjalnie zaprojektowany do niezawodnego pobierania dużych plików, jak również obsługuje wznawianie pobierania, co jest bardzo przydatne przy słabym połączeniu.
Podstawowa składnia wget
wget [opcji] URL
Proste pobieranie pliku
wget http://example.com/file.zip
To polecenie pobierze plik i zapisze go z oryginalną nazwą w bieżącym katalogu. Proste i skuteczne.
Zapisywanie pod inną nazwą
Jeśli oryginalna nazwa pliku ci nie odpowiada, możesz podać swoją:
wget -O newfile.zip http://example.com/file.zip
Wznawianie pobierania
Załóżmy, że pobierasz ogromny plik, ale połączenie zostaje przerwane. Bez obaw: po prostu użyj opcji -c
(continue):
wget -c http://example.com/largefile.iso
wget
wznowi pobieranie od miejsca, w którym zostało przerwane. Co więcej, to działa nawet po kilku dniach, jeśli serwer obsługuje taki tryb.
Pobieranie całej strony
Tak, za pomocą wget
można pobrać całą stronę (lub jej kopię). Po prostu użyj opcji --mirror
:
wget --mirror http://example.com
To polecenie pobierze stronę, zachowując strukturę katalogów. Teraz masz "lustro" strony do użycia w trybie offline.
3. Porównanie curl
i wget
Funkcja | curl | wget |
---|---|---|
Wsparcie szerokiej liczby protokołów | Tak | Tylko HTTP/HTTPS i FTP |
Automatyczne wznawianie pobierania | Nie (można skryptować) | Tak |
Praca z API | Tak | Nie |
Łatwość zarządzania plikami | Średnia | Doskonała |
Pobieranie całych stron | Nie | Tak |
W sumie, jeśli potrzebujesz pracy z API lub czegoś specyficznego, użyj curl
. Jeśli zaś potrzebujesz pobierać pliki — wget
będzie najlepszym wyborem.
4. Praktyczne zastosowanie
Pobieranie i przetwarzanie pliku
Łączymy wget
i nasze umiejętności pracy z tekstem:
wget -O data.txt http://example.com/data.txt
cat data.txt | grep "keyword" | awk '{print $2, $4}'
Tutaj pobraliśmy plik, przefiltrowaliśmy wiersze za pomocą słowa kluczowego i wyciągnęliśmy potrzebne kolumny.
Praca z API
Pobieramy kursy walut za pomocą curl
i znajdujemy potrzebną walutę:
curl -s "https://api.exchangerate-api.com/v4/latest/USD" | grep "EUR"
To przydatne, jeśli chcesz stworzyć zautomatyzowany system przeliczania walut.
Automatyzacja aktualizacji
Wyobraź sobie, że codziennie musisz pobierać aktualizacje plików. Oto przykład prostego skryptu:
#!/bin/bash
wget -O updates.zip http://example.com/daily-updates.zip
unzip -o updates.zip -d /path/to/updates
Zapisujemy skrypt i dodajemy go do cron
. Teraz będzie wykonywany automatycznie — fajne, prawda?
5. Typowe błędy i szczegóły
Błąd 403 (Forbidden):
To się zdarza, jeśli serwer wymaga dodatkowych nagłówków (np. User-Agent). Można to naprawić w ten sposób:
curl -A "Mozilla/5.0" http://example.com
Przekierowania:
Jeśli serwer przekierowuje cię na inny URL, dodaj flagę -L
do curl
:
curl -L http://example.com
Błędy SSL:
Czasami wget
lub curl
mogą narzekać na SSL. Możesz wyłączyć weryfikację certyfikatu (ale to nie jest bezpieczne!):
wget --no-check-certificate https://example.com
curl -k https://example.com
Z tym potężnym arsenałem jesteś gotowy podbijać internet w terminalu. Teraz żaden plik ani API nie ucieknie przed tobą — czas pobierać, przetwarzać i automatyzować!
GO TO FULL VERSION