Oba z nich curl
i wget
to wykorzystanie do pobierania plików, itd. Czy istnieje jakikolwiek powód, aby zastosować jeden nad drugim?
Oba z nich curl
i wget
to wykorzystanie do pobierania plików, itd. Czy istnieje jakikolwiek powód, aby zastosować jeden nad drugim?
Odpowiedzi:
Po zdefiniowaniu „prawidłowego użytkowania” użyj wget
.
Czemu? Dlatego:
Rekurencyjne! Główną mocną stroną wget w porównaniu do curl jest możliwość pobierania rekurencyjnego, a nawet po prostu pobierania wszystkiego, do czego odnosi się zdalny zasób, czy to strona HTML, czy lista katalogów FTP.
Bezwstydnie skopiowane stąd
curl
biblioteka . curl
jest zasilany przez libcurl
- wieloplatformową bibliotekę ze stabilnym API, z którego mogą korzystać wszyscy. Ta różnica jest znacząca, ponieważ tworzy zupełnie inne podejście do robienia rzeczy wewnętrznie. Tworzenie biblioteki jest nieco trudniejsze niż „zwykłe” narzędzie wiersza poleceń.
Rury . curl
działa bardziej jak tradycyjne cat
polecenie Uniksa , wysyła więcej rzeczy stdout
i odczytuje więcej stdin
w sposób „wszystko jest potokiem”. wget
jest bardziej jak cp
przy użyciu tego samego analogu.
Pojedynczy strzał . curl
jest zasadniczo stworzony do jednorazowego przesyłania danych. Przesyła tylko adresy URL określone przez użytkownika i nie zawiera żadnej rekurencyjnej logiki pobierania ani żadnego parsera HTML.
Więcej protokołów . curl
obsługuje FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMB / CIFS, SMTP, RTMP i RTSP. Wget obsługuje tylko HTTP, HTTPS i FTP.
Bardziej przenośny . curl
buduje i działa na wielu platformach niż wget
. Na przykład: OS / 400, TPF i inne bardziej „egzotyczne” platformy, które nie są prostymi klonami uniksowymi.
Więcej bibliotek SSL i obsługa SSL . curl
może być zbudowany z jedną z jedenastu (11!) różnych bibliotek SSL / TLS i oferuje większą kontrolę i szerszą obsługę szczegółów protokołu. curl
obsługuje przypinanie klucza publicznego.
HTTP auth . curl
obsługuje więcej metod uwierzytelniania HTTP, szczególnie przez proxy HTTP: Basic, Digest, NTLM i Negotiate
Skarpety . curl
obsługuje kilka wersji protokołu SOCKS dla dostępu do proxy
Dwukierunkowy . curl
oferuje możliwości wysyłania i wysyłania. wget
oferuje tylko zwykłą obsługę HTTP POST.
Przesyłanie danych wieloczęściowych / formularzy HTTP , które pozwala użytkownikom na „przesyłanie” HTTP i ogólnie emuluje przeglądarki oraz automatyzację HTTP w szerszym zakresie
curl
obsługuje gzip
i zawyża kodowanie treści oraz wykonuje automatyczną dekompresję
curl
oferuje i wykonuje dekompresję HTTP z kodowaniem transferu, wget nie
curl
obsługuje HTTP / 2 i wykonuje połączenia z dwoma stosami za pomocą Happy Eyeballs
Znacznie większa aktywność programistów . Chociaż można to omówić, rozważam tutaj trzy wskaźniki: aktywność listy mailingowej, częstotliwość zatwierdzania kodu źródłowego i częstotliwość wydawania. Każdy, kto śledzi te dwa projekty, może zobaczyć, że projekt curl ma o wiele wyższe tempo we wszystkich tych obszarach i tak jest od ponad 10 lat. Porównaj na OpenHub
wget
wget
jest tylko wierszem poleceń. Nie ma biblioteki.
Rekurencyjne ! wget
Główną mocną stroną w porównaniu do curl jest możliwość pobierania rekurencyjnego, a nawet po prostu pobierania wszystkiego, do czego odnosi się zdalny zasób, czy to strona HTML, czy lista katalogów FTP.
Starszy . wget
ma ślady z 1995 r., ale curl
można je prześledzić nie wcześniej niż pod koniec 1996 r.
GPL . wget
wynosi 100% GPL v3. curl jest na licencji MIT.
GNU . wget
jest częścią projektu GNU i wszystkie prawa autorskie są przypisane do FSF. Projekt curl jest całkowicie samodzielny i niezależny, bez organizacji rodzicielskiej, z prawie wszystkimi prawami autorskimi należącymi do Daniela.
wget
nie wymaga żadnych dodatkowych opcji, aby po prostu pobrać zdalny adres URL do pliku lokalnego, podczas gdy curl
wymaga -o
lub -O
.
wget
obsługuje publiczną listę sufiksów do obsługi domen plików cookie, curl nie.
wget
obsługuje tylko GnuTLS lub OpenSSL do obsługi SSL / TLS
wget
obsługuje tylko uwierzytelnianie podstawowe jako jedyny typ uwierzytelniania przez proxy HTTP
wget
nie obsługuje SOCKS
Jego zdolność do odzyskiwania po przedwcześnie zepsutym transferze i kontynuowaniu pobierania nie ma odpowiednika w zwijaniu.
wget
można wpisać tylko lewą ręką na klawiaturze qwerty!
curl -C -
nadal nie działa zepsute pobieranie?
wget can be typed in using only the left hand on a qwerty keyboard!
, WTF ?? wget requires no extra options to simply download a remote URL to a local file, while curl requires -o or -O.
Istnieje wiele narzędzi, które mogą pobrać jak curl
, snarf
, wget
, pavuk
, fget
, fetch
, lftp
, aria2
, HTTrack
itd. Użyj go w zależności od zapotrzebowania i które posiadają chcesz używać wraz z pobraniem. Sprawdź tabelę funkcji i użyj odpowiednio.
Loki:
Wget:
Ważne zasoby, aby uzyskać więcej informacji:
Oto dobre wyjaśnienie curl vs Wget .
Tabela funkcji: Porównaj funkcje cURL z innymi narzędziami do pobierania
Szczegółowo obsługiwane funkcje zwijania: Funkcje - co może zwijać
Szczegółowy opis funkcji obsługiwanych przez wget : funkcje wget
Mają wiele wspólnych funkcji, ale curl
ma więcej opcji. Na wget
to może czasami być wystarczające, aby kartkować man wget
, ale curl
muszę się uczyć tej strony internetowej w przeglądarce. Wierzę, że wszystko, co może zrobić Twoja przeglądarka, curl
może również.
Jest jeszcze jedna różnica między wget a curl, która moim zdaniem jest znacząca.
Wget to samodzielne narzędzie wiersza poleceń, przeznaczone przede wszystkim do szybkiego i prostego pobierania treści internetowych.
Z drugiej strony Curl jest w zasadzie terminalem dla potężnej biblioteki libcurl. Libcurl zapewnia bardzo potężny zestaw narzędzi do pracy z adresami URL we wszystkich ich formach i smakach, i jest dostępny dla prawie wszystkich języków i platform. Curl w zasadzie daje możliwość korzystania z tej biblioteki w skryptach powłoki.