В чем разница между curl и wget?

258

Я хотел бы знать разницу между curlи wget. Оба используются для получения файлов и документов, но в чем ключевое различие между ними.

Почему есть две разные программы?

lakesh
источник
5
Основное отличие состоит в том, что wget используется для загрузки, а curl - для проверки связи с использованием определенного протокола.
Питикос,
2
От curlавтора: daniel.haxx.se/docs/curl-vs-wget.html
Ванни

Ответы:

265

Основными отличиями являются:

  • wgetСильной стороной по сравнению с curlего является возможность рекурсивной загрузки.
  • wgetтолько командная строка Там нет библиотеки или чего-то еще, но curlее функции поддерживаются libcurl.
  • curlподдерживает FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTMPи RTSP. wgetподдерживает HTTP, HTTPSи FTP.
  • curlстроит и работает на большем количестве платформ, чем wget.
  • wgetвыпускается под лицензией свободного программного обеспечения с авторским левом (GNU GPL). curlвыпущен под свободной разрешающей лицензией программного обеспечения (производная MIT).
  • curlпредлагает возможности загрузки и отправки. wgetпредлагает только простую поддержку HTTP POST.

Вы можете увидеть более подробную информацию по следующей ссылке:

керл против Wget

Саид Заринфам
источник
1
Спасибо, это именно то, о чем я думал несколько часов. Я использовал wget для создания рекурсивного паука на сайте, который, похоже, застрял на странице, на которой есть одиннадцать миллиардов ссылок. Реальность такова, что он работает на 100% CPU на одном ядре. Я надеялся, что есть что-то лучшее, что делает эту новомодную многоядерную вещь, о которой я слышал.
Брайан Топпинг
1
Одна из вещей wget, которая не учитывается в этом ответе, - это зеркальное отображение (или «паук») http. curlочень хорош в том, что он делает, но сам по себе он не предназначен для зеркалирования веб-сайта.
Jsbillings
Как насчет того, чтобы wput был псевдонимом, поддерживающим ftp.
Маккензм
1
Эти фразы не имеют смысла: «и все авторские права закреплены за FSF», «полностью автономны и независимы без родительских обязанностей». Очевидно, что автор cURL является владельцем авторских прав на него. Очевидно, что автор wget является владельцем авторских прав на него. Но оба свободны как в свободном программном обеспечении. Вместо этого вы можете сказать, что wget находится под лицензией с авторским левом, а cURL - с разрешающей лицензией.
Валерио Бозз
1
@ValerioBozz: На самом деле нет. И curl, и wget являются проектами сообщества. С помощью curl каждый человек обладает авторскими правами на код, который они предоставляют. С Wget, как и с большинством других программ GNU, различные авторы передают свои авторские права FSF. То есть им больше не принадлежит этот код. Это сделано для того, чтобы FSF строго соблюдал авторские права и повторно лицензировал код, если это необходимо.
Дарнир
57

В нескольких словах:

  • wget это инструмент для загрузки файлов с серверов
  • curl это инструмент, который позволяет вам обмениваться запросами / ответами с сервером

Wget

Wget позволяет вам скачивать файлы только с HTTP/ HTTPSили FTPсервера. Вы даете ему ссылку, и он автоматически загружает файл, на который указывает ссылка. Он строит запрос автоматически.

локон

Curl в отличие от wget позволяет строить запрос по вашему желанию . Это дает большую свободу пользователю и делает удивительный инструмент отладки. Добавьте к этому еще одно ключевое различие между ними: множество поддерживаемых протоколов. Curl опоры FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, Telnet, DICT, LDAP, LDAPS, IMAP, POP3, SMTP, RTSPи URI. Объедините эти два ключевых момента, и у вас есть замечательный инструмент для тестирования протоколов, настройки сервера и т. Д.

Как говорят многие, вы можете скачать файл с помощью curl. Это, однако, полезно только в том случае, если вы хотите загрузить файл с сервера, использующего протокол, который не поддерживается wget.

Pithikos
источник
2
На самом деле wgetтакже следует перенаправление, а затем сохраняет ответ в отличие curl. Оба могут достичь противоположности поведению по умолчанию wget -qO - http://google.co.uk/ илиcurl http://google.co.uk/ > index.html
Мэтт
1
@mtm curl http://google.co.uk/ > index.htmlне использует встроенную функциональность. В любом случае, главное отличие - это цель, для которой был создан каждый инструмент. Нельзя отрицать, что инструменты развиваются и много раз отклоняются от своей первоначальной траектории.
Питикос
1
@mtm curl http://google.co.uk -o index.htmlбудет использовать внутренние компоненты curl вместо перенаправления вывода оболочки с помощью >.
Петрус Репо
19

На самом деле основное отличие состоит в том, что curlвключает в себя библиотеку ( libcurl), и эта библиотека широко используется другими приложениями. wgetавтономный

sendmoreinfo
источник