В чем разница между curl и wget? [закрыто]

38

Оба из них curlи wgetиспользуются для загрузки файлов и т. Д. Есть ли основания использовать один поверх другого?

шпионить
источник
1
Определите "правильное использование"
AB
12
Относительно того, чтобы голосование было закрыто как основанное на мнении: как вопрос о разнице между двумя инструментами стимулирует основанные на мнении ответы?
Майкл Мартин-Смукер
1
@ MichaelMartin-Smucker "Предположим, мне нужно загрузить веб-страницу, скажем, www.google.com. Стоит ли искать wget или curl?" что это, если не основано на мнении?
Муру
2
@muru, это зависит от того, что вы подразумеваете под «скачать веб-страницу». Если вы хотите отправить запрос http и получить обратно результаты, curl идеально подходит. Если вы имеете в виду загрузку страницы, других страниц, на которые она ссылается, и связанных ресурсов, curl не будет работать, и wget - единственный вариант. Между ними существуют фактические различия, которые делают это не основанным на мнении.
барбекю
3
@muru Полагаю, у нас просто разные интерпретации настроения, стоящего за вопросом. В моей интерпретации, чувство таково: «Я слышал об этих двух инструментах, которые, кажется, делают одно и то же. В чем разница между ними, и когда я должен выбрать один из других? Как насчет этого конкретного случая?» ... что кажется мне разумным вопросом.
Майкл Мартин-Смукер

Ответы:

33

После того как вы определили «правильное использование», используйте wget.

Зачем? Поэтому:

Рекурсивный! Основная сильная сторона wget по сравнению с curl - это возможность рекурсивной загрузки или даже просто загрузка всего, на что есть ссылки, с удаленного ресурса, будь то страница HTML или список каталогов FTP.


Бесстыдное скопировано отсюда

curl

  • библиотека . curlработает на libcurlкроссплатформенной библиотеке со стабильным API, который может использовать каждый и все. Эта разница является существенной, поскольку она создает совершенно другое отношение к внутренним действиям. Также немного сложнее создать библиотеку, чем «простой» инструмент командной строки.

  • трубы . curlработает больше как традиционная catкоманда Unix , она отправляет больше информации stdoutи читает больше stdinв стиле «все - труба». wgetбольше похоже cp, используя тот же аналог.

  • Единственный выстрел . curlв основном сделан, чтобы сделать единовременные передачи данных. Он передает только URL-адреса, указанные пользователем, и не содержит никакой рекурсивной логики загрузки или какого-либо синтаксического анализатора HTML.

  • Больше протоколов . curlподдерживает FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMB / CIFS, SMTP, RTMP и RTSP. Wget поддерживает только HTTP, HTTPS и FTP.

  • Более портативный . curlстроит и работает на большем количестве платформ, чем wget. Например: OS / 400, TPF и другие более «экзотические» платформы, которые не являются прямыми клонами Unix.

  • Больше библиотек SSL и поддержка SSL . curlможет быть построен с одной из одиннадцати (11!) различных библиотек SSL / TLS, и он предлагает больше контроля и более широкую поддержку для деталей протокола. curlподдерживает закрепление открытого ключа.

  • HTTP аутентификации . curlподдерживает больше методов HTTP-аутентификации, особенно через HTTP-прокси: Basic, Digest, NTLM и Negotiate

  • НОСКИ . curlподдерживает несколько версий протокола SOCKS для доступа к прокси

  • Двунаправленный . curlпредлагает возможности загрузки и отправки. wgetпредлагает только простую поддержку HTTP POST.

  • HTTP multipart / form-data send , которая позволяет пользователям выполнять HTTP-загрузку и в целом эмулировать браузеры и в большей степени автоматизировать HTTP

  • curlподдерживает gzipи раздувает Content-Encoding и выполняет автоматическую распаковку

  • curl предлагает и выполняет распаковку HTTP с кодировкой передачи, wget - нет

  • curl поддерживает HTTP / 2 и поддерживает двойное соединение при помощи Happy Eyeballs

  • Гораздо больше активности разработчиков . Хотя это можно обсудить, я рассмотрю три показателя: активность в списке рассылки, частота принятия исходного кода и частота выпуска. Любой, кто следит за этими двумя проектами, может увидеть, что у curl-проекта намного более высокие темпы во всех этих областях, и так было уже более 10 лет. Сравните на openhub


wget

  • wgetтолько командная строка Там нет библиотеки.

  • Рекурсивно ! wgetГлавная сильная сторона по сравнению с curl - это возможность рекурсивной загрузки или даже просто загрузка всего, на что ссылаются, с удаленного ресурса, будь то страница HTML или список каталогов FTP.

  • Пожилой . wgetвосходит к 1995 году, а curlпрослеживается не раньше конца 1996 года.

  • GPL . wget100% GPL v3. curl является лицензированным MIT.

  • GNU . wgetявляется частью проекта GNU, и все авторские права принадлежат FSF. Проект curl является полностью автономным и независимым, без родительского контроля со стороны организации, почти со всеми авторскими правами, принадлежащими Дэниелу.

  • wgetне требует никаких дополнительных опций для простой загрузки удаленного URL в локальный файл, в то время как curlтребуется -oили -O.

  • wget поддерживает общедоступный список суффиксов для обработки доменов cookie, curl - нет.

  • wget поддерживает только GnuTLS или OpenSSL для поддержки SSL / TLS

  • wget поддерживает только базовую аутентификацию как единственный тип аутентификации через HTTP-прокси

  • wget не поддерживает SOCKS

  • Его способность восстанавливаться после преждевременно прерванной передачи и продолжать загрузку не имеет аналога в curl.

  • wget можно набрать, используя только левую руку на QWERTY-клавиатуре!

AB
источник
1
Да, wget отлично подходит для зеркалирования!
Joeytwiddle
1
«Проект curl является полностью автономным и независимым, и в нем нет организаций-воспитателей, и почти все авторские права принадлежат Дэниелу» Не уверен, что это плохо ...
барбекю
«Его способность восстанавливаться после преждевременно прерванной передачи и продолжать загрузку не имеет аналогов в скручивании». Я правильно понял это предложение? Не curl -C -продолжается ли прерванная загрузка?
Сиюань Рен
1
Почему вы рекомендуете wget ? Даже после просмотра сравнений, которые вы написали сами, звучание завитков намного лучше. 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.
Анмол Сингх Джагги
2
Размер также имеет значение: на свежем образе Ubuntu размер wget равен 2M, а curl 5M упакован (с deps, х3 всего распаковано)
Eran W
19

Есть много инструментов , которые можно скачать , как curl, snarf, wget, pavuk, fget, fetch, lftp, aria2, и HTTrackт.д. Используйте его в соответствии с вашими требованиями и которые показывают вы хотите использовать вместе с загрузкой. Проверьте таблицу функций и используйте соответственно.

Завиток:

  • Curl поддерживает больше протоколов FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTMP и RTSP
  • Curl поддерживает больше библиотек SSL
  • Curl поддерживает больше методов HTTP-аутентификации, особенно через HTTP-прокси: Basic, Digest, NTLM и Negotiate
  • Curl основан на кроссплатформенной библиотеке libcurl-со стабильным API, который может использовать каждый

Wget:

  • В то время как wget поддерживает HTTP, HTTPS и FTP
  • Wget поддерживает только GnuTLS или OpenSSL для поддержки SSL / TLS
  • Wget поддерживает только базовую аутентификацию как единственный тип аутентификации через HTTP-прокси
  • Wget - только инструмент командной строки, у него нет библиотеки.

Важные ресурсы для получения дополнительной информации:

pl_rock
источник
msgstr "wget ​​- инструмент командной строки, только он знает библиотеку." Я не понимаю эту линию.
Лусио
3

У них много общего по функциональности, но curlесть больше возможностей. Для wgetэтого иногда может быть достаточно пролистать man wget, но curlмне нужно изучить эту веб-страницу в браузере. Я верю, что все, что может сделать ваш браузер, может сделать то curlже самое.

Jos
источник
2

Есть еще одно различие между wget и curl, которое я считаю существенным.

Wget - это отдельная утилита командной строки, предназначенная главным образом для быстрого и простого извлечения интернет-контента.

Curl, с другой стороны, в основном является терминальным интерфейсом для мощной библиотеки libcurl. Libcurl предоставляет очень мощный набор инструментов для работы с URL-адресами во всех их формах и вариантах и ​​доступен практически для всех языков и платформ. Curl в основном дает вам возможность использовать эту библиотеку в сценариях оболочки.

барбекю
источник