Jaka jest różnica między curl i wget? [Zamknięte]

38

Oba z nich curli wgetto wykorzystanie do pobierania plików, itd. Czy istnieje jakikolwiek powód, aby zastosować jeden nad drugim?

podejrzeć
źródło
1
Zdefiniuj „prawidłowe użycie”
AB
12
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.


Bezwstydnie skopiowane stąd

curl

  • 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!

AB
źródło
1
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.

Loki:

  • Curl obsługuje więcej protokołów FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTMP i RTSP
  • Curl obsługuje więcej bibliotek SSL
  • Curl obsługuje więcej metod uwierzytelniania HTTP, szczególnie przez proxy HTTP: Basic, Digest, NTLM i Negotiate
  • Curl jest obsługiwany przez bibliotekę wieloplatformową libcurl ze stabilnym API, z którego może korzystać każdy

Wget:

  • Podczas gdy wget obsługuje HTTP, HTTPS i FTP
  • 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 jest tylko narzędziem wiersza poleceń, nie ma biblioteki.

Ważne zasoby, aby uzyskać więcej informacji:

pl_rock
źródło
„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ż.

Jos
źródło
2

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.

grill
źródło