Jeśli chodzi o głosowanie zakończone jako oparte na opiniach: w jaki sposób pytanie o różnicę między dwoma narzędziami zachęca do odpowiedzi opartych na opiniach?
Michael Martin-Smucker,
1
@ MichaelMartin-Smucker „Załóżmy, że muszę pobrać stronę internetową, powiedzmy www.google.com, czy powinienem szukać wget czy curl?” co to jest, jeśli nie jest oparte na opiniach?
muru
2
@muru, To zależy od tego, co rozumiesz przez „pobierz stronę internetową”. Jeśli masz na myśli wysłanie żądania HTTP i otrzymanie z powrotem wyników, curl jest idealny. Jeśli masz na myśli pobranie strony, innych stron, do których prowadzi łącze, oraz powiązanych zasobów, curl nie będzie działał, a wget jest jedyną opcją. Istnieją między nimi różnice faktyczne, które sprawiają, że ta opinia nie jest oparta na opiniach.
grill
3
@muru Wydaje mi się, że za tym pytaniem mamy różne interpretacje opinii. W mojej interpretacji sentyment brzmi: „Słyszałem o tych dwóch narzędziach, które wydają się robić to samo. Jaka jest różnica między nimi i kiedy powinienem wybrać jedno z nich? Co z tym konkretnym przypadkiem?” ... co wydaje mi się rozsądnym pytaniem.
Michael Martin-Smucker
Odpowiedzi:
33
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.
biblioteka . curljest 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 . curldziała bardziej jak tradycyjne catpolecenie Uniksa , wysyła więcej rzeczy stdouti odczytuje więcej stdinw sposób „wszystko jest potokiem”. wgetjest bardziej jak cpprzy użyciu tego samego analogu.
Pojedynczy strzał . curljest 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 . curlobsł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 . curlbuduje 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 . curlmoż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. curlobsługuje przypinanie klucza publicznego.
HTTP auth . curlobsługuje więcej metod uwierzytelniania HTTP, szczególnie przez proxy HTTP: Basic, Digest, NTLM i Negotiate
Skarpety . curlobsługuje kilka wersji protokołu SOCKS dla dostępu do proxy
Dwukierunkowy . curloferuje możliwości wysyłania i wysyłania. wgetoferuje 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
curlobsługuje gzipi 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
wgetjest tylko wierszem poleceń. Nie ma biblioteki.
Rekurencyjne ! wgetGłó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 . wgetma ślady z 1995 r., ale curlmożna je prześledzić nie wcześniej niż pod koniec 1996 r.
GPL . wgetwynosi 100% GPL v3. curl jest na licencji MIT.
GNU . wgetjest 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.
wgetnie wymaga żadnych dodatkowych opcji, aby po prostu pobrać zdalny adres URL do pliku lokalnego, podczas gdy curlwymaga -olub -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!
Tak, wget jest świetny do tworzenia kopii lustrzanych!
joeytwiddle
1
„Projekt curl jest całkowicie samodzielny i niezależny, bez organizacji rodzicielskiej, a prawie wszystkie prawa autorskie należą do Daniela”. Nie jestem pewien, czy to zła rzecz ...
grill
„Jego zdolność do odzyskiwania po przedwcześnie zepsutym transferze i kontynuowaniu pobierania nie ma odpowiednika w zwijaniu”. Czy źle zrozumiałem to zdanie? Czy curl -C -nadal nie działa zepsute pobieranie?
Siyuan Ren,
1
Dlaczego polecasz Wget ? Nawet po spojrzeniu na porównania, które sam napisałeś, curl wydaje się być o wiele lepszy. 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.
Anmol Singh Jaggi
2
Rozmiar też ma znaczenie: na świeżym obrazie ubuntu rozmiar wgeta to 2M vs. zwijanie 5M zapakowane (z deps, x3 rozpakowane)
Eran W
19
Istnieje wiele narzędzi, które mogą pobrać jak curl, snarf, wget, pavuk, fget, fetch, lftp, aria2, HTTrackitd. 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.
„wget jest narzędziem wiersza poleceń, tylko posiada bibliotekę”. Nie rozumiem tej linii.
Lucio,
3
Mają wiele wspólnych funkcji, ale curlma więcej opcji. Na wgetto może czasami być wystarczające, aby kartkować man wget, ale curlmuszę się uczyć tej strony internetowej w przeglądarce. Wierzę, że wszystko, co może zrobić Twoja przeglądarka, curlmoż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.
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 przezlibcurl
- 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 tradycyjnecat
polecenie Uniksa , wysyła więcej rzeczystdout
i odczytuje więcejstdin
w sposób „wszystko jest potokiem”.wget
jest bardziej jakcp
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 NegotiateSkarpety .
curl
obsługuje kilka wersji protokołu SOCKS dla dostępu do proxyDwukierunkowy .
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ługujegzip
i zawyża kodowanie treści oraz wykonuje automatyczną dekompresjęcurl
oferuje i wykonuje dekompresję HTTP z kodowaniem transferu, wget niecurl
obsługuje HTTP / 2 i wykonuje połączenia z dwoma stosami za pomocą Happy EyeballsZnacznie 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., alecurl
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 gdycurl
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 / TLSwget
obsługuje tylko uwierzytelnianie podstawowe jako jedyny typ uwierzytelniania przez proxy HTTPwget
nie obsługuje SOCKSJego 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!źródło
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
źródło
Mają wiele wspólnych funkcji, ale
curl
ma więcej opcji. Nawget
to może czasami być wystarczające, aby kartkowaćman wget
, alecurl
muszę się uczyć tej strony internetowej w przeglądarce. Wierzę, że wszystko, co może zrobić Twoja przeglądarka,curl
może również.źródło
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.
źródło